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:
parent
d1d141b135
commit
2dcfd73260
5 changed files with 117 additions and 139 deletions
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue