diff options
author | Patrick Griffis <pgriffis@igalia.com> | 2020-08-24 16:42:52 -0700 |
---|---|---|
committer | Patrick Griffis <pgriffis@igalia.com> | 2020-09-19 15:41:24 -0700 |
commit | c8a211c04ee8f6c87a797f0f756360916e737325 (patch) | |
tree | 8991027260cdde73581a84f6706e090c63222234 | |
parent | 1618e3a53539b32b435d7c7a00bb4b84418d6224 (diff) | |
download | libsoup-c8a211c04ee8f6c87a797f0f756360916e737325.tar.gz |
Remove hostname arg from soup_socket_start_proxy_ssl()
The socket already stores the remote connectable which has
the hostname.
-rw-r--r-- | libsoup/soup-connection.c | 7 | ||||
-rw-r--r-- | libsoup/soup-socket-private.h | 2 | ||||
-rw-r--r-- | libsoup/soup-socket.c | 36 | ||||
-rw-r--r-- | libsoup/soup-socket.h | 1 |
4 files changed, 11 insertions, 35 deletions
diff --git a/libsoup/soup-connection.c b/libsoup/soup-connection.c index fb6eac40..df2cdb59 100644 --- a/libsoup/soup-connection.c +++ b/libsoup/soup-connection.c @@ -374,7 +374,7 @@ socket_connect_complete (GObject *object, GAsyncResult *result, gpointer user_da priv->proxy_uri = soup_socket_get_http_proxy_uri (sock); if (priv->ssl && !priv->proxy_uri) { - soup_socket_handshake_async (sock, priv->remote_uri->host, + soup_socket_handshake_async (sock, g_task_get_cancellable (task), socket_handshake_complete, task); return; @@ -468,7 +468,6 @@ soup_connection_connect_sync (SoupConnection *conn, if (priv->ssl && !priv->proxy_uri) { if (!soup_socket_handshake_sync (priv->socket, - priv->remote_uri->host, cancellable, error)) return FALSE; } @@ -506,7 +505,7 @@ soup_connection_start_ssl_sync (SoupConnection *conn, g_return_val_if_fail (SOUP_IS_CONNECTION (conn), FALSE); priv = soup_connection_get_instance_private (conn); - if (soup_socket_handshake_sync (priv->socket, priv->remote_uri->host, + if (soup_socket_handshake_sync (priv->socket, cancellable, error)) { soup_connection_event (conn, G_SOCKET_CLIENT_COMPLETE, NULL); return TRUE; @@ -544,7 +543,7 @@ soup_connection_start_ssl_async (SoupConnection *conn, task = g_task_new (conn, cancellable, callback, user_data); - soup_socket_handshake_async (priv->socket, priv->remote_uri->host, + soup_socket_handshake_async (priv->socket, cancellable, start_ssl_completed, task); } diff --git a/libsoup/soup-socket-private.h b/libsoup/soup-socket-private.h index cd1ed736..9384de58 100644 --- a/libsoup/soup-socket-private.h +++ b/libsoup/soup-socket-private.h @@ -25,11 +25,9 @@ gboolean soup_socket_connect_finish_internal (SoupSocket *sock, GError **error); gboolean soup_socket_handshake_sync (SoupSocket *sock, - const char *host, GCancellable *cancellable, GError **error); void soup_socket_handshake_async (SoupSocket *sock, - const char *host, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); diff --git a/libsoup/soup-socket.c b/libsoup/soup-socket.c index b7b41b5d..b876b6a8 100644 --- a/libsoup/soup-socket.c +++ b/libsoup/soup-socket.c @@ -66,7 +66,7 @@ enum { typedef struct { GInetSocketAddress *local_addr, *remote_addr; - GSocketConnectable *remote_connectable; + GSocketConnectable *remote_connectable; GIOStream *conn, *iostream; GSocket *gsock; GInputStream *istream; @@ -1132,7 +1132,7 @@ listen_watch (GObject *pollable, gpointer data) finish_socket_setup (new); if (new_priv->ssl_creds) { - if (!soup_socket_start_proxy_ssl (new, NULL, NULL)) { + if (!soup_socket_start_proxy_ssl (new, NULL)) { g_object_unref (new); return TRUE; } @@ -1258,7 +1258,6 @@ soup_socket_accept_certificate (GTlsConnection *conn, GTlsCertificate *cert, static gboolean soup_socket_setup_ssl (SoupSocket *sock, - const char *ssl_host, GCancellable *cancellable, GError **error) { @@ -1275,18 +1274,15 @@ soup_socket_setup_ssl (SoupSocket *sock, if (!priv->is_server) { GTlsClientConnection *conn; - GSocketConnectable *identity; - identity = g_network_address_new (ssl_host, 0); conn = g_initable_new (g_tls_backend_get_client_connection_type (backend), cancellable, error, "base-io-stream", priv->conn, - "server-identity", identity, + "server-identity", priv->remote_connectable, "database", priv->ssl_creds, "require-close-notify", FALSE, "use-ssl3", priv->ssl_fallback, NULL); - g_object_unref (identity); if (!conn) return FALSE; @@ -1349,21 +1345,7 @@ soup_socket_setup_ssl (SoupSocket *sock, gboolean soup_socket_start_ssl (SoupSocket *sock, GCancellable *cancellable) { - SoupSocketPrivate *priv = soup_socket_get_instance_private (sock); - char *hostname = NULL; - gboolean ret; - - if (G_IS_NETWORK_ADDRESS (priv->remote_connectable)) - hostname = g_strdup (g_network_address_get_hostname (G_NETWORK_ADDRESS (priv->remote_connectable))); - else if (G_IS_INET_SOCKET_ADDRESS (priv->remote_connectable)) { - GInetAddress *addr = g_inet_socket_address_get_address (G_INET_SOCKET_ADDRESS (priv->remote_connectable)); - hostname = g_inet_address_to_string (addr); - } else - g_assert_not_reached (); - - ret = soup_socket_setup_ssl (sock, hostname, cancellable, NULL); - g_free (hostname); - return ret; + return soup_socket_setup_ssl (sock, cancellable, NULL); } /** @@ -1378,21 +1360,20 @@ soup_socket_start_ssl (SoupSocket *sock, GCancellable *cancellable) * Return value: success or failure **/ gboolean -soup_socket_start_proxy_ssl (SoupSocket *sock, const char *ssl_host, +soup_socket_start_proxy_ssl (SoupSocket *sock, GCancellable *cancellable) { - return soup_socket_setup_ssl (sock, ssl_host, cancellable, NULL); + return soup_socket_setup_ssl (sock, cancellable, NULL); } gboolean soup_socket_handshake_sync (SoupSocket *sock, - const char *ssl_host, GCancellable *cancellable, GError **error) { SoupSocketPrivate *priv = soup_socket_get_instance_private (sock); - if (!soup_socket_setup_ssl (sock, ssl_host, cancellable, error)) + if (!soup_socket_setup_ssl (sock, cancellable, error)) return FALSE; soup_socket_event (sock, G_SOCKET_CLIENT_TLS_HANDSHAKING, priv->conn); @@ -1425,7 +1406,6 @@ handshake_async_ready (GObject *source, GAsyncResult *result, gpointer user_data void soup_socket_handshake_async (SoupSocket *sock, - const char *ssl_host, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) @@ -1436,7 +1416,7 @@ soup_socket_handshake_async (SoupSocket *sock, task = g_task_new (sock, cancellable, callback, user_data); - if (!soup_socket_setup_ssl (sock, ssl_host, cancellable, &error)) { + if (!soup_socket_setup_ssl (sock, cancellable, &error)) { g_task_return_error (task, error); g_object_unref (task); return; diff --git a/libsoup/soup-socket.h b/libsoup/soup-socket.h index 033d0620..16c289e5 100644 --- a/libsoup/soup-socket.h +++ b/libsoup/soup-socket.h @@ -72,7 +72,6 @@ gboolean soup_socket_listen (SoupSocket *sock); gboolean soup_socket_start_ssl (SoupSocket *sock, GCancellable *cancellable); gboolean soup_socket_start_proxy_ssl (SoupSocket *sock, - const char *ssl_host, GCancellable *cancellable); gboolean soup_socket_is_ssl (SoupSocket *sock); |