File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -356,24 +356,25 @@ proc send(ctx: MqttCtx, pkt: Pkt): Future[bool] {.async.} =
356356 if ctx.state notin {Connecting , Connected , Disconnecting }:
357357 return false
358358
359- var hdr : seq [uint8 ]
360- hdr .add (pkt.typ.int shl 4 ).uint8 or pkt.flags
359+ var buf : seq [uint8 ] = newSeqOfCap [ uint8 ]( 1 + 4 + pkt.data.len)
360+ buf .add (pkt.typ.int shl 4 ).uint8 or pkt.flags
361361
362362 var len = pkt.data.len
363363 while true :
364364 var b = len mod 128
365365 len = len div 128
366366 if len > 0 :
367367 b = b or 128
368- hdr .add b.uint8
368+ buf .add b.uint8
369369 if len == 0 :
370370 break
371371
372372 ctx.dmp " tx> " & $ pkt
373- await ctx.s.send (hdr[0 ].unsafeAddr, hdr.len)
374-
375373 if pkt.data.len > 0 :
376- await ctx.s.send (pkt.data[0 ].unsafeAddr, pkt.data.len)
374+ let hdrlen = buf.len
375+ buf.setLen (hdrlen + pkt.data.len)
376+ copyMem (buf[hdrlen].addr , pkt.data[0 ].unsafeAddr, pkt.data.len)
377+ await ctx.s.send (buf[0 ].unsafeAddr, buf.len)
377378
378379 return true
379380
You can’t perform that action at this time.
0 commit comments