diff options
-rw-r--r-- | libsoup/soup-server.c | 22 | ||||
-rw-r--r-- | packaging/libsoup.spec | 2 |
2 files changed, 5 insertions, 19 deletions
diff --git a/libsoup/soup-server.c b/libsoup/soup-server.c index 07d801d1..c6b8ab2f 100644 --- a/libsoup/soup-server.c +++ b/libsoup/soup-server.c @@ -137,6 +137,8 @@ static void free_handler (SoupServerHandler *hand) { g_free (hand->path); + if (hand->destroy) + hand->destroy (hand->user_data); g_slice_free (SoupServerHandler, hand); } @@ -1456,13 +1458,6 @@ soup_server_add_handler (SoupServer *server, priv->default_handler = hand; } -static void -unregister_handler (SoupServerHandler *handler) -{ - if (handler->destroy) - handler->destroy (handler->user_data); -} - /** * soup_server_remove_handler: * @server: a #SoupServer @@ -1474,23 +1469,14 @@ void soup_server_remove_handler (SoupServer *server, const char *path) { SoupServerPrivate *priv; - SoupServerHandler *hand; g_return_if_fail (SOUP_IS_SERVER (server)); priv = SOUP_SERVER_GET_PRIVATE (server); if (!path || !*path || !strcmp (path, "/")) { - if (priv->default_handler) { - unregister_handler (priv->default_handler); - free_handler (priv->default_handler); - priv->default_handler = NULL; - } + g_clear_pointer (&priv->default_handler, free_handler); return; - } - - hand = soup_path_map_lookup (priv->handlers, path); - if (hand && !strcmp (path, hand->path)) { - unregister_handler (hand); + } else { soup_path_map_remove (priv->handlers, path); } } diff --git a/packaging/libsoup.spec b/packaging/libsoup.spec index daeb7634..9aceed29 100644 --- a/packaging/libsoup.spec +++ b/packaging/libsoup.spec @@ -3,7 +3,7 @@ Name: libsoup Version: 2.46.0 -Release: 0 +Release: 1 License: LGPL-2.0+ Summary: HTTP client/server library for GNOME Url: http://www.gnome.org |