diff options
author | lurchi <lurchi@strangeplace.net> | 2019-06-24 21:27:08 +0200 |
---|---|---|
committer | lurchi <lurchi@strangeplace.net> | 2019-06-24 21:27:08 +0200 |
commit | 2e02681fc8c274af6737fb8b139b3d834e3d1019 (patch) | |
tree | 0a9b5257912f50a6eb3ad52a387af685fa68d0bc | |
parent | b765f12e5587507c39e8a8282727eb3e205d1a3b (diff) | |
download | gnunet-nim-2e02681fc8c274af6737fb8b139b3d834e3d1019.tar.gz gnunet-nim-2e02681fc8c274af6737fb8b139b3d834e3d1019.zip |
fix crash on empty messages
-rw-r--r-- | src/gnunet_nim/cadet.nim | 4 |
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 | ||
45 | proc channelMessageCb(cls: pointer, | 45 | proc 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 | ||
55 | proc channelMessageCheckCb(cls: pointer, | 57 | proc channelMessageCheckCb(cls: pointer, |