Router: checking a buffer before accessing its memory fields.
This fixes the router's crash on buildbot; the reason was an unexpected 'last' response from the application to the router arriving before the response headers. The last buffer is not a memory buffer, so the result of accessing memory fields is unpredictable. The unexpected 'last' message was caused by an error in libunit; fixed in fee8fd855a00.
This commit is contained in:
@@ -3787,7 +3787,7 @@ nxt_router_response_ready_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg,
|
||||
nxt_http_request_send_body(task, r, NULL);
|
||||
|
||||
} else {
|
||||
size_t b_size = nxt_buf_mem_used_size(&b->mem);
|
||||
size_t b_size = nxt_buf_is_mem(b) ? nxt_buf_mem_used_size(&b->mem) : 0;
|
||||
|
||||
if (nxt_slow_path(b_size < sizeof(*resp))) {
|
||||
goto fail;
|
||||
|
||||
Reference in New Issue
Block a user