revert #24896; asyncnet ssl overhaul (#25033)

revert #24896

Partially reverting #24896 in #25024 broke CI. So better revert it
completely so the CI is green. I'll investigate the issue later.

(cherry picked from commit 08642ffe34)
This commit is contained in:
Esteban C Borsani
2025-07-10 10:31:56 -03:00
committed by narimiran
parent 137fb97fb5
commit 95d25a9d7f
2 changed files with 54 additions and 123 deletions

View File

@@ -1,79 +0,0 @@
discard """
cmd: "nim $target --hints:on --define:ssl $options $file"
"""
{.define: ssl.}
import std/[asyncdispatch, asyncnet, net, openssl]
var port0: Port
var checked = 0
proc server {.async.} =
let sock = newAsyncSocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, buffered = true)
doAssert sock != nil
defer: sock.close()
let sslCtx = newContext(
protSSLv23,
verifyMode = CVerifyNone,
certFile = "tests/testdata/mycert.pem",
keyFile = "tests/testdata/mycert.pem"
)
doAssert sslCtx != nil
defer: sslCtx.destroyContext()
wrapSocket(sslCtx, sock)
#sock.bindAddr(Port 8181)
sock.bindAddr()
port0 = getLocalAddr(sock)[1]
sock.listen()
echo "accept"
let clientSocket = await sock.accept()
defer: clientSocket.close()
wrapConnectedSocket(
sslCtx, clientSocket, handshakeAsServer, "localhost"
)
let sdata = "x" & newString(41)
let sfut = clientSocket.send(sdata)
let rdata = newString(42)
let rfut = clientSocket.recvInto(addr rdata[0], rdata.len)
echo "send"
await sfut
echo "recv"
let rLen = await rfut # it hang here until the client closes the connection or sends more data
doAssert rLen == 42, $rLen
doAssert rdata[0] == 'x', $rdata[0]
echo "ok"
inc checked
proc client {.async.} =
let sock = newAsyncSocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, buffered = true)
doAssert sock != nil
defer: sock.close()
let sslCtx = newContext(
protSSLv23,
verifyMode = CVerifyNone
)
doAssert sslCtx != nil
defer: sslCtx.destroyContext()
wrapSocket(sslCtx, sock)
#await sock.connect("127.0.0.1", Port 8181)
await sock.connect("localhost", port0)
let sdata = "x" & newString(41)
echo "send"
await sock.send(sdata)
let rdata = newString(42)
echo "recv"
let rLen = await sock.recvInto(addr rdata[0], rdata.len)
doAssert rLen == 42, $rLen
doAssert rdata[0] == 'x', $rdata[0]
#await sleepAsync(10_000)
#await sock.send("x")
echo "ok"
inc checked
discard getGlobalDispatcher()
let serverFut = server()
waitFor client()
waitFor serverFut
doAssert checked == 2
doAssert not hasPendingOperations()