From: Dan Winship Date: Thu, 1 May 2014 13:58:07 +0000 (-0400) Subject: gsocket: move set_fd_nonblocking() into g_socket_constructed() X-Git-Tag: 2.41.3~46 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7b34e07ac4576b75bcf932fd8dfeca23242ea1b1;hp=ccf5959bf490e1124f66e971c9491c07ff86812f;p=platform%2Fupstream%2Fglib.git gsocket: move set_fd_nonblocking() into g_socket_constructed() --- diff --git a/gio/gsocket.c b/gio/gsocket.c index f06e49b..dd0d6eb 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