Fix crash on SSL Error #9

Merged
jmcbray merged 1 commit from tobias/germinal:master into master 2020-06-08 10:25:57 -04:00

View file

@ -169,22 +169,24 @@
(defun gemini-handler (stream) (defun gemini-handler (stream)
"The main Gemini request handler. Sets up TLS and sets up request and response" "The main Gemini request handler. Sets up TLS and sets up request and response"
(let* ((cl+ssl::*ssl-global-context* (handler-case
(make-context :disabled-protocols (list +ssl-op-no-sslv2+ +ssl-op-no-sslv3+ (let* ((cl+ssl::*ssl-global-context*
+ssl-op-no-tlsv1+ +ssl-op-no-tlsv1-1+ (make-context :disabled-protocols (list +ssl-op-no-sslv2+ +ssl-op-no-sslv3+
+ssl-op-no-tlsv1-2+))) +ssl-op-no-tlsv1+ +ssl-op-no-tlsv1-1+
(tls-stream +ssl-op-no-tlsv1-2+)))
(make-ssl-server-stream stream (tls-stream
:certificate *germinal-cert* (make-ssl-server-stream stream
:key *germinal-cert-key*)) :certificate *germinal-cert*
(request (read-line-crlf tls-stream)) :key *germinal-cert-key*))
(response (gemini-serve-file-or-directory request))) (request (read-line-crlf tls-stream))
(write-sequence (response (gemini-serve-file-or-directory request)))
(babel:string-to-octets (str:concat (nth 0 response) '(#\return #\newline))) (write-sequence
tls-stream) (babel:string-to-octets (str:concat (nth 0 response) '(#\return #\newline)))
(force-output tls-stream) tls-stream)
(write-sequence (nth 1 response) tls-stream) (force-output tls-stream)
(force-output tls-stream))) (write-sequence (nth 1 response) tls-stream)
(force-output tls-stream))
(error (c) (format *error-output* "gemini-handler error: ~A~%" c))))
(defun gemini-serve-file-or-directory (request) (defun gemini-serve-file-or-directory (request)
"Given a gemini request (string), try to respond by serving a file or directory listing." "Given a gemini request (string), try to respond by serving a file or directory listing."