Fix crash on SSL Error #9
1 changed files with 18 additions and 16 deletions
Fix crash on SSL Error
commit
1c36bd5ebc
34
server.lisp
34
server.lisp
|
|
@ -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."
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue