From 89ccfa8ddeded0a423d9c1fc832c6b2b3bfee99e Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Mon, 12 Feb 2018 19:16:16 +0100 Subject: [PATCH] connectivity: fix evaluating @what argument of CURLMOPT_SOCKETFUNCTION It's not a bitfields, it's documented to be an enum with 4 possible values. --- src/nm-connectivity.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c index 241fb9b930..ffe350eada 100644 --- a/src/nm-connectivity.c +++ b/src/nm-connectivity.c @@ -274,12 +274,15 @@ multi_socket_cb (CURL *e_handle, curl_socket_t s, int what, void *userdata, void } else nm_clear_g_source (&fdp->ev); - if (what & CURL_POLL_IN) - condition |= G_IO_IN; - if (what & CURL_POLL_OUT) - condition |= G_IO_OUT; + if (what == CURL_POLL_IN) + condition = G_IO_IN; + else if (what == CURL_POLL_OUT) + condition = G_IO_OUT; + else if (condition == CURL_POLL_INOUT) + condition = G_IO_IN | G_IO_OUT; - fdp->ev = g_io_add_watch (fdp->ch, condition, curl_socketevent_cb, self); + if (condition) + fdp->ev = g_io_add_watch (fdp->ch, condition, curl_socketevent_cb, self); curl_multi_assign (priv->curl_mhandle, s, fdp); }