net.nim: destroyContext for destroying SSLContext

This commit is contained in:
Michał Zieliński
2015-10-24 22:48:33 +02:00
parent ba61a8d00a
commit 3ecf33fa6a
2 changed files with 8 additions and 1 deletions

View File

@@ -13,3 +13,4 @@ proc clientFunc(identityHint: string): tuple[identity: string, psk: string] =
let context = newContext(cipherList="PSK-AES256-CBC-SHA")
context.clientGetPskFunc = clientFunc
context.wrapConnectedSocket(sock, handshakeAsClient)
context.destroyContext()

View File

@@ -267,7 +267,6 @@ when defined(ssl):
newCTX.loadCertificates(certFile, keyFile)
result = SSLContext(newCTX)
# this is never freed, but SSLContext can't be freed anyway yet
let extraInternal = new(SslContextExtraInternal)
GC_ref(extraInternal)
result.setExtraData(extraInternalIndex, cast[pointer](extraInternal))
@@ -275,6 +274,13 @@ when defined(ssl):
proc getExtraInternal(ctx: SSLContext): SslContextExtraInternal =
return cast[SslContextExtraInternal](ctx.getExtraData(extraInternalIndex))
proc destroyContext*(ctx: SSLContext) =
## Free memory referenced by SSLContext.
let extraInternal = ctx.getExtraInternal()
if extraInternal != nil:
GC_unref(extraInternal)
SSLCTX(ctx).SSL_CTX_free()
proc `pskIdentityHint=`*(ctx: SSLContext, hint: string) =
## Sets the identity hint passed to server.
##