summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
authorFederico Ceratto <federico.ceratto@gmail.com>2022-08-23 20:44:50 +0100
committerGitHub <noreply@github.com>2022-08-23 21:44:50 +0200
commit2dcfd732609a2cfa805e5a94cc105399a2f18632 (patch)
tree4b8752a4a96670d84f188ba85ef53fdd61a0dbce /tests
parentd1d141b135a605f81935e89322549013e5be3863 (diff)
downloadNim-2dcfd732609a2cfa805e5a94cc105399a2f18632.tar.gz
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>
Diffstat (limited to 'tests')
-rw-r--r--tests/stdlib/tssl.nim44
1 files changed, 21 insertions, 23 deletions
diff --git a/tests/stdlib/tssl.nim b/tests/stdlib/tssl.nim
index 379c1b1e5..fd85cb55b 100644
--- a/tests/stdlib/tssl.nim
+++ b/tests/stdlib/tssl.nim
@@ -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()