summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Georg <mail@jensge.org>2021-07-25 11:44:27 +0200
committerJens Georg <mail@jensge.org>2021-10-28 17:47:09 +0200
commite223e6f75e370c3d9b2b402586521fe005f1a0da (patch)
tree67a2a033950a3cc19552ee49c963b07bfb6fc257
parentb5ed6be7afa44102cb0484106af2fa5676e51d68 (diff)
downloadgssdp-e223e6f75e370c3d9b2b402586521fe005f1a0da.tar.gz
Port GSSDP to libsoup3 API
-rw-r--r--libgssdp/gssdp-client.c7
-rw-r--r--libgssdp/gssdp-resource-browser.c16
-rw-r--r--libgssdp/gssdp-resource-group.c7
-rw-r--r--meson.build8
4 files changed, 17 insertions, 21 deletions
diff --git a/libgssdp/gssdp-client.c b/libgssdp/gssdp-client.c
index c9f6e90..5531d98 100644
--- a/libgssdp/gssdp-client.c
+++ b/libgssdp/gssdp-client.c
@@ -1533,7 +1533,7 @@ parse_http_request (char *buf,
return TRUE;
} else {
- soup_message_headers_free (*headers);
+ soup_message_headers_unref (*headers);
*headers = NULL;
g_free (path);
@@ -1564,8 +1564,7 @@ parse_http_response (char *buf,
return TRUE;
} else {
- soup_message_headers_free (*headers);
- *headers = NULL;
+ g_clear_pointer (headers, soup_message_headers_unref);
return FALSE;
}
@@ -1745,7 +1744,7 @@ out:
g_free (ip_string);
- g_clear_pointer (&headers, soup_message_headers_free);
+ g_clear_pointer (&headers, soup_message_headers_unref);
g_clear_object (&address);
if (messages) {
diff --git a/libgssdp/gssdp-resource-browser.c b/libgssdp/gssdp-resource-browser.c
index 7ebc08a..af1a264 100644
--- a/libgssdp/gssdp-resource-browser.c
+++ b/libgssdp/gssdp-resource-browser.c
@@ -878,17 +878,13 @@ resource_available (GSSDPResourceBrowser *resource_browser,
expires = soup_message_headers_get_one (headers, "Expires");
if (expires) {
- SoupDate *soup_exp_time;
- time_t exp_time, cur_time;
+ GDateTime *exp_time;
- soup_exp_time = soup_date_new_from_string (expires);
- exp_time = soup_date_to_time_t (soup_exp_time);
- soup_date_free (soup_exp_time);
+ exp_time = soup_date_time_new_from_http_string (expires);
+ GDateTime *now = g_date_time_new_now_local ();
- cur_time = time (NULL);
-
- if (exp_time > cur_time)
- timeout = exp_time - cur_time;
+ if (g_date_time_compare (now, exp_time) == 1)
+ timeout = g_date_time_difference (now, exp_time) / 1000 / 1000;
else {
g_warning ("Invalid 'Expires' header. Assuming "
"default max-age of %d.\n"
@@ -898,6 +894,8 @@ resource_available (GSSDPResourceBrowser *resource_browser,
timeout = SSDP_DEFAULT_MAX_AGE;
}
+ g_date_time_unref (exp_time);
+ g_date_time_unref (now);
} else {
g_warning ("No 'Cache-Control' nor any 'Expires' "
"header was specified. Assuming default "
diff --git a/libgssdp/gssdp-resource-group.c b/libgssdp/gssdp-resource-group.c
index 66cf508..64451f0 100644
--- a/libgssdp/gssdp-resource-group.c
+++ b/libgssdp/gssdp-resource-group.c
@@ -1012,7 +1012,6 @@ discovery_response_timeout (gpointer user_data)
{
DiscoveryResponse *response = user_data;
GSSDPClient *client;
- SoupDate *date;
char *al, *date_str, *message;
guint max_age;
char *usn;
@@ -1030,9 +1029,9 @@ discovery_response_timeout (gpointer user_data)
usn = construct_usn (response->resource->usn,
response->target,
response->resource->target);
- date = soup_date_new_from_now (0);
- date_str = soup_date_to_string (date, SOUP_DATE_HTTP);
- soup_date_free (date);
+ GDateTime *date = g_date_time_new_now_local ();
+ date_str = soup_date_time_to_string (date, SOUP_DATE_HTTP);
+ g_date_time_unref (date);
message = g_strdup_printf (SSDP_DISCOVERY_RESPONSE,
(char *) response->resource->locations->data,
diff --git a/meson.build b/meson.build
index e58a940..71dab96 100644
--- a/meson.build
+++ b/meson.build
@@ -42,10 +42,10 @@ conf.set('HAVE_SIOCGIFINDEX', siocgifindex_available)
getipnettable2_available = cc.compiles(files('build-aux/getipnettable2-test.c'), args: '-liphlpapi', name: 'GetIpNetTable2 is available')
conf.set('HAVE_GETIPNETTABLE2', getipnettable2_available)
+glib_version = '2.69'
+conf.set('GLIB_VERSION_MIN_REQUIRED', 'GLIB_VERSION_2_70'.format(glib_version.underscorify()))
+conf.set('GLIB_VERSION_MAX_ALLOWED', 'GLIB_VERSION_2_70'.format(glib_version.underscorify()))
-glib_version = '2.54'
-conf.set('GLIB_VERSION_MIN_REQUIRED', 'GLIB_VERSION_@0@'.format(glib_version.underscorify()))
-conf.set('GLIB_VERSION_MAX_ALLOWED', 'GLIB_VERSION_@0@'.format(glib_version.underscorify()))
# Generate config.h, so all config has to be set up until here
@@ -76,7 +76,7 @@ dependencies = [
dependency('glib-2.0', version : '>= ' + glib_version),
dependency('gobject-2.0', version : '>= ' + glib_version),
dependency('gio-2.0', version : '>= ' + glib_version),
- dependency('libsoup-2.4', version : '>= 2.26.1')
+ dependency('libsoup-3.0', version : '>= 2.99.0')
]
subdir('libgssdp')