summary refs log tree commit diff stats
path: root/lib/pure/net.nim
diff options
context:
space:
mode:
authorJacek Sieka <arnetheduck@gmail.com>2016-08-17 18:49:36 +0800
committerJacek Sieka <arnetheduck@gmail.com>2016-08-17 18:49:36 +0800
commit4d558e2608799e6ad136804d9cad5a2dc32d25a5 (patch)
treeae51a376e5a387623195c5afa7e1f565c0be9bf8 /lib/pure/net.nim
parent3cd4cf4320cba2795d2a9021c55a20cbbe2b04ae (diff)
parent006207742f43f4e793b8681c38b879d74d3f8672 (diff)
downloadNim-4d558e2608799e6ad136804d9cad5a2dc32d25a5.tar.gz
Merge remote-tracking branch 'origin/devel' into compiler-cleanup
Diffstat (limited to 'lib/pure/net.nim')
-rw-r--r--lib/pure/net.nim8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/pure/net.nim b/lib/pure/net.nim
index 9501f6dc7..bd208761b 100644
--- a/lib/pure/net.nim
+++ b/lib/pure/net.nim
@@ -205,6 +205,10 @@ proc newSocket*(fd: SocketHandle, domain: Domain = AF_INET,
   if buffered:
     result.currPos = 0
 
+  # Set SO_NOSIGPIPE on OS X.
+  when defined(macosx):
+    setSockOptInt(fd, SOL_SOCKET, SO_NOSIGPIPE, 1)
+
 proc newSocket*(domain, sockType, protocol: cint, buffered = true): Socket =
   ## Creates a new socket.
   ##
@@ -342,8 +346,6 @@ when defineSsl:
     result = SSLContext(context: newCTX, extraInternalIndex: 0,
         referencedData: initSet[int]())
     result.extraInternalIndex = getExtraDataIndex(result)
-    # The PSK callback functions assume the internal index is 0.
-    assert result.extraInternalIndex == 0
 
     let extraInternal = new(SslContextExtraInternal)
     result.setExtraData(result.extraInternalIndex, extraInternal)
@@ -392,6 +394,8 @@ when defineSsl:
     ##
     ## Only used in PSK ciphersuites.
     ctx.getExtraInternal().clientGetPskFunc = fun
+    assert ctx.extraInternalIndex == 0,
+          "The pskClientCallback assumes the extraInternalIndex is 0"
     ctx.context.SSL_CTX_set_psk_client_callback(
         if fun == nil: nil else: pskClientCallback)