[kdbus] KDBUS_ITEM_PAYLOAD_OFF items are (once again) relative to msg header
[platform/upstream/glib.git] / gio / tests / socket.c
index 5cc8ee6..fb8821e 100644 (file)
@@ -275,6 +275,7 @@ test_ip_async (GSocketFamily family)
 
   data = create_server (family, echo_server_thread, FALSE);
   addr = g_socket_get_local_address (data->server, &error);
+  g_assert_no_error (error);
 
   client = g_socket_new (family,
                         G_SOCKET_TYPE_STREAM,
@@ -316,9 +317,23 @@ test_ip_async (GSocketFamily family)
 
   g_thread_join (data->thread);
 
-  len = g_socket_receive (client, buf, sizeof (buf), NULL, &error);
-  g_assert_no_error (error);
-  g_assert_cmpint (len, ==, 0);
+  if (family == G_SOCKET_FAMILY_IPV4)
+    {
+      /* Test that reading on a remote-closed socket gets back 0 bytes. */
+      len = g_socket_receive_with_blocking (client, buf, sizeof (buf),
+                                           TRUE, NULL, &error);
+      g_assert_no_error (error);
+      g_assert_cmpint (len, ==, 0);
+    }
+  else
+    {
+      /* Test that writing to a remote-closed socket gets back CONNECTION_CLOSED. */
+      len = g_socket_send_with_blocking (client, testbuf, strlen (testbuf) + 1,
+                                        TRUE, NULL, &error);
+      g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CONNECTION_CLOSED);
+      g_assert_cmpint (len, ==, -1);
+      g_clear_error (&error);
+    }
 
   g_socket_close (client, &error);
   g_assert_no_error (error);
@@ -361,6 +376,7 @@ test_ip_sync (GSocketFamily family)
 
   data = create_server (family, echo_server_thread, FALSE);
   addr = g_socket_get_local_address (data->server, &error);
+  g_assert_no_error (error);
 
   client = g_socket_new (family,
                         G_SOCKET_TYPE_STREAM,
@@ -404,9 +420,21 @@ test_ip_sync (GSocketFamily family)
 
   g_thread_join (data->thread);
 
-  len = g_socket_receive (client, buf, sizeof (buf), NULL, &error);
-  g_assert_no_error (error);
-  g_assert_cmpint (len, ==, 0);
+  if (family == G_SOCKET_FAMILY_IPV4)
+    {
+      /* Test that reading on a remote-closed socket gets back 0 bytes. */
+      len = g_socket_receive (client, buf, sizeof (buf), NULL, &error);
+      g_assert_no_error (error);
+      g_assert_cmpint (len, ==, 0);
+    }
+  else
+    {
+      /* Test that writing to a remote-closed socket gets back CONNECTION_CLOSED. */
+      len = g_socket_send (client, testbuf, strlen (testbuf) + 1, NULL, &error);
+      g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CONNECTION_CLOSED);
+      g_assert_cmpint (len, ==, -1);
+      g_clear_error (&error);
+    }
 
   g_socket_close (client, &error);
   g_assert_no_error (error);
@@ -468,6 +496,7 @@ test_close_graceful (void)
 
   data = create_server (family, graceful_server_thread, FALSE);
   addr = g_socket_get_local_address (data->server, &error);
+  g_assert_no_error (error);
 
   client = g_socket_new (family,
                         G_SOCKET_TYPE_STREAM,
@@ -584,6 +613,7 @@ test_ipv6_v4mapped (void)
   g_socket_set_timeout (client, 1);
 
   addr = g_socket_get_local_address (data->server, &error);
+  g_assert_no_error (error);
   iaddr = g_inet_address_new_loopback (G_SOCKET_FAMILY_IPV4);
   v4addr = g_inet_socket_address_new (iaddr, g_inet_socket_address_get_port (G_INET_SOCKET_ADDRESS (addr)));
   g_object_unref (iaddr);
@@ -620,6 +650,7 @@ test_timed_wait (void)
 
   data = create_server (G_SOCKET_FAMILY_IPV4, echo_server_thread, FALSE);
   addr = g_socket_get_local_address (data->server, &error);
+  g_assert_no_error (error);
 
   client = g_socket_new (G_SOCKET_FAMILY_IPV4,
                         G_SOCKET_TYPE_STREAM,
@@ -872,6 +903,7 @@ test_reuse_tcp (void)
   g_assert_no_error (error);
   g_socket_bind (sock2, addr, TRUE, &error);
   g_assert_error (error, G_IO_ERROR, G_IO_ERROR_ADDRESS_IN_USE);
+  g_clear_error (&error);
   g_object_unref (addr);
 
   g_object_unref (sock1);