diff --git a/src/syndicate/drivers/http_driver.nim b/src/syndicate/drivers/http_driver.nim index b6cdb3b..ab754e3 100644 --- a/src/syndicate/drivers/http_driver.nim +++ b/src/syndicate/drivers/http_driver.nim @@ -199,24 +199,27 @@ method message(e: Exchange; turn: var Turn; a: AssertionRef) = e.stream.write(res.header.name, ": ", res.header.value, CRLF) of HttpResponseKind.chunk: - if e.mode == HttpResponseKind.header: - e.stream.write("transfer-encoding: chunked" & CRLF & CRLF) - e.ses.send(move e.stream.data) - e.mode = res.orKind - if e.mode == res.orKind: - e.ses.send(res.chunk.chunk.lenLine) - e.ses.send(res.chunk.chunk) - e.ses.send(CRLF) + if res.chunk.chunk.len > 0: + if e.mode == HttpResponseKind.header: + e.stream.write("transfer-encoding: chunked" & CRLF & CRLF) + e.ses.send(move e.stream.data) + e.mode = res.orKind + if e.mode == res.orKind: + e.ses.send(res.chunk.chunk.lenLine) + e.ses.send(res.chunk.chunk) + e.ses.send(CRLF) of HttpResponseKind.done: if e.mode in {HttpResponseKind.header, HttpResponseKind.chunk}: if e.mode == HttpResponseKind.header: e.stream.write("content-length: ", $res.done.chunk.len & CRLF & CRLF) e.ses.send(move e.stream.data) - e.ses.send(res.done.chunk) + if res.done.chunk.len > 0: + e.ses.send(res.done.chunk) elif e.mode == HttpResponseKind.chunk: e.ses.send(res.done.chunk.lenLine) - e.ses.send(res.done.chunk) + if res.done.chunk.len > 0: + e.ses.send(res.done.chunk) e.ses.send(CRLF & "0" & CRLF & CRLF) e.mode = res.orKind e.ses.conn.endBatch()