aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlurchi <lurchi@strangeplace.net>2019-06-24 21:27:08 +0200
committerlurchi <lurchi@strangeplace.net>2019-06-24 21:27:08 +0200
commit2e02681fc8c274af6737fb8b139b3d834e3d1019 (patch)
tree0a9b5257912f50a6eb3ad52a387af685fa68d0bc
parentb765f12e5587507c39e8a8282727eb3e205d1a3b (diff)
downloadgnunet-nim-2e02681fc8c274af6737fb8b139b3d834e3d1019.tar.gz
gnunet-nim-2e02681fc8c274af6737fb8b139b3d834e3d1019.zip
fix crash on empty messages
-rw-r--r--src/gnunet_nim/cadet.nim4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/gnunet_nim/cadet.nim b/src/gnunet_nim/cadet.nim
index b9fe0b7..576abb1 100644
--- a/src/gnunet_nim/cadet.nim
+++ b/src/gnunet_nim/cadet.nim
@@ -44,12 +44,14 @@ proc channelConnectCb(cls: pointer,
44 44
45proc channelMessageCb(cls: pointer, 45proc channelMessageCb(cls: pointer,
46 messageHeader: ptr GNUNET_MessageHeader) {.cdecl.} = 46 messageHeader: ptr GNUNET_MessageHeader) {.cdecl.} =
47 echo "channelMessageCb"
47 let channel = cast[ptr CadetChannel](cls) 48 let channel = cast[ptr CadetChannel](cls)
48 GNUNET_CADET_receive_done(channel.handle) 49 GNUNET_CADET_receive_done(channel.handle)
49 let payloadLen = int(ntohs(messageHeader.size)) - sizeof(GNUNET_MessageHeader) 50 let payloadLen = int(ntohs(messageHeader.size)) - sizeof(GNUNET_MessageHeader)
50 let payload = cast[ptr GNUNET_MessageHeader](cast[ByteAddress](messageHeader) + sizeof(GNUNET_MessageHeader)) 51 let payload = cast[ptr GNUNET_MessageHeader](cast[ByteAddress](messageHeader) + sizeof(GNUNET_MessageHeader))
51 var payloadBuf = newString(payloadLen) 52 var payloadBuf = newString(payloadLen)
52 copyMem(addr payloadBuf[0], payload, payloadLen) 53 if payloadLen > 0:
54 copyMem(addr payloadBuf[0], payload, payloadLen)
53 waitFor channel.messages.write(payloadBuf) 55 waitFor channel.messages.write(payloadBuf)
54 56
55proc channelMessageCheckCb(cls: pointer, 57proc channelMessageCheckCb(cls: pointer,