aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/glib_compat.h12
-rw-r--r--src/input/curl_input_plugin.c17
2 files changed, 17 insertions, 12 deletions
diff --git a/src/glib_compat.h b/src/glib_compat.h
index f35576fa..330c9e77 100644
--- a/src/glib_compat.h
+++ b/src/glib_compat.h
@@ -97,4 +97,16 @@ g_set_error_literal(GError **err, GQuark domain, gint code,
#endif
+#if !GLIB_CHECK_VERSION(2,28,0)
+
+static inline gint64
+g_source_get_time(GSource *source)
+{
+ GTimeVal tv;
+ g_source_get_current_time(source, &tv);
+ return tv.tv_sec * 1000000 + tv.tv_usec;
+}
+
+#endif
+
#endif
diff --git a/src/input/curl_input_plugin.c b/src/input/curl_input_plugin.c
index 88a5556d..3f191141 100644
--- a/src/input/curl_input_plugin.c
+++ b/src/input/curl_input_plugin.c
@@ -161,7 +161,7 @@ static struct {
* The absolute time stamp when the timeout expires. This is
* used in the GSource method check().
*/
- GTimeVal absolute_timeout;
+ gint64 absolute_timeout;
#endif
} curl;
@@ -551,12 +551,9 @@ input_curl_source_prepare(G_GNUC_UNUSED GSource *source, gint *timeout_r)
long timeout2;
CURLMcode mcode = curl_multi_timeout(curl.multi, &timeout2);
if (mcode == CURLM_OK) {
- if (timeout2 >= 0) {
- g_source_get_current_time(source,
- &curl.absolute_timeout);
- g_time_val_add(&curl.absolute_timeout,
- timeout2 * 1000);
- }
+ if (timeout2 >= 0)
+ curl.absolute_timeout = g_source_get_time(source)
+ + timeout2 * 1000;
if (timeout2 >= 0 && timeout2 < 10)
/* CURL 7.21.1 likes to report "timeout=0",
@@ -590,11 +587,7 @@ input_curl_source_check(G_GNUC_UNUSED GSource *source)
curl_multi_perform(), even if there was no file
descriptor event */
- GTimeVal now;
- g_source_get_current_time(source, &now);
- if (now.tv_sec > curl.absolute_timeout.tv_sec ||
- (now.tv_sec == curl.absolute_timeout.tv_sec &&
- now.tv_usec >= curl.absolute_timeout.tv_usec))
+ if (g_source_get_time(source) >= curl.absolute_timeout)
return true;
}
#endif