From c8b7be22cccd49988e03fb8f7eb5a5cb6631045d Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Mon, 21 Nov 2016 17:38:55 +1300 Subject: [PATCH] Use SSL on outbound HTTPS connections properly --- racket/syndicate/drivers/web.rkt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/racket/syndicate/drivers/web.rkt b/racket/syndicate/drivers/web.rkt index d8f2c04..03f581e 100644 --- a/racket/syndicate/drivers/web.rkt +++ b/racket/syndicate/drivers/web.rkt @@ -427,17 +427,20 @@ headers query) req) - (values host + (values (match scheme + [(or "wss" "https") #t] + [_ #f]) + host (or port (match scheme - ["http" 80] - ["https" 443] + [(or "ws" "http") 80] + [(or "wss" "https") 443] [_ #f])) method (url->string (resource->url resource #:query query)) headers)) (define (do-request-websocket id req) - (define-values (_host server-port method urlstr headers) (analyze-outbound-request req)) + (define-values (_ssl? _host server-port method urlstr headers) (analyze-outbound-request req)) (define control-ch (make-channel)) (if (not server-port) (send-ground-message (web-raw-client-conn id #f)) @@ -463,7 +466,7 @@ (assert (web-response-websocket id #f))))))) (define (do-request-complete id req body) - (define-values (host server-port method urlstr headers) (analyze-outbound-request req)) + (define-values (ssl? host server-port method urlstr headers) (analyze-outbound-request req)) (thread (lambda () (define response @@ -473,6 +476,7 @@ (define-values (first-line header-lines body-port) (http-sendrecv host urlstr + #:ssl? ssl? #:headers (build-http-client-headers headers) #:port server-port #:method (string-upcase (symbol->string method))