From 313c003b79f0de231a9cedcd35fe30e39bb725e9 Mon Sep 17 00:00:00 2001 From: cage Date: Sat, 22 Jul 2023 11:38:47 +0200 Subject: [PATCH] - [GUI] prevented an infinite loop when cancelling a request with user input. --- src/gui/client/main-window.lisp | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/gui/client/main-window.lisp b/src/gui/client/main-window.lisp index b24c64c..3bdf07e 100644 --- a/src/gui/client/main-window.lisp +++ b/src/gui/client/main-window.lisp @@ -368,10 +368,15 @@ (declare (ignore original-iri cached)) (cond ((gemini-client:header-input-p status-code) - (let ((actual-iri (get-user-request-query iri meta main-window))) + (a:when-let ((actual-iri (get-user-request-query iri + meta + main-window))) (slurp-iri main-window actual-iri))) ((gemini-client:header-sensitive-input-p status-code) - (let ((actual-iri (get-user-request-query iri meta main-window :sensitive t))) + (a:when-let ((actual-iri (get-user-request-query iri + meta + main-window + :sensitive t))) (slurp-iri main-window actual-iri))) ((= status-code comm:+tofu-error-status-code+) (when (gui:ask-yesno meta @@ -901,13 +906,14 @@ local file paths." prompt :button-message button-label)) (encoded-input (maybe-percent-encode raw-input))) - (multiple-value-bind (actual-iri host path query port fragment) - (gemini-client:displace-iri parsed-iri) - (declare (ignore actual-iri query fragment)) - (gemini-parser:make-gemini-iri host - path - :query encoded-input - :port port)))) + (when (string-not-empty-p raw-input) + (multiple-value-bind (actual-iri host path query port fragment) + (gemini-client:displace-iri parsed-iri) + (declare (ignore actual-iri query fragment)) + (gemini-parser:make-gemini-iri host + path + :query encoded-input + :port port))))) (defun slurp-text-data (main-window iri) (labels ((maybe-open-if-completed (stream-info support-file) @@ -977,10 +983,10 @@ local file paths." (declare (ignore original-iri cached)) (cond ((gemini-client:header-input-p status-code) - (let ((actual-iri (get-user-request-query iri meta main-window))) + (a:when-let ((actual-iri (get-user-request-query iri meta main-window))) (start-stream-iri actual-iri main-window nil))) ((gemini-client:header-sensitive-input-p status-code) - (let ((actual-iri (get-user-request-query iri meta main-window :sensitive t))) + (a:when-let ((actual-iri (get-user-request-query iri meta main-window :sensitive t))) (start-stream-iri actual-iri main-window nil))) ((= status-code comm:+tofu-error-status-code+) (when (gui:ask-yesno (_ "The certificate for this address has changed, replace the old with the one I just received?")