tcp_io: place write_monitor=0 before queue_resume_callback to prevent busy-loop when waiter_defer=1
This commit is contained in:
1 parent
0ef7ee597c
commit
5ca0bbf9e7
1 file changed
+2
-2
+2
-2
@@ -386,11 +386,11 @@ static void write_cb(socket_t sock, void* arg) {
|
||||
if (flush_write_buf(tc)) return;
|
||||
if (!tc->write_buf) {
|
||||
DEBUG_TRACE(DEBUG_CATEGORY_SOCKET, "tcp_io: write_cb flushed fd=%d wmon=%d (resume WQ cb)", (int)tc->sock, tc->write_monitor);
|
||||
queue_resume_callback(tc->write_queue);
|
||||
if (tc->write_queue->waiter_defer && tc->write_monitor) {
|
||||
if (tc->write_queue->waiter_defer) {
|
||||
uasync_set_socket_write(tc->ua, tc->socket_id, 0);
|
||||
tc->write_monitor = 0;
|
||||
}
|
||||
queue_resume_callback(tc->write_queue);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user