Add OpenSSL 3 support (#19814)

* Minor refactor

* Add OpenSSL 3 support

Remove symbols noOpenSSLHacksq and openssl10

* Drop loading of older openssl versions

* Add library path

* Use only versioned libssl soname os OSX

* Update .github/workflows/ci_packages.yml

Co-authored-by: Hein Thant <official.heinthanth@gmail.com>

* On Mac OS X CI, link OpenSSL in /usr/local/lib/

* Install OpenSSL on Mac OS X on azure pipeline

* Remove DYLD_LIBRARY_PATH

Co-authored-by: Hein Thant <official.heinthanth@gmail.com>

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
Co-authored-by: Hein Thant <official.heinthanth@gmail.com>
This commit is contained in:
Federico Ceratto 2022-08-23 20:44:50 +01:00 • committed by GitHub
commit 2dcfd73260
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 117 additions and 139 deletions

View file

@ -16,9 +16,22 @@ when not defined(ssl):
const DummyData = "dummy data\n"
proc createSocket(): Socket =
result = newSocket(buffered = false)
result.setSockOpt(OptReuseAddr, true)
result.setSockOpt(OptReusePort, true)
proc createServer(serverContext: SslContext): (Socket, Port) =
var server = createSocket()
serverContext.wrapSocket(server)
server.bindAddr(address = "localhost")
let (_, port) = server.getLocalAddr()
server.listen()
return (server, port)
proc abruptShutdown(port: Port) {.thread.} =
let clientContext = newContext(verifyMode = CVerifyNone)
var client = newSocket(buffered = false)
var client = createSocket()
clientContext.wrapSocket(client)
client.connect("localhost", port)
@ -27,7 +40,7 @@ proc abruptShutdown(port: Port) {.thread.} =
proc notifiedShutdown(port: Port) {.thread.} =
let clientContext = newContext(verifyMode = CVerifyNone)
var client = newSocket(buffered = false)
var client = createSocket()
clientContext.wrapSocket(client)
client.connect("localhost", port)
@ -49,13 +62,7 @@ proc main() =
keyFile = "tests/testdata/mycert.pem")
block peer_close_during_write_without_shutdown:
var server = newSocket(buffered = false)
defer: server.close()
serverContext.wrapSocket(server)
server.bindAddr(address = "localhost")
let (_, port) = server.getLocalAddr()
server.listen()
var (server, port) = createServer(serverContext)
var clientThread: Thread[Port]
createThread(clientThread, abruptShutdown, port)
@ -73,19 +80,14 @@ proc main() =
discard
finally:
peer.close()
server.close()
when defined(posix):
if sigaction(SIGPIPE, oldSigPipeHandler, nil) == -1:
raiseOSError(osLastError(), "Couldn't restore SIGPIPE handler")
block peer_close_before_received_shutdown:
var server = newSocket(buffered = false)
defer: server.close()
serverContext.wrapSocket(server)
server.bindAddr(address = "localhost")
let (_, port) = server.getLocalAddr()
server.listen()
var (server, port) = createServer(serverContext)
var clientThread: Thread[Port]
createThread(clientThread, abruptShutdown, port)
@ -104,15 +106,10 @@ proc main() =
discard peer.getFd.shutdown(SD_SEND)
finally:
peer.close()
server.close()
block peer_close_after_received_shutdown:
var server = newSocket(buffered = false)
defer: server.close()
serverContext.wrapSocket(server)
server.bindAddr(address = "localhost")
let (_, port) = server.getLocalAddr()
server.listen()
var (server, port) = createServer(serverContext)
var clientThread: Thread[Port]
createThread(clientThread, notifiedShutdown, port)
@ -132,5 +129,6 @@ proc main() =
discard peer.getFd.shutdown(SD_SEND)
finally:
peer.close()
server.close()
when isMainModule: main()