}
#endif
- if (event_list[i].revents & (POLLERR|POLLNVAL)) {
+ if (event_list[i].revents & POLLNVAL) {
ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
"poll() error fd:%d ev:%04X rev:%04X",
event_list[i].fd,
ctx->in_hunk, ctx->in_hunk->pos);
-#if 0
- if (!ctx->redo) {
+ if (ctx->zstream.next_in) {
ctx->in_hunk->pos = ctx->zstream.next_in;
- ctx->out_hunk->last = ctx->zstream.next_out;
+
+ if (ctx->zstream.avail_in == 0) {
+ ctx->zstream.next_in = NULL;
+ }
}
-#else
- ctx->in_hunk->pos = ctx->zstream.next_in;
+
ctx->out_hunk->last = ctx->zstream.next_out;
-#endif
if (ctx->zstream.avail_out == 0) {
ngx_alloc_link_and_set_hunk(cl, ctx->out_hunk, r->pool,
break;
}
- if (ctx->flush == Z_FINISH) {
-
- /* rc == Z_STREAM_END */
+ if (rc == Z_STREAM_END) {
ctx->zin = ctx->zstream.total_in;
ctx->zout = 10 + ctx->zstream.total_out + 8;
ngx_pfree(r->pool, ctx->preallocated);
- ctx->flush = Z_NO_FLUSH;
-
ngx_alloc_link_and_set_hunk(cl, ctx->out_hunk, r->pool,
ngx_http_gzip_error(ctx));
*ctx->last_out = cl;
return last;
}
-#if 0
- if (ctx->out == NULL && last != NGX_NONE) {
- return last;
- }
-#endif
-
last = ngx_http_next_body_filter(r, ctx->out);
if (last == NGX_ERROR) {
ngx_chain_update_chains(&ctx->free, &ctx->busy, &ctx->out,
(ngx_hunk_tag_t) &ngx_http_gzip_filter_module);
ctx->last_out = &ctx->out;
+
+ if (ctx->done) {
+ return last;
+ }
}
}