diff options
author | Patrick Griffis <pgriffis@igalia.com> | 2020-03-24 23:21:09 -0700 |
---|---|---|
committer | Patrick Griffis <pgriffis@igalia.com> | 2020-08-24 16:43:46 -0700 |
commit | 65e01262f7efb93cc2aa1e6b579f46fbffa9b465 (patch) | |
tree | afbedadf1e1f4207c94df460aed9ab3fc7538ca9 | |
parent | d8536a6a2cc0a9a3db6fc048fc07fe8f388ddb4a (diff) | |
download | libsoup-65e01262f7efb93cc2aa1e6b579f46fbffa9b465.tar.gz |
Delete SoupSocket::fd and all fd exposing APIs
-rw-r--r-- | docs/reference/libsoup-2.4-sections.txt | 2 | ||||
-rw-r--r-- | libsoup/soup-server.c | 49 | ||||
-rw-r--r-- | libsoup/soup-server.h | 5 | ||||
-rw-r--r-- | libsoup/soup-socket-private.h | 1 | ||||
-rw-r--r-- | libsoup/soup-socket.c | 62 | ||||
-rw-r--r-- | libsoup/soup-socket.h | 3 | ||||
-rw-r--r-- | tests/connection-test.c | 5 | ||||
-rw-r--r-- | tests/server-test.c | 2 | ||||
-rw-r--r-- | tests/socket-test.c | 27 |
9 files changed, 16 insertions, 140 deletions
diff --git a/docs/reference/libsoup-2.4-sections.txt b/docs/reference/libsoup-2.4-sections.txt index d826077e..02d1af95 100644 --- a/docs/reference/libsoup-2.4-sections.txt +++ b/docs/reference/libsoup-2.4-sections.txt @@ -229,7 +229,6 @@ soup_server_listen soup_server_listen_all soup_server_listen_local soup_server_listen_socket -soup_server_listen_fd soup_server_get_listeners soup_server_get_uris soup_server_disconnect @@ -558,7 +557,6 @@ soup_socket_is_connected <SUBSECTION> soup_socket_get_local_address soup_socket_get_remote_address -soup_socket_get_fd <SUBSECTION> SoupSocketIOStatus soup_socket_read diff --git a/libsoup/soup-server.c b/libsoup/soup-server.c index eb2c3530..221c182b 100644 --- a/libsoup/soup-server.c +++ b/libsoup/soup-server.c @@ -1639,55 +1639,6 @@ soup_server_listen_socket (SoupServer *server, GSocket *socket, } /** - * soup_server_listen_fd: - * @server: a #SoupServer - * @fd: the file descriptor of a listening socket - * @options: listening options for this server - * @error: return location for a #GError - * - * This attempts to set up @server to listen for connections on - * @fd. - * - * See soup_server_listen() for more details. - * - * Note that @server will close @fd when you free it or call - * soup_server_disconnect(). - * - * Return value: %TRUE on success, %FALSE if an error occurred (in - * which case @error will be set). - * - * Since: 2.48 - **/ -gboolean -soup_server_listen_fd (SoupServer *server, int fd, - SoupServerListenOptions options, - GError **error) -{ - SoupServerPrivate *priv; - SoupSocket *listener; - gboolean success; - - g_return_val_if_fail (SOUP_IS_SERVER (server), FALSE); - g_return_val_if_fail (!(options & SOUP_SERVER_LISTEN_IPV4_ONLY) && - !(options & SOUP_SERVER_LISTEN_IPV6_ONLY), FALSE); - - priv = soup_server_get_instance_private (server); - g_return_val_if_fail (priv->disposed == FALSE, FALSE); - - listener = g_initable_new (SOUP_TYPE_SOCKET, NULL, error, - SOUP_SOCKET_FD, fd, - SOUP_SOCKET_IPV6_ONLY, TRUE, - NULL); - if (!listener) - return FALSE; - - success = soup_server_listen_internal (server, listener, options, error); - g_object_unref (listener); - - return success; -} - -/** * soup_server_get_uris: * @server: a #SoupServer * diff --git a/libsoup/soup-server.h b/libsoup/soup-server.h index 6dc07a0d..bf1d7e3b 100644 --- a/libsoup/soup-server.h +++ b/libsoup/soup-server.h @@ -97,11 +97,6 @@ gboolean soup_server_listen_socket (SoupServer *server SoupServerListenOptions options, GError **error); SOUP_AVAILABLE_IN_2_48 -gboolean soup_server_listen_fd (SoupServer *server, - int fd, - SoupServerListenOptions options, - GError **error); -SOUP_AVAILABLE_IN_2_48 GSList *soup_server_get_uris (SoupServer *server); SOUP_AVAILABLE_IN_2_48 GSList *soup_server_get_listeners (SoupServer *server); diff --git a/libsoup/soup-socket-private.h b/libsoup/soup-socket-private.h index efe9affe..06e9a35e 100644 --- a/libsoup/soup-socket-private.h +++ b/libsoup/soup-socket-private.h @@ -9,7 +9,6 @@ #include "soup-socket.h" #define SOUP_SOCKET_SOCKET_PROPERTIES "socket-properties" -#define SOUP_SOCKET_FD "fd" #define SOUP_SOCKET_GSOCKET "gsocket" #define SOUP_SOCKET_IOSTREAM "iostream" #define SOUP_SOCKET_IPV6_ONLY "ipv6-only" diff --git a/libsoup/soup-socket.c b/libsoup/soup-socket.c index 21964efc..2dead3c4 100644 --- a/libsoup/soup-socket.c +++ b/libsoup/soup-socket.c @@ -44,7 +44,6 @@ static guint signals[LAST_SIGNAL] = { 0 }; enum { PROP_0, - PROP_FD, PROP_GSOCKET, PROP_IOSTREAM, PROP_LOCAL_ADDRESS, @@ -115,7 +114,6 @@ soup_socket_init (SoupSocket *sock) SoupSocketPrivate *priv = soup_socket_get_instance_private (sock); priv->non_blocking = TRUE; - priv->fd = -1; g_mutex_init (&priv->iolock); priv->async_context = g_main_context_ref_thread_default (); @@ -131,29 +129,10 @@ soup_socket_initable_init (GInitable *initable, if (priv->conn) { g_warn_if_fail (priv->gsock == NULL); - g_warn_if_fail (priv->fd == -1); finish_socket_setup (sock); } - if (priv->fd != -1) { - guint type, len = sizeof (type); - - g_warn_if_fail (priv->gsock == NULL); - - /* GSocket will g_error() this, so we have to check ourselves. */ - if (getsockopt (priv->fd, SOL_SOCKET, SO_TYPE, - (gpointer)&type, (gpointer)&len) == -1) { - g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, - _("Can’t import non-socket as SoupSocket")); - return FALSE; - } - - priv->gsock = g_socket_new_from_fd (priv->fd, error); - if (!priv->gsock) - return FALSE; - } - if (priv->gsock != NULL) { int listening; @@ -277,9 +256,6 @@ soup_socket_set_property (GObject *object, guint prop_id, SoupSocketProperties *props; switch (prop_id) { - case PROP_FD: - priv->fd = g_value_get_int (value); - break; case PROP_GSOCKET: priv->gsock = g_value_dup_object (value); break; @@ -358,9 +334,6 @@ soup_socket_get_property (GObject *object, guint prop_id, SoupSocketPrivate *priv = soup_socket_get_instance_private (sock); switch (prop_id) { - case PROP_FD: - g_value_set_int (value, priv->fd); - break; case PROP_LOCAL_ADDRESS: g_value_set_object (value, soup_socket_get_local_address (sock)); break; @@ -515,14 +488,6 @@ soup_socket_class_init (SoupSocketClass *socket_class) /* properties */ g_object_class_install_property ( - object_class, PROP_FD, - g_param_spec_int (SOUP_SOCKET_FD, - "FD", - "The socket's file descriptor", - -1, G_MAXINT, -1, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - g_object_class_install_property ( object_class, PROP_GSOCKET, g_param_spec_object (SOUP_SOCKET_GSOCKET, "GSocket", @@ -640,9 +605,7 @@ soup_socket_class_init (SoupSocketClass *socket_class) * * Note that for "ordinary" #SoupSockets this will be set for * both listening sockets and the sockets emitted by - * #SoupSocket::new-connection, but for sockets created by - * setting #SoupSocket:fd, it will only be set for listening - * sockets. + * #SoupSocket::new-connection. **/ g_object_class_install_property ( object_class, PROP_IS_SERVER, @@ -1074,29 +1037,6 @@ soup_socket_connect_sync (SoupSocket *sock, GCancellable *cancellable) return socket_legacy_error (sock, error); } -/** - * soup_socket_get_fd: - * @sock: a #SoupSocket - * - * Gets @sock's underlying file descriptor. - * - * Note that fiddling with the file descriptor may break the - * #SoupSocket. - * - * Return value: @sock's file descriptor. - */ -int -soup_socket_get_fd (SoupSocket *sock) -{ - SoupSocketPrivate *priv; - - g_return_val_if_fail (SOUP_IS_SOCKET (sock), -1); - - priv = soup_socket_get_instance_private (sock); - - return g_socket_get_fd (priv->gsock); -} - GSocket * soup_socket_get_gsocket (SoupSocket *sock) { diff --git a/libsoup/soup-socket.h b/libsoup/soup-socket.h index 808719de..a9b61a68 100644 --- a/libsoup/soup-socket.h +++ b/libsoup/soup-socket.h @@ -72,9 +72,6 @@ SOUP_AVAILABLE_IN_2_4 guint soup_socket_connect_sync (SoupSocket *sock, GCancellable *cancellable); SOUP_AVAILABLE_IN_2_4 -int soup_socket_get_fd (SoupSocket *sock); - -SOUP_AVAILABLE_IN_2_4 gboolean soup_socket_listen (SoupSocket *sock); SOUP_AVAILABLE_IN_2_4 diff --git a/tests/connection-test.c b/tests/connection-test.c index d6e4dc6e..27ee74e9 100644 --- a/tests/connection-test.c +++ b/tests/connection-test.c @@ -6,6 +6,7 @@ #include "test-utils.h" #include "soup-connection.h" +#include "soup-socket-private.h" #include <gio/gnetworking.h> @@ -23,12 +24,14 @@ static void close_socket (SoupMessage *msg, gpointer user_data) { SoupSocket *sock = user_data; + GSocket *gsocket; int sockfd; /* Actually calling soup_socket_disconnect() here would cause * us to leak memory, so just shutdown the socket instead. */ - sockfd = soup_socket_get_fd (sock); + gsocket = soup_socket_get_gsocket (sock); + sockfd = g_socket_get_fd (gsocket); #ifdef G_OS_WIN32 shutdown (sockfd, SD_SEND); #else diff --git a/tests/server-test.c b/tests/server-test.c index 47093e08..229a1e98 100644 --- a/tests/server-test.c +++ b/tests/server-test.c @@ -678,7 +678,7 @@ do_fd_import_test (void) g_assert_cmpint (g_slist_length (listeners), ==, 0); g_slist_free (listeners); - soup_server_listen_fd (server, g_socket_get_fd (gsock), 0, &error); + soup_server_listen_socket (server, gsock, 0, &error); g_assert_no_error (error); listeners = soup_server_get_listeners (server); g_assert_cmpint (g_slist_length (listeners), ==, 1); diff --git a/tests/socket-test.c b/tests/socket-test.c index f4e51d6c..0fd20529 100644 --- a/tests/socket-test.c +++ b/tests/socket-test.c @@ -115,6 +115,12 @@ do_unconnected_socket_test (void) g_object_unref (sock); } +static int +socket_get_fd (SoupSocket *socket) +{ + return g_socket_get_fd (soup_socket_get_gsocket (socket)); +} + static void do_socket_from_fd_client_test (void) { @@ -156,7 +162,7 @@ do_socket_from_fd_client_test (void) SOUP_SOCKET_REMOTE_ADDRESS, &remote, SOUP_SOCKET_IS_SERVER, &is_server, NULL); - g_assert_cmpint (soup_socket_get_fd (sock), ==, g_socket_get_fd (gsock)); + g_assert_cmpint (socket_get_fd (sock), ==, g_socket_get_fd (gsock)); g_assert_false (is_server); g_assert_true (soup_socket_is_connected (sock)); @@ -213,7 +219,7 @@ do_socket_from_fd_server_test (void) SOUP_SOCKET_LOCAL_ADDRESS, &local, SOUP_SOCKET_IS_SERVER, &is_server, NULL); - g_assert_cmpint (soup_socket_get_fd (sock), ==, g_socket_get_fd (gsock)); + g_assert_cmpint (socket_get_fd (sock), ==, g_socket_get_fd (gsock)); g_assert_true (is_server); g_assert_true (soup_socket_is_connected (sock)); @@ -238,21 +244,8 @@ do_socket_from_fd_bad_test (void) GInetSocketAddress *local, *remote; GSocketAddress *gaddr; gboolean is_server; - int fd; GError *error = NULL; - /* Importing a non-socket fd gives an error */ - fd = open (g_test_get_filename (G_TEST_DIST, "test-cert.pem", NULL), O_RDONLY); - g_assert_cmpint (fd, !=, -1); - - sock = g_initable_new (SOUP_TYPE_SOCKET, NULL, &error, - SOUP_SOCKET_FD, fd, - NULL); - g_assert_error (error, G_IO_ERROR, G_IO_ERROR_FAILED); - g_clear_error (&error); - g_assert_null (sock); - close (fd); - /* Importing an unconnected socket gives an error */ gsock = g_socket_new (G_SOCKET_FAMILY_IPV4, G_SOCKET_TYPE_STREAM, @@ -262,7 +255,7 @@ do_socket_from_fd_bad_test (void) g_assert_false (g_socket_is_connected (gsock)); sock = g_initable_new (SOUP_TYPE_SOCKET, NULL, &error, - SOUP_SOCKET_FD, g_socket_get_fd (gsock), + SOUP_SOCKET_GSOCKET, gsock, NULL); g_assert_error (error, G_IO_ERROR, G_IO_ERROR_FAILED); g_clear_error (&error); @@ -314,7 +307,7 @@ do_socket_from_fd_bad_test (void) SOUP_SOCKET_REMOTE_ADDRESS, &remote, SOUP_SOCKET_IS_SERVER, &is_server, NULL); - g_assert_cmpint (soup_socket_get_fd (sock2), ==, g_socket_get_fd (gsock2)); + g_assert_cmpint (socket_get_fd (sock2), ==, g_socket_get_fd (gsock2)); g_assert_true (soup_socket_is_connected (sock2)); /* This is wrong, but can't be helped. */ g_assert_false (is_server); |