Store mem_pool in buf->data instead of port for consistency.
This commit is contained in:
@@ -106,7 +106,7 @@ nxt_port_send_new_port(nxt_task_t *task, nxt_runtime_t *rt,
|
|||||||
nxt_debug(task, "send new port %FD to process %PI",
|
nxt_debug(task, "send new port %FD to process %PI",
|
||||||
new_port->socket.fd, process->pid);
|
new_port->socket.fd, process->pid);
|
||||||
|
|
||||||
b->data = port;
|
b->data = port->mem_pool;
|
||||||
b->completion_handler = nxt_port_new_port_buf_completion;
|
b->completion_handler = nxt_port_new_port_buf_completion;
|
||||||
b->mem.free += sizeof(nxt_port_msg_new_port_t);
|
b->mem.free += sizeof(nxt_port_msg_new_port_t);
|
||||||
msg = (nxt_port_msg_new_port_t *) b->mem.pos;
|
msg = (nxt_port_msg_new_port_t *) b->mem.pos;
|
||||||
@@ -128,15 +128,15 @@ nxt_port_send_new_port(nxt_task_t *task, nxt_runtime_t *rt,
|
|||||||
static void
|
static void
|
||||||
nxt_port_new_port_buf_completion(nxt_task_t *task, void *obj, void *data)
|
nxt_port_new_port_buf_completion(nxt_task_t *task, void *obj, void *data)
|
||||||
{
|
{
|
||||||
|
nxt_mp_t *mp;
|
||||||
nxt_buf_t *b;
|
nxt_buf_t *b;
|
||||||
nxt_port_t *port;
|
|
||||||
|
|
||||||
b = obj;
|
b = obj;
|
||||||
port = b->data;
|
mp = b->data;
|
||||||
|
|
||||||
/* TODO: b->mem.pos */
|
/* TODO: b->mem.pos */
|
||||||
|
|
||||||
nxt_buf_free(port->mem_pool, b);
|
nxt_buf_free(mp, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ nxt_port_mmap_destroy(nxt_port_mmap_t *port_mmap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (port_mmap->fd != -1) {
|
if (port_mmap->fd != -1) {
|
||||||
close(port_mmap->fd);
|
nxt_fd_close(port_mmap->fd);
|
||||||
port_mmap->fd = -1;
|
port_mmap->fd = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -112,7 +112,15 @@ nxt_port_mmap_buf_completion(nxt_task_t *task, void *obj, void *data)
|
|||||||
|
|
||||||
mp = b->data;
|
mp = b->data;
|
||||||
|
|
||||||
port_mmap = (nxt_port_mmap_t *) b->parent;
|
#if (NXT_DEBUG)
|
||||||
|
if (nxt_slow_path(data != b->parent)) {
|
||||||
|
nxt_log_alert(task->log, "completion data (%p) != b->parent (%p)",
|
||||||
|
data, b->parent);
|
||||||
|
nxt_abort();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
port_mmap = data;
|
||||||
hdr = port_mmap->u.hdr;
|
hdr = port_mmap->u.hdr;
|
||||||
|
|
||||||
if (b->is_port_mmap_sent && b->mem.pos > b->mem.start) {
|
if (b->is_port_mmap_sent && b->mem.pos > b->mem.start) {
|
||||||
@@ -240,19 +248,27 @@ static void
|
|||||||
nxt_port_mmap_send_fd_buf_completion(nxt_task_t *task, void *obj, void *data)
|
nxt_port_mmap_send_fd_buf_completion(nxt_task_t *task, void *obj, void *data)
|
||||||
{
|
{
|
||||||
nxt_buf_t *b;
|
nxt_buf_t *b;
|
||||||
nxt_port_t *port;
|
nxt_mp_t *mp;
|
||||||
nxt_port_mmap_t *port_mmap;
|
nxt_port_mmap_t *port_mmap;
|
||||||
|
|
||||||
b = obj;
|
b = obj;
|
||||||
port = b->data;
|
mp = b->data;
|
||||||
port_mmap = (nxt_port_mmap_t *) b->parent;
|
port_mmap = data;
|
||||||
|
|
||||||
nxt_debug(task, "mmap fd %FD sent to %PI", port_mmap->fd, port->pid);
|
#if (NXT_DEBUG)
|
||||||
|
if (nxt_slow_path(data != b->parent)) {
|
||||||
|
nxt_log_alert(task->log, "completion data (%p) != b->parent (%p)",
|
||||||
|
data, b->parent);
|
||||||
|
nxt_abort();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
close(port_mmap->fd);
|
nxt_debug(task, "mmap fd %FD has been sent", port_mmap->fd);
|
||||||
|
|
||||||
|
nxt_fd_close(port_mmap->fd);
|
||||||
port_mmap->fd = -1;
|
port_mmap->fd = -1;
|
||||||
|
|
||||||
nxt_buf_free(port->mem_pool, b);
|
nxt_buf_free(mp, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -337,6 +353,15 @@ nxt_port_new_port_mmap(nxt_task_t *task, nxt_process_t *process,
|
|||||||
goto remove_fail;
|
goto remove_fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
b = nxt_buf_mem_alloc(port->mem_pool, 0, 0);
|
||||||
|
if (nxt_slow_path(b == NULL)) {
|
||||||
|
goto remove_fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
b->completion_handler = nxt_port_mmap_send_fd_buf_completion;
|
||||||
|
b->data = port->mem_pool;
|
||||||
|
b->parent = port_mmap;
|
||||||
|
|
||||||
/* Init segment header. */
|
/* Init segment header. */
|
||||||
hdr = port_mmap->u.hdr;
|
hdr = port_mmap->u.hdr;
|
||||||
|
|
||||||
@@ -348,11 +373,6 @@ nxt_port_new_port_mmap(nxt_task_t *task, nxt_process_t *process,
|
|||||||
nxt_debug(task, "send mmap fd %FD to process %PI", port_mmap->fd,
|
nxt_debug(task, "send mmap fd %FD to process %PI", port_mmap->fd,
|
||||||
port->pid);
|
port->pid);
|
||||||
|
|
||||||
b = nxt_buf_mem_alloc(port->mem_pool, 0, 0);
|
|
||||||
b->completion_handler = nxt_port_mmap_send_fd_buf_completion;
|
|
||||||
b->data = port;
|
|
||||||
b->parent = port_mmap;
|
|
||||||
|
|
||||||
/* TODO handle error */
|
/* TODO handle error */
|
||||||
(void) nxt_port_socket_write(task, port, NXT_PORT_MSG_MMAP, port_mmap->fd,
|
(void) nxt_port_socket_write(task, port, NXT_PORT_MSG_MMAP, port_mmap->fd,
|
||||||
0, 0, b);
|
0, 0, b);
|
||||||
|
|||||||
Reference in New Issue
Block a user