diff options
author | bptato <nincsnevem662@gmail.com> | 2025-01-09 20:04:31 +0100 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2025-01-09 20:04:31 +0100 |
commit | bbb6c7ded9bdd0c2983ba33b3fd8113f04d0cdb5 (patch) | |
tree | c0f014f252b7cad33ff7867200e697d98dc7fb44 /src | |
parent | 36c280848e85595166e51bacb215a4d1eb550e0d (diff) | |
download | chawan-bbb6c7ded9bdd0c2983ba33b3fd8113f04d0cdb5.tar.gz |
bufstream: allow 0-width packets
Diffstat (limited to 'src')
-rw-r--r-- | src/io/bufreader.nim | 2 | ||||
-rw-r--r-- | src/io/dynstream.nim | 10 | ||||
-rw-r--r-- | src/local/pager.nim | 1 | ||||
-rw-r--r-- | src/server/buffer.nim | 2 |
4 files changed, 6 insertions, 9 deletions
diff --git a/src/io/bufreader.nim b/src/io/bufreader.nim index 50341bbc..a13583b3 100644 --- a/src/io/bufreader.nim +++ b/src/io/bufreader.nim @@ -27,7 +27,7 @@ proc sread*(reader: var BufferedReader; c: var ARGBColor) proc sread*(reader: var BufferedReader; c: var CellColor) proc initReader*(stream: DynStream; len, auxLen: int): BufferedReader = - assert len != 0 + assert len != 0 or auxLen != 0 var reader = BufferedReader( buffer: newSeqUninitialized[uint8](len), bufIdx: 0 diff --git a/src/io/dynstream.nim b/src/io/dynstream.nim index 668bbc32..963525f2 100644 --- a/src/io/dynstream.nim +++ b/src/io/dynstream.nim @@ -67,16 +67,16 @@ proc sreadChar*(s: DynStream): char = proc recvDataLoop*(s: DynStream; buffer: pointer; len: int) = var n = 0 - while true: + while n < len: n += s.recvData(addr cast[ptr UncheckedArray[uint8]](buffer)[n], len - n) - if n == len: - break proc recvDataLoop*(s: DynStream; buffer: var openArray[uint8]) {.inline.} = - s.recvDataLoop(addr buffer[0], buffer.len) + if buffer.len > 0: + s.recvDataLoop(addr buffer[0], buffer.len) proc recvDataLoop*(s: DynStream; buffer: var openArray[char]) {.inline.} = - s.recvDataLoop(addr buffer[0], buffer.len) + if buffer.len > 0: + s.recvDataLoop(addr buffer[0], buffer.len) proc recvAll*(s: DynStream): string = var buffer = newString(4096) diff --git a/src/local/pager.nim b/src/local/pager.nim index dbe09992..6c46df67 100644 --- a/src/local/pager.nim +++ b/src/local/pager.nim @@ -3124,7 +3124,6 @@ proc acceptBuffers(pager: Pager) = container.setStream(stream, registerFun) else: # cloned buffer stream.withPacketWriter w: - w.swrite(false) w.sendAux.add(cstream.fd) # buffer is cloned, just share the parent's cached source loader.shareCachedItem(container.cacheId, container.process) diff --git a/src/server/buffer.nim b/src/server/buffer.nim index 43d2f689..3e76d2ee 100644 --- a/src/server/buffer.nim +++ b/src/server/buffer.nim @@ -1035,8 +1035,6 @@ proc clone*(buffer: Buffer; newurl: URL): int {.proxy.} = # get key for new buffer buffer.loader.controlStream.sclose() buffer.pstream.withPacketReader r: - var dummy: bool - r.sread(dummy) buffer.loader.controlStream = newSocketStream(r.recvAux.pop()) buffer.rfd = buffer.pstream.fd buffer.pollData.register(buffer.rfd, POLLIN) |