Call sync close function directly in async implementation
authorAlexander Larsson <alexl@redhat.com>
Wed, 20 May 2009 09:18:34 +0000 (11:18 +0200)
committerAlexander Larsson <alexl@redhat.com>
Wed, 20 May 2009 09:18:34 +0000 (11:18 +0200)
The g_io_stream_wrapper fails since there is already an outstanding
operation (the async close).

gio/gsocketconnection.c

index a1b42bba665349f9fd8320e55978ca1ad21e7fd8..c14e3c1f3992874e1959e84c31fe5b3d348f6705 100644 (file)
@@ -291,11 +291,15 @@ g_socket_connection_close_async (GIOStream        *stream,
                                 gpointer          user_data)
 {
   GSimpleAsyncResult *res;
+  GIOStreamClass *class;
   GError *error;
 
+  class = G_IO_STREAM_GET_CLASS (stream);
+
   /* socket close is not blocked, just do it! */
   error = NULL;
-  if (!g_io_stream_close (stream, cancellable, &error))
+  if (class->close_fn &&
+      !class->close_fn (stream, cancellable, &error))
     {
       g_simple_async_report_gerror_in_idle (G_OBJECT (stream),
                                            callback, user_data,