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.
This commit is contained in:
Matthew Flatt 2019-11-27 08:48:05 -07:00
parent 627d164a46
commit 85459e5fef
3 changed files with 11 additions and 5 deletions

View File

@ -265,7 +265,7 @@ current platform for client connections.
@section{TCP-like Server Procedures} @section{TCP-like Server Procedures}
@defproc[(ssl-listen @defproc[(ssl-listen
[port-no (integer-in 1 65535)] [port-no listen-port-number?]
[queue-k exact-nonnegative-integer? 5] [queue-k exact-nonnegative-integer? 5]
[reuse? any/c #f] [reuse? any/c #f]
[hostname-or-#f (or/c string? #f) #f] [hostname-or-#f (or/c string? #f) #f]

View File

@ -30,12 +30,17 @@
ssl-server-context ssl-server-context
#t)) #t))
(define ssl-listener (ssl-listen 55000 (define ssl-listener (ssl-listen 0
4 4
#t #t
"127.0.0.1" "127.0.0.1"
ssl-server-context)) 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 (define listener-main
(thread (thread
(lambda() (lambda()
@ -91,7 +96,7 @@
(ssl-set-verify! ssl-client-context #t)) (ssl-set-verify! ssl-client-context #t))
(let-values ([(in out) (ssl-connect "127.0.0.1" (let-values ([(in out) (ssl-connect "127.0.0.1"
55000 port-number
ssl-client-context)]) ssl-client-context)])
(check "Client: Made connection.~n" #t #t) (check "Client: Made connection.~n" #t #t)
(when later-mode (when later-mode

View File

@ -172,7 +172,7 @@ TO DO:
#:hostname (or/c string? #f)] #:hostname (or/c string? #f)]
(values input-port? output-port?))] (values input-port? output-port?))]
[ssl-listen [ssl-listen
(->* [(integer-in 1 (sub1 (expt 2 16)))] (->* [listen-port-number?]
[exact-nonnegative-integer? [exact-nonnegative-integer?
any/c any/c
(or/c string? #f) (or/c string? #f)
@ -1545,7 +1545,8 @@ TO DO:
(if (eq? 'listener input?) (if (eq? 'listener input?)
(ssl-listener-l mzssl) (ssl-listener-l mzssl)
(if input? (mzssl-i mzssl) (mzssl-o 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")]))) [else (error 'ssl-addresses "not connected to TCP port")])))
(define (ssl-abandon-port p) (define (ssl-abandon-port p)