diff options
author | bptato <nincsnevem662@gmail.com> | 2024-04-20 14:30:58 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2024-04-20 14:30:58 +0200 |
commit | e59de8e03cbc9633d8906a8d04fe89638cf31ba1 (patch) | |
tree | 4f436170ef0a8698a8b0500b9ebdcc8230368a1d | |
parent | eabac7f43867e40cde927ec7b552b011968946dc (diff) | |
download | chawan-e59de8e03cbc9633d8906a8d04fe89638cf31ba1.tar.gz |
buffer: fix switch from charset decoder to UTF-8 validator
The validator is used only if the decoder is nil, so it must be cleared in switchCharset.
-rw-r--r-- | src/server/buffer.nim | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/server/buffer.nim b/src/server/buffer.nim index 74dc3c2f..10d1cce0 100644 --- a/src/server/buffer.nim +++ b/src/server/buffer.nim @@ -704,8 +704,10 @@ func canSwitch(buffer: Buffer): bool {.inline.} = proc initDecoder(buffer: Buffer) = if buffer.charset != CHARSET_UTF_8: + buffer.validator = nil buffer.decoder = newTextDecoder(buffer.charset) else: + buffer.decoder = nil buffer.validator = (ref TextValidatorUTF8)() proc switchCharset(buffer: Buffer) = @@ -1167,7 +1169,7 @@ proc onload(buffer: Buffer) = while true: try: if not reprocess: - n = buffer.istream.recvData(addr iq[0], iq.len) + n = buffer.istream.recvData(iq) buffer.bytesRead += n if n != 0: if not buffer.processData(iq.toOpenArray(0, n - 1)): |