From 85459e5fef38ccff76ce6e8dfcd477dc33f9db8a Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 27 Nov 2019 08:48:05 -0700 Subject: [PATCH] openssl: repairs related to listen on port number 0 Allow 0 as the port number in `ssl-listen`, and fix `ssl-addresses` to work on a listener. Update a test to use these features so that it won't conflict with other tests that listen on TCP addresses. --- pkgs/racket-doc/openssl/openssl.scrbl | 2 +- pkgs/racket-test/tests/openssl/peer-verif.rkt | 9 +++++++-- racket/collects/openssl/mzssl.rkt | 5 +++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/pkgs/racket-doc/openssl/openssl.scrbl b/pkgs/racket-doc/openssl/openssl.scrbl index db2ee94499..9e496b60c8 100644 --- a/pkgs/racket-doc/openssl/openssl.scrbl +++ b/pkgs/racket-doc/openssl/openssl.scrbl @@ -265,7 +265,7 @@ current platform for client connections. @section{TCP-like Server Procedures} @defproc[(ssl-listen - [port-no (integer-in 1 65535)] + [port-no listen-port-number?] [queue-k exact-nonnegative-integer? 5] [reuse? any/c #f] [hostname-or-#f (or/c string? #f) #f] diff --git a/pkgs/racket-test/tests/openssl/peer-verif.rkt b/pkgs/racket-test/tests/openssl/peer-verif.rkt index 407d108e38..9557941e5c 100644 --- a/pkgs/racket-test/tests/openssl/peer-verif.rkt +++ b/pkgs/racket-test/tests/openssl/peer-verif.rkt @@ -30,12 +30,17 @@ ssl-server-context #t)) - (define ssl-listener (ssl-listen 55000 + (define ssl-listener (ssl-listen 0 4 #t "127.0.0.1" ssl-server-context)) + (define port-number (let () + (define-values (addr port-number other-addr other-port-number) + (ssl-addresses ssl-listener #t)) + port-number)) + (define listener-main (thread (lambda() @@ -91,7 +96,7 @@ (ssl-set-verify! ssl-client-context #t)) (let-values ([(in out) (ssl-connect "127.0.0.1" - 55000 + port-number ssl-client-context)]) (check "Client: Made connection.~n" #t #t) (when later-mode diff --git a/racket/collects/openssl/mzssl.rkt b/racket/collects/openssl/mzssl.rkt index 12f6117993..7429818cd6 100644 --- a/racket/collects/openssl/mzssl.rkt +++ b/racket/collects/openssl/mzssl.rkt @@ -172,7 +172,7 @@ TO DO: #:hostname (or/c string? #f)] (values input-port? output-port?))] [ssl-listen - (->* [(integer-in 1 (sub1 (expt 2 16)))] + (->* [listen-port-number?] [exact-nonnegative-integer? any/c (or/c string? #f) @@ -1545,7 +1545,8 @@ TO DO: (if (eq? 'listener input?) (ssl-listener-l mzssl) (if input? (mzssl-i mzssl) (mzssl-o mzssl)))) - (cond [(tcp-port? port) (tcp-addresses port port-numbers?)] + (cond [(or (tcp-port? port) (tcp-listener? port)) + (tcp-addresses port port-numbers?)] [else (error 'ssl-addresses "not connected to TCP port")]))) (define (ssl-abandon-port p)