mirror of
https://github.com/logos-storage/nim-chronos.git
synced 2026-04-29 06:23:06 +00:00
Add GC reference to reader and writer.
This commit is contained in:
parent
cae1d09690
commit
e19101d287
@ -11,6 +11,7 @@
|
|||||||
import bearssl, bearssl/cacert
|
import bearssl, bearssl/cacert
|
||||||
import ../asyncloop, ../timer, ../asyncsync
|
import ../asyncloop, ../timer, ../asyncsync
|
||||||
import asyncstream, ../transports/stream, ../transports/common
|
import asyncstream, ../transports/stream, ../transports/common
|
||||||
|
import strutils
|
||||||
|
|
||||||
type
|
type
|
||||||
TLSStreamKind {.pure.} = enum
|
TLSStreamKind {.pure.} = enum
|
||||||
@ -28,6 +29,7 @@ type
|
|||||||
|
|
||||||
type
|
type
|
||||||
TlsStreamWriter* = ref object of AsyncStreamWriter
|
TlsStreamWriter* = ref object of AsyncStreamWriter
|
||||||
|
stream*: TlsAsyncStream
|
||||||
|
|
||||||
TlsStreamReader* = ref object of AsyncStreamReader
|
TlsStreamReader* = ref object of AsyncStreamReader
|
||||||
case kind: TlsStreamKind
|
case kind: TlsStreamKind
|
||||||
@ -35,7 +37,7 @@ type
|
|||||||
ccontext: ptr SslClientContext
|
ccontext: ptr SslClientContext
|
||||||
of TlsStreamKind.Server:
|
of TlsStreamKind.Server:
|
||||||
scontext: ptr SslServerContext
|
scontext: ptr SslServerContext
|
||||||
writer*: TlsStreamWriter
|
stream*: TlsAsyncStream
|
||||||
|
|
||||||
TlsAsyncStream* = ref object of RootRef
|
TlsAsyncStream* = ref object of RootRef
|
||||||
xwc*: X509NoAnchorContext
|
xwc*: X509NoAnchorContext
|
||||||
@ -96,7 +98,7 @@ proc tlsWriteLoop(stream: AsyncStreamWriter) {.async.} =
|
|||||||
|
|
||||||
proc tlsReadLoop(stream: AsyncStreamReader) {.async.} =
|
proc tlsReadLoop(stream: AsyncStreamReader) {.async.} =
|
||||||
var rstream = cast[TlsStreamReader](stream)
|
var rstream = cast[TlsStreamReader](stream)
|
||||||
var wstream = rstream.writer
|
var wstream = rstream.stream.writer
|
||||||
var engine: ptr SslEngineContext
|
var engine: ptr SslEngineContext
|
||||||
if rstream.kind == TlsStreamKind.Server:
|
if rstream.kind == TlsStreamKind.Server:
|
||||||
engine = addr rstream.scontext.eng
|
engine = addr rstream.scontext.eng
|
||||||
@ -238,9 +240,10 @@ proc newTlsClientAsyncStream*(rsource: AsyncStreamReader,
|
|||||||
var reader = new TlsStreamReader
|
var reader = new TlsStreamReader
|
||||||
reader.kind = TlsStreamKind.Client
|
reader.kind = TlsStreamKind.Client
|
||||||
var writer = new TlsStreamWriter
|
var writer = new TlsStreamWriter
|
||||||
|
reader.stream = result
|
||||||
|
writer.stream = result
|
||||||
result.reader = reader
|
result.reader = reader
|
||||||
result.writer = writer
|
result.writer = writer
|
||||||
result.reader.writer = writer
|
|
||||||
reader.ccontext = addr result.context
|
reader.ccontext = addr result.context
|
||||||
|
|
||||||
if TLSFlags.NoVerifyHost in flags:
|
if TLSFlags.NoVerifyHost in flags:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user