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}
@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]

View File

@ -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

View File

@ -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)