summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Hergert <chergert@redhat.com>2016-05-04 10:40:50 +0300
committerAllison Ryan Lortie <desrt@desrt.ca>2016-05-10 10:56:15 +0200
commit1d746b6c949b82c98c0a60dd500e6d7acb4317ca (patch)
treeb4daf520c7a61d957a2c862bba47591756766c30
parent6a892726d1c12d9c58fca7ab5579b33e572acc85 (diff)
downloadglib-1d746b6c949b82c98c0a60dd500e6d7acb4317ca.tar.gz
socket: set fd field to -1 after closing socket
This ensures that g_socket_get_fd() will return -1 after the socket has been closed. https://bugzilla.gnome.org/show_bug.cgi?id=765959
-rw-r--r--gio/gsocket.c1
-rw-r--r--gio/tests/socket.c4
2 files changed, 5 insertions, 0 deletions
diff --git a/gio/gsocket.c b/gio/gsocket.c
index e7f210139..4961f6f51 100644
--- a/gio/gsocket.c
+++ b/gio/gsocket.c
@@ -3285,6 +3285,7 @@ g_socket_close (GSocket *socket,
break;
}
+ socket->priv->fd = -1;
socket->priv->connected_read = FALSE;
socket->priv->connected_write = FALSE;
socket->priv->closed = TRUE;
diff --git a/gio/tests/socket.c b/gio/tests/socket.c
index a5b25731f..1dba97048 100644
--- a/gio/tests/socket.c
+++ b/gio/tests/socket.c
@@ -1197,6 +1197,10 @@ test_fd_reuse (void)
g_socket_close (data->server, &error);
g_assert_no_error (error);
+ g_assert_cmpint (g_socket_get_fd (client), ==, -1);
+ g_assert_cmpint (g_socket_get_fd (client2), ==, -1);
+ g_assert_cmpint (g_socket_get_fd (data->server), ==, -1);
+
g_object_unref (data->server);
g_object_unref (client);
g_object_unref (client2);