diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/io/poll.nim | 6 | ||||
-rw-r--r-- | src/server/buffer.nim | 3 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/io/poll.nim b/src/io/poll.nim index 209218cd..62a34d91 100644 --- a/src/io/poll.nim +++ b/src/io/poll.nim @@ -54,7 +54,11 @@ proc trim(ctx: var PollData) = ctx.fds.setLen(i + 1) proc clear*(ctx: var PollData) = - ctx.fds.setLen(0) + # Do *not* set fds' len to 0, because this is called from inside the + # `events' iterator. + for it in ctx.fds.mitems: + it.fd = -1 + it.revents = 0 proc poll*(ctx: var PollData; timeout: cint) = ctx.trim() diff --git a/src/server/buffer.nim b/src/server/buffer.nim index 7a98a781..2de57c85 100644 --- a/src/server/buffer.nim +++ b/src/server/buffer.nim @@ -984,8 +984,7 @@ proc clone*(buffer: Buffer; newurl: URL): int {.proxy.} = response.outputId = outputId response.body = stream let data = OngoingData(response: response, stream: stream) - let fd = data.fd - buffer.pollData.register(fd, POLLIN) + buffer.pollData.register(data.fd, POLLIN) buffer.loader.put(data) if buffer.istream != nil: # We do not own our input stream, so we can't tee it. |