[libsoup] soup-server: add non-GSocket fallbacks for client context



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]