[libsoup] soup-server: add non-GSocket fallbacks for client context
- From: Marc-Andre Lureau <malureau src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libsoup] soup-server: add non-GSocket fallbacks for client context
- Date: Fri, 20 Feb 2015 23:18:30 +0000 (UTC)
commit 1d03dc888f0d73416a0cbc1ade3242f87fd21780
Author: Marc-André Lureau <marcandre lureau gmail com>
Date: Wed Feb 18 17:51:01 2015 +0100
soup-server: add non-GSocket fallbacks for client context
If the SoupSocket doesn't have a GSocket, it may still have addresses
filled.
https://bugzilla.gnome.org/show_bug.cgi?id=744186
libsoup/soup-server.c | 24 ++++++++++++++++++++----
1 files changed, 20 insertions(+), 4 deletions(-)
---
diff --git a/libsoup/soup-server.c b/libsoup/soup-server.c
index b88e485..69cd48f 100644
--- a/libsoup/soup-server.c
+++ b/libsoup/soup-server.c
@@ -2146,10 +2146,18 @@ soup_client_context_get_address (SoupClientContext *client)
GSocketAddress *
soup_client_context_get_remote_address (SoupClientContext *client)
{
+ GSocket *sock;
+
g_return_val_if_fail (client != NULL, NULL);
- if (!client->remote_addr)
- client->remote_addr = g_socket_get_remote_address (soup_client_context_get_gsocket (client),
NULL);
+ if (client->remote_addr)
+ return client->remote_addr;
+
+ sock = soup_client_context_get_gsocket (client);
+ client->remote_addr = sock ?
+ g_socket_get_remote_address (sock, NULL) :
+ soup_address_get_gsockaddr (soup_socket_get_remote_address (client->sock));
+
return client->remote_addr;
}
@@ -2169,10 +2177,18 @@ soup_client_context_get_remote_address (SoupClientContext *client)
GSocketAddress *
soup_client_context_get_local_address (SoupClientContext *client)
{
+ GSocket *sock;
+
g_return_val_if_fail (client != NULL, NULL);
- if (!client->local_addr)
- client->local_addr = g_socket_get_local_address (soup_client_context_get_gsocket (client),
NULL);
+ if (client->local_addr)
+ return client->local_addr;
+
+ sock = soup_client_context_get_gsocket (client);
+ client->local_addr = sock ?
+ g_socket_get_local_address (sock, NULL) :
+ soup_address_get_gsockaddr (soup_socket_get_local_address (client->sock));
+
return client->local_addr;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]