summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Withnall <pwithnall@endlessos.org>2023-04-26 12:53:37 +0100
committerPhilip Withnall <pwithnall@endlessos.org>2023-04-27 12:23:25 +0100
commite73c5ed5e1754205122a7f17838525052fc83e84 (patch)
tree76027ef4f8d53a6261a13e3f1a33845c3dd76f1e
parent1c4384aec58cae002817cc55651fcf32b556143e (diff)
downloadglib-e73c5ed5e1754205122a7f17838525052fc83e84.tar.gz
gresolver: Set timeout on default resolver to 30s
The default for the class is still to have no timeout, but it seems more practical for most use cases to set a non-infinite timeout on the default resolver. If applications have a more specific use case, they can change the timeout or replace the default resolver. See https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3397#note_1731387 Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
-rw-r--r--gio/gresolver.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gio/gresolver.c b/gio/gresolver.c
index ac6fa4f7a..676f1e271 100644
--- a/gio/gresolver.c
+++ b/gio/gresolver.c
@@ -55,6 +55,10 @@
* #GNetworkAddress and #GNetworkService provide wrappers around
* #GResolver functionality that also implement #GSocketConnectable,
* making it easy to connect to a remote host/service.
+ *
+ * The default resolver (see g_resolver_get_default()) has a timeout of 30s set
+ * on it since GLib 2.78. Earlier versions of GLib did not support resolver
+ * timeouts.
*/
typedef enum {
@@ -299,7 +303,9 @@ g_resolver_get_default (void)
G_LOCK (default_resolver);
if (!default_resolver)
- default_resolver = g_object_new (G_TYPE_THREADED_RESOLVER, NULL);
+ default_resolver = g_object_new (G_TYPE_THREADED_RESOLVER,
+ "timeout", 30000,
+ NULL);
ret = g_object_ref (default_resolver);
G_UNLOCK (default_resolver);