}
#if MINGW
-struct _select_params\r
-{\r
- fd_set *r;\r
- fd_set *w;\r
- fd_set *e;\r
- struct timeval *tv;\r
- HANDLE wakeup;\r
- HANDLE standby;\r
- SOCKET wakeup_socket;\r
- int status;\r
-};\r
-
-static DWORD WINAPI\r
-_selector (LPVOID p)\r
-{\r
- struct _select_params *sp = p;\r
- int i;\r
- while (1)\r
- {\r
- WaitForSingleObject (sp->standby, INFINITE);\r
- ResetEvent (sp->standby);\r
- sp->status = select (1, sp->r, sp->w, sp->e, sp->tv);\r
- if (FD_ISSET (sp->wakeup_socket, sp->r))\r
- {\r
- FD_CLR (sp->wakeup_socket, sp->r);\r
- sp->status -= 1;\r
- }\r
- SetEvent (sp->wakeup);\r
- }\r
- return 0;\r
-}\r
+struct _select_params
+{
+ fd_set *r;
+ fd_set *w;
+ fd_set *e;
+ struct timeval *tv;
+ HANDLE wakeup;
+ HANDLE standby;
+ SOCKET wakeup_socket;
+ int status;
+};
+
+static DWORD WINAPI
+_selector (LPVOID p)
+{
+ struct _select_params *sp = p;
+ int i;
+ while (1)
+ {
+ WaitForSingleObject (sp->standby, INFINITE);
+ ResetEvent (sp->standby);
+ sp->status = select (1, sp->r, sp->w, sp->e, sp->tv);
+ if (FD_ISSET (sp->wakeup_socket, sp->r))
+ {
+ FD_CLR (sp->wakeup_socket, sp->r);
+ sp->status -= 1;
+ }
+ SetEvent (sp->wakeup);
+ }
+ return 0;
+}
#endif
/**
static HANDLE hEventPipeWrite = 0;
static HANDLE hEventReadReady = 0;
- static struct _select_params sp;\r
+ static struct _select_params sp;
static HANDLE select_thread = NULL;
static HANDLE select_finished_event = NULL;
static HANDLE select_standby_event = NULL;
- static SOCKET select_wakeup_socket = -1;\r
- static SOCKET select_send_socket = -1;\r
+ static SOCKET select_wakeup_socket = -1;
+ static SOCKET select_send_socket = -1;
static struct timeval select_timeout;
-\r
+
int readPipes = 0;
int writePipePos = 0;
if (select_thread == NULL)
{
- SOCKET select_listening_socket = -1;\r
- struct sockaddr_in s_in;\r
- int alen;\r
- int res;\r
- unsigned long p;\r
-
- select_standby_event = CreateEvent (NULL, TRUE, FALSE, NULL);\r
- select_finished_event = CreateEvent (NULL, TRUE, FALSE, NULL);\r
-
- select_wakeup_socket = WSASocket (AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED);\r
-\r
- select_listening_socket = WSASocket (AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED);\r
-\r
- p = 1;\r
- res = ioctlsocket (select_wakeup_socket, FIONBIO, &p);\r
-\r
- alen = sizeof (s_in);\r
- s_in.sin_family = AF_INET;\r
- s_in.sin_port = 0;\r
- s_in.sin_addr.S_un.S_un_b.s_b1 = 127;\r
- s_in.sin_addr.S_un.S_un_b.s_b2 = 0;\r
- s_in.sin_addr.S_un.S_un_b.s_b3 = 0;\r
- s_in.sin_addr.S_un.S_un_b.s_b4 = 1;\r
- res = bind (select_listening_socket, (const struct sockaddr *) &s_in, sizeof (s_in));\r
-\r
- res = getsockname (select_listening_socket, (struct sockaddr *) &s_in, &alen);\r
-\r
- res = listen (select_listening_socket, SOMAXCONN);\r
-\r
- res = connect (select_wakeup_socket, (const struct sockaddr *) &s_in, sizeof (s_in));\r
-\r
- select_send_socket = accept (select_listening_socket, (struct sockaddr *) &s_in, &alen);\r
-\r
- closesocket (select_listening_socket);\r
-\r
- sp.wakeup = select_finished_event;\r
- sp.standby = select_standby_event;\r
+ SOCKET select_listening_socket = -1;
+ struct sockaddr_in s_in;
+ int alen;
+ int res;
+ unsigned long p;
+
+ select_standby_event = CreateEvent (NULL, TRUE, FALSE, NULL);
+ select_finished_event = CreateEvent (NULL, TRUE, FALSE, NULL);
+
+ select_wakeup_socket = WSASocket (AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED);
+
+ select_listening_socket = WSASocket (AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED);
+
+ p = 1;
+ res = ioctlsocket (select_wakeup_socket, FIONBIO, &p);
+
+ alen = sizeof (s_in);
+ s_in.sin_family = AF_INET;
+ s_in.sin_port = 0;
+ s_in.sin_addr.S_un.S_un_b.s_b1 = 127;
+ s_in.sin_addr.S_un.S_un_b.s_b2 = 0;
+ s_in.sin_addr.S_un.S_un_b.s_b3 = 0;
+ s_in.sin_addr.S_un.S_un_b.s_b4 = 1;
+ res = bind (select_listening_socket, (const struct sockaddr *) &s_in, sizeof (s_in));
+
+ res = getsockname (select_listening_socket, (struct sockaddr *) &s_in, &alen);
+
+ res = listen (select_listening_socket, SOMAXCONN);
+
+ res = connect (select_wakeup_socket, (const struct sockaddr *) &s_in, sizeof (s_in));
+
+ select_send_socket = accept (select_listening_socket, (struct sockaddr *) &s_in, &alen);
+
+ closesocket (select_listening_socket);
+
+ sp.wakeup = select_finished_event;
+ sp.standby = select_standby_event;
sp.wakeup_socket = select_wakeup_socket;
-\r
- select_thread = CreateThread (NULL, 0, _selector, &sp, 0, NULL);\r
+
+ select_thread = CreateThread (NULL, 0, _selector, &sp, 0, NULL);
}
/* Events for pipes */
* and wake up by itself.
*/
if (ms_total != 0)
- i = send (select_send_socket, (const char *) &returnedpos, 1, 0);\r
- i = (int) WaitForSingleObject (select_finished_event, INFINITE);\r
+ i = send (select_send_socket, (const char *) &returnedpos, 1, 0);
+ i = (int) WaitForSingleObject (select_finished_event, INFINITE);
LOG (GNUNET_ERROR_TYPE_DEBUG, "Finished waiting for the select thread: %d %d\n", i, sp.status);
if (ms_total != 0)
{
do
{
- i = recv (select_wakeup_socket, (char *) &returnedpos, 1, 0);\r
+ i = recv (select_wakeup_socket, (char *) &returnedpos, 1, 0);
} while (i == 1);
}
/* Check aexcept, add its contents to awrite */