mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-20 15:48:54 +02:00
Fix indentation and spacing. Use INADDR_LOOPBACK instead of
2003-06-08 Tor Lillqvist <tml@iki.fi> * glib/giowin32.c: Fix indentation and spacing. Use INADDR_LOOPBACK instead of inet_addr("127.0.0.1") and gethostbyaddr().
This commit is contained in:
committed by
Tor Lillqvist
parent
be76dd63f9
commit
51704100d0
@@ -1,3 +1,9 @@
|
|||||||
|
2003-06-08 Tor Lillqvist <tml@iki.fi>
|
||||||
|
|
||||||
|
* glib/giowin32.c: Fix indentation and spacing. Use
|
||||||
|
INADDR_LOOPBACK instead of inet_addr("127.0.0.1") and
|
||||||
|
gethostbyaddr().
|
||||||
|
|
||||||
Sat Jun 6 16:18:10 2003 Andrew Lanoix <alanoix@umich.edu>
|
Sat Jun 6 16:18:10 2003 Andrew Lanoix <alanoix@umich.edu>
|
||||||
|
|
||||||
* glib/giowin32.c: Resolved thread deadlocks in socket
|
* glib/giowin32.c: Resolved thread deadlocks in socket
|
||||||
|
@@ -1,3 +1,9 @@
|
|||||||
|
2003-06-08 Tor Lillqvist <tml@iki.fi>
|
||||||
|
|
||||||
|
* glib/giowin32.c: Fix indentation and spacing. Use
|
||||||
|
INADDR_LOOPBACK instead of inet_addr("127.0.0.1") and
|
||||||
|
gethostbyaddr().
|
||||||
|
|
||||||
Sat Jun 6 16:18:10 2003 Andrew Lanoix <alanoix@umich.edu>
|
Sat Jun 6 16:18:10 2003 Andrew Lanoix <alanoix@umich.edu>
|
||||||
|
|
||||||
* glib/giowin32.c: Resolved thread deadlocks in socket
|
* glib/giowin32.c: Resolved thread deadlocks in socket
|
||||||
|
@@ -1,3 +1,9 @@
|
|||||||
|
2003-06-08 Tor Lillqvist <tml@iki.fi>
|
||||||
|
|
||||||
|
* glib/giowin32.c: Fix indentation and spacing. Use
|
||||||
|
INADDR_LOOPBACK instead of inet_addr("127.0.0.1") and
|
||||||
|
gethostbyaddr().
|
||||||
|
|
||||||
Sat Jun 6 16:18:10 2003 Andrew Lanoix <alanoix@umich.edu>
|
Sat Jun 6 16:18:10 2003 Andrew Lanoix <alanoix@umich.edu>
|
||||||
|
|
||||||
* glib/giowin32.c: Resolved thread deadlocks in socket
|
* glib/giowin32.c: Resolved thread deadlocks in socket
|
||||||
|
@@ -1,3 +1,9 @@
|
|||||||
|
2003-06-08 Tor Lillqvist <tml@iki.fi>
|
||||||
|
|
||||||
|
* glib/giowin32.c: Fix indentation and spacing. Use
|
||||||
|
INADDR_LOOPBACK instead of inet_addr("127.0.0.1") and
|
||||||
|
gethostbyaddr().
|
||||||
|
|
||||||
Sat Jun 6 16:18:10 2003 Andrew Lanoix <alanoix@umich.edu>
|
Sat Jun 6 16:18:10 2003 Andrew Lanoix <alanoix@umich.edu>
|
||||||
|
|
||||||
* glib/giowin32.c: Resolved thread deadlocks in socket
|
* glib/giowin32.c: Resolved thread deadlocks in socket
|
||||||
|
@@ -1,3 +1,9 @@
|
|||||||
|
2003-06-08 Tor Lillqvist <tml@iki.fi>
|
||||||
|
|
||||||
|
* glib/giowin32.c: Fix indentation and spacing. Use
|
||||||
|
INADDR_LOOPBACK instead of inet_addr("127.0.0.1") and
|
||||||
|
gethostbyaddr().
|
||||||
|
|
||||||
Sat Jun 6 16:18:10 2003 Andrew Lanoix <alanoix@umich.edu>
|
Sat Jun 6 16:18:10 2003 Andrew Lanoix <alanoix@umich.edu>
|
||||||
|
|
||||||
* glib/giowin32.c: Resolved thread deadlocks in socket
|
* glib/giowin32.c: Resolved thread deadlocks in socket
|
||||||
|
@@ -1,3 +1,9 @@
|
|||||||
|
2003-06-08 Tor Lillqvist <tml@iki.fi>
|
||||||
|
|
||||||
|
* glib/giowin32.c: Fix indentation and spacing. Use
|
||||||
|
INADDR_LOOPBACK instead of inet_addr("127.0.0.1") and
|
||||||
|
gethostbyaddr().
|
||||||
|
|
||||||
Sat Jun 6 16:18:10 2003 Andrew Lanoix <alanoix@umich.edu>
|
Sat Jun 6 16:18:10 2003 Andrew Lanoix <alanoix@umich.edu>
|
||||||
|
|
||||||
* glib/giowin32.c: Resolved thread deadlocks in socket
|
* glib/giowin32.c: Resolved thread deadlocks in socket
|
||||||
|
235
glib/giowin32.c
235
glib/giowin32.c
@@ -313,7 +313,7 @@ read_thread (void *parameter)
|
|||||||
SetEvent (channel->data_avail_event);
|
SetEvent (channel->data_avail_event);
|
||||||
UNLOCK (channel->mutex);
|
UNLOCK (channel->mutex);
|
||||||
|
|
||||||
g_io_channel_unref((GIOChannel *)channel);
|
g_io_channel_unref ((GIOChannel *)channel);
|
||||||
|
|
||||||
/* No need to call _endthreadex(), the actual thread starter routine
|
/* No need to call _endthreadex(), the actual thread starter routine
|
||||||
* in MSVCRT (see crt/src/threadex.c:_threadstartex) calls
|
* in MSVCRT (see crt/src/threadex.c:_threadstartex) calls
|
||||||
@@ -343,66 +343,61 @@ create_thread (GIOWin32Channel *channel,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
init_reset_sockets(GIOWin32Channel *channel)
|
init_reset_sockets (GIOWin32Channel *channel)
|
||||||
{
|
{
|
||||||
struct sockaddr_in local, local2, server;
|
struct sockaddr_in local, local2, server;
|
||||||
unsigned int addr;
|
|
||||||
int len;
|
int len;
|
||||||
struct hostent *hp;
|
|
||||||
|
|
||||||
channel->reset_send = (gint) socket(AF_INET, SOCK_DGRAM, 0);
|
channel->reset_send = (gint) socket (AF_INET, SOCK_DGRAM, 0);
|
||||||
if (channel->reset_send == INVALID_SOCKET)
|
if (channel->reset_send == INVALID_SOCKET)
|
||||||
{
|
{
|
||||||
g_warning (G_STRLOC ": Error creating reset_send socket: %s\n",
|
g_warning (G_STRLOC ": Error creating reset_send socket: %s\n",
|
||||||
g_win32_error_message (WSAGetLastError ()));
|
g_win32_error_message (WSAGetLastError ()));
|
||||||
}
|
}
|
||||||
|
|
||||||
local.sin_family = AF_INET;
|
local.sin_family = AF_INET;
|
||||||
local.sin_port = 0;
|
local.sin_port = 0;
|
||||||
local.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
|
local.sin_addr.s_addr = htonl (INADDR_ANY);
|
||||||
|
|
||||||
if (bind(channel->reset_send, (struct sockaddr *)&local, sizeof(local)) == SOCKET_ERROR)
|
if (bind (channel->reset_send, (struct sockaddr *)&local, sizeof (local)) == SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
g_warning (G_STRLOC ": Error binding to reset_send socket: %s\n",
|
g_warning (G_STRLOC ": Error binding to reset_send socket: %s\n",
|
||||||
g_win32_error_message (WSAGetLastError ()));
|
g_win32_error_message (WSAGetLastError ()));
|
||||||
}
|
}
|
||||||
|
|
||||||
local2.sin_family = AF_INET;
|
local2.sin_family = AF_INET;
|
||||||
local2.sin_port = 0;
|
local2.sin_port = 0;
|
||||||
local2.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
|
local2.sin_addr.s_addr = htonl (INADDR_ANY);
|
||||||
|
|
||||||
channel->reset_recv = (gint) socket(AF_INET, SOCK_DGRAM, 0);
|
channel->reset_recv = (gint) socket (AF_INET, SOCK_DGRAM, 0);
|
||||||
if (channel->reset_recv == INVALID_SOCKET)
|
if (channel->reset_recv == INVALID_SOCKET)
|
||||||
{
|
{
|
||||||
g_warning (G_STRLOC ": Error creating reset_recv socket: %s\n",
|
g_warning (G_STRLOC ": Error creating reset_recv socket: %s\n",
|
||||||
g_win32_error_message (WSAGetLastError ()));
|
g_win32_error_message (WSAGetLastError ()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bind(channel->reset_recv, (struct sockaddr *)&local2, sizeof(local)) == SOCKET_ERROR)
|
if (bind (channel->reset_recv, (struct sockaddr *)&local2, sizeof (local)) == SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
g_warning (G_STRLOC ": Error binding to reset_recv socket: %s\n",
|
g_warning (G_STRLOC ": Error binding to reset_recv socket: %s\n",
|
||||||
g_win32_error_message (WSAGetLastError ()));
|
g_win32_error_message (WSAGetLastError ()));
|
||||||
}
|
}
|
||||||
|
|
||||||
len = sizeof(local2);
|
len = sizeof (local2);
|
||||||
if (getsockname(channel->reset_recv, (struct sockaddr *)&local2, &len) == SOCKET_ERROR)
|
if (getsockname (channel->reset_recv, (struct sockaddr *)&local2, &len) == SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
g_warning (G_STRLOC ": Error getsockname with reset_recv socket: %s\n",
|
g_warning (G_STRLOC ": Error getsockname with reset_recv socket: %s\n",
|
||||||
g_win32_error_message (WSAGetLastError ()));
|
g_win32_error_message (WSAGetLastError ()));
|
||||||
}
|
}
|
||||||
|
|
||||||
addr = inet_addr("127.0.0.1");
|
memset (&server, 0, sizeof (server));
|
||||||
hp = gethostbyaddr((char *)&addr,4,AF_INET);
|
server.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
|
||||||
|
server.sin_family = AF_INET;
|
||||||
memset(&server,0,sizeof(server));
|
|
||||||
memcpy(&(server.sin_addr),hp->h_addr,hp->h_length);
|
|
||||||
server.sin_family = hp->h_addrtype;
|
|
||||||
server.sin_port = local2.sin_port;
|
server.sin_port = local2.sin_port;
|
||||||
|
|
||||||
if (connect(channel->reset_send, (struct sockaddr *)&server, sizeof(server)) == SOCKET_ERROR)
|
if (connect (channel->reset_send, (struct sockaddr *)&server, sizeof (server)) == SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
g_warning (G_STRLOC ": connect to reset_recv socket: %s\n",
|
g_warning (G_STRLOC ": connect to reset_recv socket: %s\n",
|
||||||
g_win32_error_message (WSAGetLastError ()));
|
g_win32_error_message (WSAGetLastError ()));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -505,40 +500,40 @@ select_thread (void *parameter)
|
|||||||
FD_ZERO (&read_fds);
|
FD_ZERO (&read_fds);
|
||||||
FD_ZERO (&write_fds);
|
FD_ZERO (&write_fds);
|
||||||
FD_ZERO (&except_fds);
|
FD_ZERO (&except_fds);
|
||||||
FD_SET(channel->reset_recv, &read_fds);
|
FD_SET (channel->reset_recv, &read_fds);
|
||||||
|
|
||||||
LOCK (channel->mutex);
|
LOCK (channel->mutex);
|
||||||
tmp = channel->watches;
|
tmp = channel->watches;
|
||||||
while (tmp)
|
while (tmp)
|
||||||
{
|
{
|
||||||
GIOWin32Watch *watch = (GIOWin32Watch *)tmp->data;
|
GIOWin32Watch *watch = (GIOWin32Watch *)tmp->data;
|
||||||
|
|
||||||
if (watch->condition & (G_IO_IN | G_IO_HUP))
|
if (watch->condition & (G_IO_IN | G_IO_HUP))
|
||||||
FD_SET (channel->fd, &read_fds);
|
FD_SET (channel->fd, &read_fds);
|
||||||
if (watch->condition & G_IO_OUT)
|
if (watch->condition & G_IO_OUT)
|
||||||
FD_SET (channel->fd, &write_fds);
|
FD_SET (channel->fd, &write_fds);
|
||||||
if (watch->condition & G_IO_ERR)
|
if (watch->condition & G_IO_ERR)
|
||||||
FD_SET (channel->fd, &except_fds);
|
FD_SET (channel->fd, &except_fds);
|
||||||
|
|
||||||
tmp = tmp->next;
|
tmp = tmp->next;
|
||||||
}
|
}
|
||||||
UNLOCK (channel->mutex);
|
UNLOCK (channel->mutex);
|
||||||
|
|
||||||
if (channel->debug)
|
if (channel->debug)
|
||||||
g_print ("select_thread %#x: calling select() for%s%s%s\n",
|
g_print ("select_thread %#x: calling select() for%s%s%s\n",
|
||||||
channel->thread_id,
|
channel->thread_id,
|
||||||
(FD_ISSET (channel->fd, &read_fds) ? " IN" : ""),
|
(FD_ISSET (channel->fd, &read_fds) ? " IN" : ""),
|
||||||
(FD_ISSET (channel->fd, &write_fds) ? " OUT" : ""),
|
(FD_ISSET (channel->fd, &write_fds) ? " OUT" : ""),
|
||||||
(FD_ISSET (channel->fd, &except_fds) ? " ERR" : ""));
|
(FD_ISSET (channel->fd, &except_fds) ? " ERR" : ""));
|
||||||
|
|
||||||
n = select (1, &read_fds, &write_fds, &except_fds, NULL);
|
n = select (1, &read_fds, &write_fds, &except_fds, NULL);
|
||||||
|
|
||||||
LOCK (channel->mutex);
|
LOCK (channel->mutex);
|
||||||
if (channel->needs_close)
|
if (channel->needs_close)
|
||||||
{
|
{
|
||||||
UNLOCK (channel->mutex);
|
UNLOCK (channel->mutex);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
UNLOCK (channel->mutex);
|
UNLOCK (channel->mutex);
|
||||||
|
|
||||||
if (n == SOCKET_ERROR)
|
if (n == SOCKET_ERROR)
|
||||||
@@ -549,22 +544,22 @@ select_thread (void *parameter)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FD_ISSET(channel->reset_recv, &read_fds))
|
if (FD_ISSET (channel->reset_recv, &read_fds))
|
||||||
{
|
{
|
||||||
if (channel->debug)
|
if (channel->debug)
|
||||||
g_print ("select_thread %#x: re-looping\n",
|
g_print ("select_thread %#x: re-looping\n",
|
||||||
channel->thread_id);
|
channel->thread_id);
|
||||||
recv(channel->reset_recv, (char *)&buffer, (int) sizeof(buffer), 0);
|
recv (channel->reset_recv, (char *)&buffer, (int) sizeof (buffer), 0);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (channel->debug)
|
if (channel->debug)
|
||||||
g_print ("select_thread %#x: got%s%s%s\n",
|
g_print ("select_thread %#x: got%s%s%s\n",
|
||||||
channel->thread_id,
|
channel->thread_id,
|
||||||
(FD_ISSET (channel->fd, &read_fds) ? " IN" : ""),
|
(FD_ISSET (channel->fd, &read_fds) ? " IN" : ""),
|
||||||
(FD_ISSET (channel->fd, &write_fds) ? " OUT" : ""),
|
(FD_ISSET (channel->fd, &write_fds) ? " OUT" : ""),
|
||||||
(FD_ISSET (channel->fd, &except_fds) ? " ERR" : ""));
|
(FD_ISSET (channel->fd, &except_fds) ? " ERR" : ""));
|
||||||
|
|
||||||
if (FD_ISSET (channel->fd, &read_fds))
|
if (FD_ISSET (channel->fd, &read_fds))
|
||||||
channel->revents |= G_IO_IN;
|
channel->revents |= G_IO_IN;
|
||||||
if (FD_ISSET (channel->fd, &write_fds))
|
if (FD_ISSET (channel->fd, &write_fds))
|
||||||
@@ -574,16 +569,16 @@ select_thread (void *parameter)
|
|||||||
|
|
||||||
if (channel->debug)
|
if (channel->debug)
|
||||||
g_print ("select_thread %#x: resetting data_avail_noticed, setting data_avail\n",
|
g_print ("select_thread %#x: resetting data_avail_noticed, setting data_avail\n",
|
||||||
channel->thread_id);
|
channel->thread_id);
|
||||||
|
|
||||||
LOCK (channel->mutex);
|
LOCK (channel->mutex);
|
||||||
ResetEvent (channel->data_avail_noticed_event);
|
ResetEvent (channel->data_avail_noticed_event);
|
||||||
SetEvent (channel->data_avail_event);
|
SetEvent (channel->data_avail_event);
|
||||||
if (channel->needs_close)
|
if (channel->needs_close)
|
||||||
{
|
{
|
||||||
UNLOCK (channel->mutex);
|
UNLOCK (channel->mutex);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
UNLOCK (channel->mutex);
|
UNLOCK (channel->mutex);
|
||||||
|
|
||||||
if (channel->debug)
|
if (channel->debug)
|
||||||
@@ -602,7 +597,7 @@ select_thread (void *parameter)
|
|||||||
g_print ("select_thread %#x: got error, setting data_avail\n",
|
g_print ("select_thread %#x: got error, setting data_avail\n",
|
||||||
channel->thread_id);
|
channel->thread_id);
|
||||||
SetEvent (channel->data_avail_event);
|
SetEvent (channel->data_avail_event);
|
||||||
g_io_channel_unref((GIOChannel *)channel);
|
g_io_channel_unref ((GIOChannel *)channel);
|
||||||
UNLOCK (channel->mutex);
|
UNLOCK (channel->mutex);
|
||||||
|
|
||||||
/* No need to call _endthreadex(), the actual thread starter routine
|
/* No need to call _endthreadex(), the actual thread starter routine
|
||||||
@@ -734,7 +729,7 @@ g_io_win32_finalize (GSource *source)
|
|||||||
|
|
||||||
SetEvent (channel->data_avail_noticed_event);
|
SetEvent (channel->data_avail_noticed_event);
|
||||||
if (channel->type == G_IO_WIN32_SOCKET)
|
if (channel->type == G_IO_WIN32_SOCKET)
|
||||||
send(channel->reset_send, send_buffer, sizeof(send_buffer), 0);
|
send (channel->reset_send, send_buffer, sizeof (send_buffer), 0);
|
||||||
|
|
||||||
g_io_channel_unref (watch->channel);
|
g_io_channel_unref (watch->channel);
|
||||||
UNLOCK (channel->mutex);
|
UNLOCK (channel->mutex);
|
||||||
@@ -784,7 +779,7 @@ g_io_win32_create_watch (GIOChannel *channel,
|
|||||||
if (win32_channel->thread_id == 0)
|
if (win32_channel->thread_id == 0)
|
||||||
create_thread (win32_channel, condition, thread);
|
create_thread (win32_channel, condition, thread);
|
||||||
else
|
else
|
||||||
send(win32_channel->reset_send, send_buffer, sizeof(send_buffer), 0);
|
send (win32_channel->reset_send, send_buffer, sizeof (send_buffer), 0);
|
||||||
|
|
||||||
g_source_add_poll (source, &watch->pollfd);
|
g_source_add_poll (source, &watch->pollfd);
|
||||||
UNLOCK (win32_channel->mutex);
|
UNLOCK (win32_channel->mutex);
|
||||||
@@ -804,8 +799,8 @@ g_io_win32_msg_read (GIOChannel *channel,
|
|||||||
|
|
||||||
if (count < sizeof (MSG))
|
if (count < sizeof (MSG))
|
||||||
{
|
{
|
||||||
g_set_error(err, G_IO_CHANNEL_ERROR, G_IO_CHANNEL_ERROR_INVAL,
|
g_set_error (err, G_IO_CHANNEL_ERROR, G_IO_CHANNEL_ERROR_INVAL,
|
||||||
"Incorrect message size"); /* Informative enough error message? */
|
"Incorrect message size"); /* Informative enough error message? */
|
||||||
return G_IO_STATUS_ERROR;
|
return G_IO_STATUS_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -833,8 +828,8 @@ g_io_win32_msg_write (GIOChannel *channel,
|
|||||||
|
|
||||||
if (count != sizeof (MSG))
|
if (count != sizeof (MSG))
|
||||||
{
|
{
|
||||||
g_set_error(err, G_IO_CHANNEL_ERROR, G_IO_CHANNEL_ERROR_INVAL,
|
g_set_error (err, G_IO_CHANNEL_ERROR, G_IO_CHANNEL_ERROR_INVAL,
|
||||||
"Incorrect message size"); /* Informative enough error message? */
|
"Incorrect message size"); /* Informative enough error message? */
|
||||||
return G_IO_STATUS_ERROR;
|
return G_IO_STATUS_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -843,7 +838,7 @@ g_io_win32_msg_write (GIOChannel *channel,
|
|||||||
if (!PostMessage (win32_channel->hwnd, msg.message, msg.wParam, msg.lParam))
|
if (!PostMessage (win32_channel->hwnd, msg.message, msg.wParam, msg.lParam))
|
||||||
{
|
{
|
||||||
gchar *emsg = g_win32_error_message (GetLastError ());
|
gchar *emsg = g_win32_error_message (GetLastError ());
|
||||||
g_set_error(err, G_IO_CHANNEL_ERROR, G_IO_CHANNEL_ERROR_FAILED, emsg);
|
g_set_error (err, G_IO_CHANNEL_ERROR, G_IO_CHANNEL_ERROR_FAILED, emsg);
|
||||||
g_free (emsg);
|
g_free (emsg);
|
||||||
return G_IO_STATUS_ERROR;
|
return G_IO_STATUS_ERROR;
|
||||||
}
|
}
|
||||||
@@ -873,9 +868,9 @@ g_io_win32_free (GIOChannel *channel)
|
|||||||
win32_channel->fd);
|
win32_channel->fd);
|
||||||
|
|
||||||
if (win32_channel->reset_send)
|
if (win32_channel->reset_send)
|
||||||
closesocket(win32_channel->reset_send);
|
closesocket (win32_channel->reset_send);
|
||||||
if (win32_channel->reset_recv)
|
if (win32_channel->reset_recv)
|
||||||
closesocket(win32_channel->reset_recv);
|
closesocket (win32_channel->reset_recv);
|
||||||
if (win32_channel->data_avail_event)
|
if (win32_channel->data_avail_event)
|
||||||
CloseHandle (win32_channel->data_avail_event);
|
CloseHandle (win32_channel->data_avail_event);
|
||||||
if (win32_channel->space_avail_event)
|
if (win32_channel->space_avail_event)
|
||||||
@@ -940,17 +935,17 @@ g_io_win32_fd_read (GIOChannel *channel,
|
|||||||
{
|
{
|
||||||
*bytes_read = 0;
|
*bytes_read = 0;
|
||||||
|
|
||||||
switch(errno)
|
switch (errno)
|
||||||
{
|
{
|
||||||
#ifdef EAGAIN
|
#ifdef EAGAIN
|
||||||
case EAGAIN:
|
case EAGAIN:
|
||||||
return G_IO_STATUS_AGAIN;
|
return G_IO_STATUS_AGAIN;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
g_set_error (err, G_IO_CHANNEL_ERROR,
|
g_set_error (err, G_IO_CHANNEL_ERROR,
|
||||||
g_io_channel_error_from_errno (errno),
|
g_io_channel_error_from_errno (errno),
|
||||||
g_strerror (errno));
|
g_strerror (errno));
|
||||||
return G_IO_STATUS_ERROR;
|
return G_IO_STATUS_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -978,17 +973,17 @@ g_io_win32_fd_write (GIOChannel *channel,
|
|||||||
{
|
{
|
||||||
*bytes_written = 0;
|
*bytes_written = 0;
|
||||||
|
|
||||||
switch(errno)
|
switch (errno)
|
||||||
{
|
{
|
||||||
#ifdef EAGAIN
|
#ifdef EAGAIN
|
||||||
case EAGAIN:
|
case EAGAIN:
|
||||||
return G_IO_STATUS_AGAIN;
|
return G_IO_STATUS_AGAIN;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
g_set_error (err, G_IO_CHANNEL_ERROR,
|
g_set_error (err, G_IO_CHANNEL_ERROR,
|
||||||
g_io_channel_error_from_errno (errno),
|
g_io_channel_error_from_errno (errno),
|
||||||
g_strerror (errno));
|
g_strerror (errno));
|
||||||
return G_IO_STATUS_ERROR;
|
return G_IO_STATUS_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1021,7 +1016,7 @@ g_io_win32_fd_seek (GIOChannel *channel,
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
whence = -1; /* Keep the compiler quiet */
|
whence = -1; /* Keep the compiler quiet */
|
||||||
g_assert_not_reached();
|
g_assert_not_reached ();
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp_offset = offset;
|
tmp_offset = offset;
|
||||||
@@ -1133,7 +1128,7 @@ repeat:
|
|||||||
error = G_IO_CHANNEL_ERROR_FAILED;
|
error = G_IO_CHANNEL_ERROR_FAILED;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
g_set_error(err, G_IO_CHANNEL_ERROR, error, "Socket read error");
|
g_set_error (err, G_IO_CHANNEL_ERROR, error, "Socket read error");
|
||||||
internal_status = G_IO_STATUS_ERROR;
|
internal_status = G_IO_STATUS_ERROR;
|
||||||
/* FIXME get all errors, better error messages */
|
/* FIXME get all errors, better error messages */
|
||||||
}
|
}
|
||||||
@@ -1141,18 +1136,18 @@ repeat:
|
|||||||
{
|
{
|
||||||
*bytes_read = result;
|
*bytes_read = result;
|
||||||
if (result == 0)
|
if (result == 0)
|
||||||
internal_status = G_IO_STATUS_EOF;
|
internal_status = G_IO_STATUS_EOF;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((internal_status == G_IO_STATUS_EOF) ||
|
if ((internal_status == G_IO_STATUS_EOF) ||
|
||||||
(internal_status == G_IO_STATUS_ERROR))
|
(internal_status == G_IO_STATUS_ERROR))
|
||||||
{
|
{
|
||||||
LOCK (win32_channel->mutex);
|
LOCK (win32_channel->mutex);
|
||||||
SetEvent(win32_channel->data_avail_noticed_event);
|
SetEvent (win32_channel->data_avail_noticed_event);
|
||||||
win32_channel->needs_close = 1;
|
win32_channel->needs_close = 1;
|
||||||
send(win32_channel->reset_send, send_buffer, sizeof(send_buffer), 0);
|
send (win32_channel->reset_send, send_buffer, sizeof (send_buffer), 0);
|
||||||
UNLOCK (win32_channel->mutex);
|
UNLOCK (win32_channel->mutex);
|
||||||
}
|
}
|
||||||
return internal_status;
|
return internal_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1198,13 +1193,13 @@ repeat:
|
|||||||
error = G_IO_CHANNEL_ERROR_FAILED;
|
error = G_IO_CHANNEL_ERROR_FAILED;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
g_set_error(err, G_IO_CHANNEL_ERROR, error, "Socket write error");
|
g_set_error (err, G_IO_CHANNEL_ERROR, error, "Socket write error");
|
||||||
LOCK (win32_channel->mutex);
|
LOCK (win32_channel->mutex);
|
||||||
SetEvent(win32_channel->data_avail_noticed_event);
|
SetEvent (win32_channel->data_avail_noticed_event);
|
||||||
win32_channel->needs_close = 1;
|
win32_channel->needs_close = 1;
|
||||||
send(win32_channel->reset_send, send_buffer, sizeof(send_buffer), 0);
|
send (win32_channel->reset_send, send_buffer, sizeof (send_buffer), 0);
|
||||||
UNLOCK (win32_channel->mutex);
|
UNLOCK (win32_channel->mutex);
|
||||||
return G_IO_STATUS_ERROR;
|
return G_IO_STATUS_ERROR;
|
||||||
/* FIXME get all errors, better error messages */
|
/* FIXME get all errors, better error messages */
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1221,7 +1216,7 @@ g_io_win32_sock_close (GIOChannel *channel,
|
|||||||
{
|
{
|
||||||
GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel;
|
GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel;
|
||||||
|
|
||||||
LOCK(win32_channel->mutex);
|
LOCK (win32_channel->mutex);
|
||||||
if (win32_channel->running)
|
if (win32_channel->running)
|
||||||
{
|
{
|
||||||
if (win32_channel->debug)
|
if (win32_channel->debug)
|
||||||
@@ -1241,7 +1236,7 @@ g_io_win32_sock_close (GIOChannel *channel,
|
|||||||
closesocket (win32_channel->fd);
|
closesocket (win32_channel->fd);
|
||||||
win32_channel->fd = -1;
|
win32_channel->fd = -1;
|
||||||
}
|
}
|
||||||
UNLOCK(win32_channel->mutex);
|
UNLOCK (win32_channel->mutex);
|
||||||
|
|
||||||
/* FIXME error detection? */
|
/* FIXME error detection? */
|
||||||
|
|
||||||
@@ -1590,7 +1585,7 @@ g_io_channel_win32_new_socket (int socket)
|
|||||||
|
|
||||||
g_io_channel_init (channel);
|
g_io_channel_init (channel);
|
||||||
g_io_channel_win32_init (win32_channel);
|
g_io_channel_win32_init (win32_channel);
|
||||||
init_reset_sockets(channel);
|
init_reset_sockets (win32_channel);
|
||||||
if (win32_channel->debug)
|
if (win32_channel->debug)
|
||||||
g_print ("g_io_channel_win32_new_socket: sockfd:%d\n", socket);
|
g_print ("g_io_channel_win32_new_socket: sockfd:%d\n", socket);
|
||||||
channel->funcs = &win32_channel_sock_funcs;
|
channel->funcs = &win32_channel_sock_funcs;
|
||||||
@@ -1615,7 +1610,7 @@ g_io_channel_unix_new (gint fd)
|
|||||||
return g_io_channel_win32_new_fd_internal (fd, &st);
|
return g_io_channel_win32_new_fd_internal (fd, &st);
|
||||||
|
|
||||||
if (getsockopt (fd, SOL_SOCKET, SO_TYPE, NULL, NULL) != SOCKET_ERROR)
|
if (getsockopt (fd, SOL_SOCKET, SO_TYPE, NULL, NULL) != SOCKET_ERROR)
|
||||||
return g_io_channel_win32_new_socket(fd);
|
return g_io_channel_win32_new_socket (fd);
|
||||||
|
|
||||||
g_warning (G_STRLOC ": %d is neither a file descriptor or a socket", fd);
|
g_warning (G_STRLOC ": %d is neither a file descriptor or a socket", fd);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Reference in New Issue
Block a user