Skip to content

Commit 6ae249c

Browse files
fix: stream creation when connections are nil (#63)
1 parent 21bc920 commit 6ae249c

File tree

3 files changed

+8
-1
lines changed

3 files changed

+8
-1
lines changed

lsquic/context/client.nim

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ proc onConnClosed(conn: ptr lsquic_conn_t) {.cdecl.} =
5959
)
6060
quicClientConn.cancelPending()
6161
quicClientConn.onClose()
62+
quicClientConn.lsquicConn = nil
6263
GC_unref(quicClientConn)
6364
lsquic_conn_set_ctx(conn, nil)
6465

lsquic/context/context.nim

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,13 @@ method dial*(
220220
): Result[QuicConnection, string] {.base, gcsafe, raises: [].} =
221221
raiseAssert "dial not implemented"
222222

223-
proc makeStream*(ctx: QuicContext, quicConn: QuicConnection) {.raises: [].} =
223+
proc makeStream*(
224+
ctx: QuicContext, quicConn: QuicConnection
225+
) {.raises: [ConnectionClosedError].} =
224226
debug "Creating stream"
227+
if quicConn.isNil or quicConn.lsquicConn.isNil:
228+
debug "Cannot create stream: connection is nil"
229+
raise newException(ConnectionClosedError, "connection closed")
225230
lsquic_conn_make_stream(quicConn.lsquicConn)
226231

227232
proc onNewStream*(

lsquic/context/server.nim

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ proc onConnClosed(conn: ptr lsquic_conn_t) {.cdecl.} =
4343
if not conn_ctx.isNil:
4444
let quicConn = cast[QuicConnection](conn_ctx)
4545
quicConn.onClose()
46+
quicConn.lsquicConn = nil
4647
GC_unref(quicConn)
4748
lsquic_conn_set_ctx(conn, nil)
4849

0 commit comments

Comments
 (0)