Resolving a racing condition while adding ports on the app's side.
An earlier attempt (ad6265786871) to resolve this condition on the router's side added a new issue: the app could get a request before acquiring a port.
This commit is contained in:
@@ -590,6 +590,17 @@ nxt_process_close_ports(nxt_task_t *task, nxt_process_t *process)
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
nxt_process_connected_port_add(nxt_process_t *process, nxt_port_t *port)
|
||||
{
|
||||
nxt_thread_mutex_lock(&process->cp_mutex);
|
||||
|
||||
nxt_port_hash_add(&process->connected_ports, port);
|
||||
|
||||
nxt_thread_mutex_unlock(&process->cp_mutex);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
nxt_process_connected_port_remove(nxt_process_t *process, nxt_port_t *port)
|
||||
{
|
||||
@@ -602,7 +613,7 @@ nxt_process_connected_port_remove(nxt_process_t *process, nxt_port_t *port)
|
||||
|
||||
|
||||
nxt_port_t *
|
||||
nxt_process_connected_port_find_add(nxt_process_t *process, nxt_port_t *port)
|
||||
nxt_process_connected_port_find(nxt_process_t *process, nxt_port_t *port)
|
||||
{
|
||||
nxt_port_t *res;
|
||||
|
||||
@@ -610,10 +621,6 @@ nxt_process_connected_port_find_add(nxt_process_t *process, nxt_port_t *port)
|
||||
|
||||
res = nxt_port_hash_find(&process->connected_ports, port->pid, port->id);
|
||||
|
||||
if (nxt_slow_path(res == NULL)) {
|
||||
nxt_port_hash_add(&process->connected_ports, port);
|
||||
}
|
||||
|
||||
nxt_thread_mutex_unlock(&process->cp_mutex);
|
||||
|
||||
return res;
|
||||
|
||||
Reference in New Issue
Block a user