From 7b34e07ac4576b75bcf932fd8dfeca23242ea1b1 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 1 May 2014 09:58:07 -0400 Subject: [PATCH] gsocket: move set_fd_nonblocking() into g_socket_constructed() --- gio/gsocket.c | 58 ++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/gio/gsocket.c b/gio/gsocket.c index f06e49bcc..dd0d6ebcd 100644 --- a/gio/gsocket.c +++ b/gio/gsocket.c @@ -256,32 +256,6 @@ _win32_unset_event_mask (GSocket *socket, int mask) recv (sockfd, (gpointer)buf, len, flags) #endif -static void -set_fd_nonblocking (int fd) -{ -#ifndef G_OS_WIN32 - GError *error = NULL; -#else - gulong arg; -#endif - -#ifndef G_OS_WIN32 - if (!g_unix_set_fd_nonblocking (fd, TRUE, &error)) - { - g_warning ("Error setting socket nonblocking: %s", error->message); - g_clear_error (&error); - } -#else - arg = TRUE; - - if (ioctlsocket (fd, FIONBIO, &arg) == SOCKET_ERROR) - { - int errsv = get_socket_errno (); - g_warning ("Error setting socket status flags: %s", socket_strerror (errsv)); - } -#endif -} - static gboolean check_socket (GSocket *socket, GError **error) @@ -578,12 +552,34 @@ g_socket_constructed (GObject *object) socket->priv->protocol, &socket->priv->construct_error); - /* Always use native nonblocking sockets, as - windows sets sockets to nonblocking automatically - in certain operations. This way we make things work - the same on all platforms */ if (socket->priv->fd != -1) - set_fd_nonblocking (socket->priv->fd); + { +#ifndef G_OS_WIN32 + GError *error = NULL; +#else + gulong arg; +#endif + + /* Always use native nonblocking sockets, as Windows sets sockets to + * nonblocking automatically in certain operations. This way we make + * things work the same on all platforms. + */ +#ifndef G_OS_WIN32 + if (!g_unix_set_fd_nonblocking (socket->priv->fd, TRUE, &error)) + { + g_warning ("Error setting socket nonblocking: %s", error->message); + g_clear_error (&error); + } +#else + arg = TRUE; + + if (ioctlsocket (socket->priv->fd, FIONBIO, &arg) == SOCKET_ERROR) + { + int errsv = get_socket_errno (); + g_warning ("Error setting socket status flags: %s", socket_strerror (errsv)); + } +#endif + } } static void