summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Griffis <pgriffis@igalia.com>2020-03-24 23:21:09 -0700
committerPatrick Griffis <pgriffis@igalia.com>2020-09-19 15:41:24 -0700
commit685c40044da48b99cd2c8a6c08a1584d18e0d959 (patch)
tree56df62da9274dd27005e55154aa57a4f43df2561
parenta343cb084c4b5a69e7157fc66c675c136bcfc76a (diff)
downloadlibsoup-685c40044da48b99cd2c8a6c08a1584d18e0d959.tar.gz
Delete SoupSocket::fd and all fd exposing APIs
-rw-r--r--docs/reference/libsoup-2.4-sections.txt2
-rw-r--r--libsoup/soup-server.c49
-rw-r--r--libsoup/soup-server.h5
-rw-r--r--libsoup/soup-socket-private.h1
-rw-r--r--libsoup/soup-socket.c62
-rw-r--r--libsoup/soup-socket.h3
-rw-r--r--tests/connection-test.c5
-rw-r--r--tests/server-test.c2
-rw-r--r--tests/socket-test.c27
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 cae424f5..cd1ed736 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);