if(multi_ischanged(multi, TRUE))
process_pending_handles(multi);
- if(!returncode)
+ if(!returncode && CURL_MNTFY_HAS_ENTRIES(multi))
returncode = Curl_mntfy_dispatch_all(multi);
/*
if(multi_ischanged(multi, TRUE))
process_pending_handles(multi);
- if(!mresult)
+ if(!mresult && CURL_MNTFY_HAS_ENTRIES(multi))
mresult = Curl_mntfy_dispatch_all(multi);
if(running_handles) {
mntfy_chunk_append(tail, data, (uint32_t)type);
else
multi->ntfy.failure = CURLM_OUT_OF_MEMORY;
+ multi->ntfy.has_entries = TRUE;
}
}
multi->ntfy.failure = CURLM_OK; /* reset, once delivered */
return mresult;
}
+ else
+ multi->ntfy.has_entries = FALSE;
return CURLM_OK;
}
curl_notify_callback ntfy_cb;
void *ntfy_cb_data;
struct uint32_bset enabled;
- CURLMcode failure;
struct mntfy_chunk *head;
struct mntfy_chunk *tail;
+ CURLMcode failure;
+ BIT(has_entries);
};
void Curl_mntfy_init(struct Curl_multi *multi);
Curl_mntfy_add((d), (t)); \
} while(0)
+#define CURL_MNTFY_HAS_ENTRIES(m) ((m)->ntfy.has_entries)
+
CURLMcode Curl_mntfy_dispatch_all(struct Curl_multi *multi);
#endif /* HEADER_CURL_MULTI_NTFY_H */