Guard against empty responses from servers - holymoly - A tor enabled gopher client written in CHICKEN scheme
(HTM) git clone git://vernunftzentrum.de/holymoly.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 02329f003f6d70906f71cf8a0c07155c6642551a
(DIR) parent 6ce1e49ab2c1d57d67c93165ce029de812267e3e
(HTM) Author: Christian Kellermann <ckeen@pestilenz.org>
Date: Wed, 15 Aug 2018 09:36:48 +0200
Guard against empty responses from servers
Diffstat:
holymoly.scm | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
---
(DIR) diff --git a/holymoly.scm b/holymoly.scm
@@ -176,11 +176,15 @@
(display (string-append resource (string #\return #\linefeed)) o)
(let ((response (if until-eof?
(read-u8vector #f i)
- (read-lines i))))
+ (read-lines i)))
+ (empty-response
+ (if until-eof?
+ #u8()
+ '("iGot an empty response from server\tfoo\tserver\t70\r\n"))))
(close-input-port i)
(close-output-port o)
- (cond ((null? response)
- '("iGot an empty response from server\tfoo\tserver\t70\r\n"))
+ (cond ((or (eof-object? response) (null? response))
+ empty-response)
(until-eof? response)
((pair? response) (butlast response))
(else (error "Unknown return type of response")))))
@@ -244,13 +248,14 @@
(sprintf " > ~a" (entry-title e)))))
(define (xdg-open r)
- (if (string? r)
- (process "xdg-open" (list (string-join (cdr (string-split r ":")) ":")))
- (let-values (((fd temp-path) (file-mkstemp "/tmp/mytemporary.XXXXXX")))
- (let ((temp-port (open-output-file* fd)))
- (write-u8vector r temp-port)
- (close-output-port temp-port))
- (process "xdg-open" (list temp-path))))
+ (cond ((string? r)
+ (process "xdg-open" (list (string-join (cdr (string-split r ":")) ":"))))
+ ((and (u8vector? r) (not (zero? (u8vector-length r))))
+ (let-values (((fd temp-path) (file-mkstemp "/tmp/holymoly.XXXXXX")))
+ (let ((temp-port (open-output-file* fd)))
+ (write-u8vector r temp-port)
+ (close-output-port temp-port))
+ (process "xdg-open" (list temp-path)))))
(previous-page))
(define history '())