Tiny mmap buffers completion fixed.
Small mmap buffers transferred in 'plain' mode and should be freed by sender.
This commit is contained in:
@@ -308,7 +308,8 @@ nxt_port_write_handler(nxt_task_t *task, void *obj, void *data)
|
|||||||
|
|
||||||
wq = &task->thread->engine->fast_work_queue;
|
wq = &task->thread->engine->fast_work_queue;
|
||||||
|
|
||||||
msg->buf = nxt_sendbuf_completion(task, wq, msg->buf, plain_size);
|
msg->buf = nxt_sendbuf_completion(task, wq, msg->buf, plain_size,
|
||||||
|
m == NXT_PORT_METHOD_MMAP);
|
||||||
|
|
||||||
if (msg->buf != NULL) {
|
if (msg->buf != NULL) {
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -373,7 +373,7 @@ nxt_sendbuf_update(nxt_buf_t *b, size_t sent)
|
|||||||
|
|
||||||
nxt_buf_t *
|
nxt_buf_t *
|
||||||
nxt_sendbuf_completion(nxt_task_t *task, nxt_work_queue_t *wq, nxt_buf_t *b,
|
nxt_sendbuf_completion(nxt_task_t *task, nxt_work_queue_t *wq, nxt_buf_t *b,
|
||||||
size_t sent)
|
size_t sent, nxt_bool_t mmap_mode)
|
||||||
{
|
{
|
||||||
size_t size;
|
size_t size;
|
||||||
|
|
||||||
@@ -391,7 +391,7 @@ nxt_sendbuf_completion(nxt_task_t *task, nxt_work_queue_t *wq, nxt_buf_t *b,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nxt_buf_is_port_mmap(b)) {
|
if (nxt_buf_is_port_mmap(b) && mmap_mode) {
|
||||||
/*
|
/*
|
||||||
* buffer has been sent to other side which is now
|
* buffer has been sent to other side which is now
|
||||||
* responsible for shared memory bucket release
|
* responsible for shared memory bucket release
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ ssize_t nxt_sendbuf_copy_coalesce(nxt_conn_t *c, nxt_buf_mem_t *bm,
|
|||||||
|
|
||||||
nxt_buf_t *nxt_sendbuf_update(nxt_buf_t *b, size_t sent);
|
nxt_buf_t *nxt_sendbuf_update(nxt_buf_t *b, size_t sent);
|
||||||
nxt_buf_t *nxt_sendbuf_completion(nxt_task_t *task, nxt_work_queue_t *wq,
|
nxt_buf_t *nxt_sendbuf_completion(nxt_task_t *task, nxt_work_queue_t *wq,
|
||||||
nxt_buf_t *b, size_t sent);
|
nxt_buf_t *b, size_t sent, nxt_bool_t mmap_mode);
|
||||||
|
|
||||||
|
|
||||||
#endif /* _NXT_SENDBUF_H_INCLUDED_ */
|
#endif /* _NXT_SENDBUF_H_INCLUDED_ */
|
||||||
|
|||||||
Reference in New Issue
Block a user