Router: introducing the PORT_ACK message.
The PORT_ACK message is the router's response to the application's NEW_PORT message. After receiving PORT_ACK, the application is safe to process requests using this port. This message avoids a racing condition when the application starts processing a request from the shared queue and sends REQ_HEADERS_ACK. The REQ_HEADERS_ACK message contains the application port ID as reply_port, which the router uses to send request data. When the application creates a new port, it immediately sends it to the main router thread. Because the request is processed outside the main thread, a racing condition can occur between the receipt of the new port in the main thread and the receipt of REQ_HEADERS_ACK in the worker router thread where the same port is specified as reply_port.
This commit is contained in:
@@ -154,6 +154,8 @@ struct nxt_unit_callbacks_s {
|
||||
/* Receive data on port id. Optional. */
|
||||
ssize_t (*port_recv)(nxt_unit_ctx_t *, nxt_unit_port_t *port,
|
||||
void *buf, size_t buf_size, void *oob, size_t oob_size);
|
||||
|
||||
int (*ready_handler)(nxt_unit_ctx_t *);
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user