From 4b3f4b582222bde764a6f6c6756ff662b35ad964 Mon Sep 17 00:00:00 2001 From: Peter Lieven Date: Mon, 14 Jul 2014 08:02:24 +0200 Subject: [PATCH] iscsi_which_events: do not set POLLOUT if context is corked if the socket is corked we otherwise set POLLOUT and then do not sent. Depending on the event loop implementation this can result in a busy wait. Signed-off-by: Peter Lieven --- lib/socket.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/socket.c b/lib/socket.c index 9844084..73f926a 100644 --- a/lib/socket.c +++ b/lib/socket.c @@ -383,8 +383,10 @@ iscsi_which_events(struct iscsi_context *iscsi) { int events = iscsi->is_connected ? POLLIN : POLLOUT; - if (iscsi->outqueue_current != NULL || (iscsi->outqueue != NULL && iscsi_serial32_compare(iscsi->outqueue->cmdsn, iscsi->maxcmdsn) <= 0)) { - events |= POLLOUT; + if (iscsi->outqueue_current != NULL || + (iscsi->outqueue != NULL && !iscsi->is_corked && + iscsi_serial32_compare(iscsi->outqueue->cmdsn, iscsi->maxcmdsn) <= 0)) { + events |= POLLOUT; } return events; }