mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-11-04 18:18:56 +01:00
gsocketlistener: Factor out code to add sockets to internal structures
This introduces no functional differences, just makes some upcoming changes clearer. Signed-off-by: Philip Withnall <pwithnall@gnome.org> Helps: #3739
This commit is contained in:
@@ -239,6 +239,19 @@ check_listener (GSocketListener *listener,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
add_socket (GSocketListener *listener,
|
||||||
|
GSocket *socket,
|
||||||
|
GObject *source_object)
|
||||||
|
{
|
||||||
|
if (source_object)
|
||||||
|
g_object_set_qdata_full (G_OBJECT (socket), source_quark,
|
||||||
|
g_object_ref (source_object),
|
||||||
|
g_object_unref);
|
||||||
|
|
||||||
|
g_ptr_array_add (listener->priv->sockets, g_object_ref (socket));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* g_socket_listener_add_socket:
|
* g_socket_listener_add_socket:
|
||||||
* @listener: a #GSocketListener
|
* @listener: a #GSocketListener
|
||||||
@@ -282,13 +295,7 @@ g_socket_listener_add_socket (GSocketListener *listener,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_object_ref (socket);
|
add_socket (listener, socket, source_object);
|
||||||
g_ptr_array_add (listener->priv->sockets, socket);
|
|
||||||
|
|
||||||
if (source_object)
|
|
||||||
g_object_set_qdata_full (G_OBJECT (socket), source_quark,
|
|
||||||
g_object_ref (source_object), g_object_unref);
|
|
||||||
|
|
||||||
|
|
||||||
if (G_SOCKET_LISTENER_GET_CLASS (listener)->changed)
|
if (G_SOCKET_LISTENER_GET_CLASS (listener)->changed)
|
||||||
G_SOCKET_LISTENER_GET_CLASS (listener)->changed (listener);
|
G_SOCKET_LISTENER_GET_CLASS (listener)->changed (listener);
|
||||||
@@ -502,11 +509,6 @@ g_socket_listener_add_inet_port (GSocketListener *listener,
|
|||||||
g_signal_emit (listener, signals[EVENT], 0,
|
g_signal_emit (listener, signals[EVENT], 0,
|
||||||
G_SOCKET_LISTENER_LISTENED, socket6);
|
G_SOCKET_LISTENER_LISTENED, socket6);
|
||||||
|
|
||||||
if (source_object)
|
|
||||||
g_object_set_qdata_full (G_OBJECT (socket6), source_quark,
|
|
||||||
g_object_ref (source_object),
|
|
||||||
g_object_unref);
|
|
||||||
|
|
||||||
/* If this socket already speaks IPv4 then we are done. */
|
/* If this socket already speaks IPv4 then we are done. */
|
||||||
if (g_socket_speaks_ipv4 (socket6))
|
if (g_socket_speaks_ipv4 (socket6))
|
||||||
need_ipv4_socket = FALSE;
|
need_ipv4_socket = FALSE;
|
||||||
@@ -568,11 +570,6 @@ g_socket_listener_add_inet_port (GSocketListener *listener,
|
|||||||
{
|
{
|
||||||
g_signal_emit (listener, signals[EVENT], 0,
|
g_signal_emit (listener, signals[EVENT], 0,
|
||||||
G_SOCKET_LISTENER_LISTENED, socket4);
|
G_SOCKET_LISTENER_LISTENED, socket4);
|
||||||
|
|
||||||
if (source_object)
|
|
||||||
g_object_set_qdata_full (G_OBJECT (socket4), source_quark,
|
|
||||||
g_object_ref (source_object),
|
|
||||||
g_object_unref);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -612,10 +609,10 @@ g_socket_listener_add_inet_port (GSocketListener *listener,
|
|||||||
g_assert (socket6 != NULL || socket4 != NULL);
|
g_assert (socket6 != NULL || socket4 != NULL);
|
||||||
|
|
||||||
if (socket6 != NULL)
|
if (socket6 != NULL)
|
||||||
g_ptr_array_add (listener->priv->sockets, socket6);
|
add_socket (listener, socket6, source_object);
|
||||||
|
|
||||||
if (socket4 != NULL)
|
if (socket4 != NULL)
|
||||||
g_ptr_array_add (listener->priv->sockets, socket4);
|
add_socket (listener, socket4, source_object);
|
||||||
|
|
||||||
if (G_SOCKET_LISTENER_GET_CLASS (listener)->changed)
|
if (G_SOCKET_LISTENER_GET_CLASS (listener)->changed)
|
||||||
G_SOCKET_LISTENER_GET_CLASS (listener)->changed (listener);
|
G_SOCKET_LISTENER_GET_CLASS (listener)->changed (listener);
|
||||||
@@ -623,6 +620,9 @@ g_socket_listener_add_inet_port (GSocketListener *listener,
|
|||||||
g_clear_error (&socket6_listen_error);
|
g_clear_error (&socket6_listen_error);
|
||||||
g_clear_error (&socket4_listen_error);
|
g_clear_error (&socket4_listen_error);
|
||||||
|
|
||||||
|
g_clear_object (&socket6);
|
||||||
|
g_clear_object (&socket4);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1263,12 +1263,7 @@ g_socket_listener_add_any_inet_port (GSocketListener *listener,
|
|||||||
g_signal_emit (listener, signals[EVENT], 0,
|
g_signal_emit (listener, signals[EVENT], 0,
|
||||||
G_SOCKET_LISTENER_LISTENED, socket6);
|
G_SOCKET_LISTENER_LISTENED, socket6);
|
||||||
|
|
||||||
if (source_object)
|
add_socket (listener, socket6, source_object);
|
||||||
g_object_set_qdata_full (G_OBJECT (socket6), source_quark,
|
|
||||||
g_object_ref (source_object),
|
|
||||||
g_object_unref);
|
|
||||||
|
|
||||||
g_ptr_array_add (listener->priv->sockets, socket6);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1288,12 +1283,7 @@ g_socket_listener_add_any_inet_port (GSocketListener *listener,
|
|||||||
g_signal_emit (listener, signals[EVENT], 0,
|
g_signal_emit (listener, signals[EVENT], 0,
|
||||||
G_SOCKET_LISTENER_LISTENED, socket4);
|
G_SOCKET_LISTENER_LISTENED, socket4);
|
||||||
|
|
||||||
if (source_object)
|
add_socket (listener, socket4, source_object);
|
||||||
g_object_set_qdata_full (G_OBJECT (socket4), source_quark,
|
|
||||||
g_object_ref (source_object),
|
|
||||||
g_object_unref);
|
|
||||||
|
|
||||||
g_ptr_array_add (listener->priv->sockets, socket4);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1327,5 +1317,8 @@ g_socket_listener_add_any_inet_port (GSocketListener *listener,
|
|||||||
G_SOCKET_LISTENER_GET_CLASS (listener)->changed)
|
G_SOCKET_LISTENER_GET_CLASS (listener)->changed)
|
||||||
G_SOCKET_LISTENER_GET_CLASS (listener)->changed (listener);
|
G_SOCKET_LISTENER_GET_CLASS (listener)->changed (listener);
|
||||||
|
|
||||||
|
g_clear_object (&socket6);
|
||||||
|
g_clear_object (&socket4);
|
||||||
|
|
||||||
return candidate_port;
|
return candidate_port;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user