input/curl: query timeout from CURL
Use curl_multi_timeout() to determine the select() timeout, instead of hard-coding one second.
This commit is contained in:
parent
8b055c3127
commit
a4908dca42
@ -241,7 +241,6 @@ input_curl_select(struct input_curl *c)
|
||||
fd_set rfds, wfds, efds;
|
||||
int max_fd, ret;
|
||||
CURLMcode mcode;
|
||||
/* XXX hard coded timeout value.. */
|
||||
struct timeval timeout = {
|
||||
.tv_sec = 1,
|
||||
.tv_usec = 0,
|
||||
@ -262,6 +261,24 @@ input_curl_select(struct input_curl *c)
|
||||
|
||||
assert(max_fd >= 0);
|
||||
|
||||
#if LIBCURL_VERSION_NUM >= 0x070f00
|
||||
long timeout2;
|
||||
mcode = curl_multi_timeout(c->multi, &timeout2);
|
||||
if (mcode != CURLM_OK) {
|
||||
g_warning("curl_multi_timeout() failed: %s\n",
|
||||
curl_multi_strerror(mcode));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (timeout2 >= 0) {
|
||||
if (timeout2 > 10000)
|
||||
timeout2 = 10000;
|
||||
|
||||
timeout.tv_sec = timeout2 / 1000;
|
||||
timeout.tv_usec = (timeout2 % 1000) * 1000;
|
||||
}
|
||||
#endif
|
||||
|
||||
ret = select(max_fd + 1, &rfds, &wfds, &efds, &timeout);
|
||||
if (ret < 0)
|
||||
g_warning("select() failed: %s\n", strerror(errno));
|
||||
|
Loading…
Reference in New Issue
Block a user