This overflow has become possible after the change in
06e850859a26,
since concurrent subrequests are not limited now and each of them is
counted in r->main->count.
return NGX_ERROR;
}
+ /*
+ * 1000 is reserved for other purposes.
+ */
+ if (r->main->count >= 65535 - 1000) {
+ ngx_log_error(NGX_LOG_CRIT, r->connection->log, 0,
+ "request reference counter overflow "
+ "while processing \"%V\"", uri);
+ return NGX_ERROR;
+ }
+
sr = ngx_pcalloc(r->pool, sizeof(ngx_http_request_t));
if (sr == NULL) {
return NGX_ERROR;
ngx_http_cleanup_t *cleanup;
+ unsigned count:16;
unsigned subrequests:8;
- unsigned count:8;
unsigned blocked:8;
unsigned aio:1;