aboutsummaryrefslogtreecommitdiff
path: root/src/util/network.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2012-07-11 14:22:18 +0000
committerChristian Grothoff <christian@grothoff.org>2012-07-11 14:22:18 +0000
commitc0035396caef1365e0bb52974c192191e33a2af2 (patch)
tree8e13f04c615bfb711e3509ac9d1f7adcae0dfe6b /src/util/network.c
parentadc0e2a714e9a59f801ef2d93daa7f8fcb3091f8 (diff)
downloadgnunet-c0035396caef1365e0bb52974c192191e33a2af2.tar.gz
gnunet-c0035396caef1365e0bb52974c192191e33a2af2.zip
-dos2unix
Diffstat (limited to 'src/util/network.c')
-rw-r--r--src/util/network.c154
1 files changed, 77 insertions, 77 deletions
diff --git a/src/util/network.c b/src/util/network.c
index f550c18b2..c61704be9 100644
--- a/src/util/network.c
+++ b/src/util/network.c
@@ -1130,37 +1130,37 @@ GNUNET_NETWORK_fdset_destroy (struct GNUNET_NETWORK_FDSet *fds)
1130} 1130}
1131 1131
1132#if MINGW 1132#if MINGW
1133struct _select_params 1133struct _select_params
1134{ 1134{
1135 fd_set *r; 1135 fd_set *r;
1136 fd_set *w; 1136 fd_set *w;
1137 fd_set *e; 1137 fd_set *e;
1138 struct timeval *tv; 1138 struct timeval *tv;
1139 HANDLE wakeup; 1139 HANDLE wakeup;
1140 HANDLE standby; 1140 HANDLE standby;
1141 SOCKET wakeup_socket; 1141 SOCKET wakeup_socket;
1142 int status; 1142 int status;
1143}; 1143};
1144 1144
1145static DWORD WINAPI 1145static DWORD WINAPI
1146_selector (LPVOID p) 1146_selector (LPVOID p)
1147{ 1147{
1148 struct _select_params *sp = p; 1148 struct _select_params *sp = p;
1149 int i; 1149 int i;
1150 while (1) 1150 while (1)
1151 { 1151 {
1152 WaitForSingleObject (sp->standby, INFINITE); 1152 WaitForSingleObject (sp->standby, INFINITE);
1153 ResetEvent (sp->standby); 1153 ResetEvent (sp->standby);
1154 sp->status = select (1, sp->r, sp->w, sp->e, sp->tv); 1154 sp->status = select (1, sp->r, sp->w, sp->e, sp->tv);
1155 if (FD_ISSET (sp->wakeup_socket, sp->r)) 1155 if (FD_ISSET (sp->wakeup_socket, sp->r))
1156 { 1156 {
1157 FD_CLR (sp->wakeup_socket, sp->r); 1157 FD_CLR (sp->wakeup_socket, sp->r);
1158 sp->status -= 1; 1158 sp->status -= 1;
1159 } 1159 }
1160 SetEvent (sp->wakeup); 1160 SetEvent (sp->wakeup);
1161 } 1161 }
1162 return 0; 1162 return 0;
1163} 1163}
1164#endif 1164#endif
1165 1165
1166/** 1166/**
@@ -1193,14 +1193,14 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
1193 static HANDLE hEventPipeWrite = 0; 1193 static HANDLE hEventPipeWrite = 0;
1194 static HANDLE hEventReadReady = 0; 1194 static HANDLE hEventReadReady = 0;
1195 1195
1196 static struct _select_params sp; 1196 static struct _select_params sp;
1197 static HANDLE select_thread = NULL; 1197 static HANDLE select_thread = NULL;
1198 static HANDLE select_finished_event = NULL; 1198 static HANDLE select_finished_event = NULL;
1199 static HANDLE select_standby_event = NULL; 1199 static HANDLE select_standby_event = NULL;
1200 static SOCKET select_wakeup_socket = -1; 1200 static SOCKET select_wakeup_socket = -1;
1201 static SOCKET select_send_socket = -1; 1201 static SOCKET select_send_socket = -1;
1202 static struct timeval select_timeout; 1202 static struct timeval select_timeout;
1203 1203
1204 int readPipes = 0; 1204 int readPipes = 0;
1205 int writePipePos = 0; 1205 int writePipePos = 0;
1206 1206
@@ -1313,46 +1313,46 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
1313 1313
1314 if (select_thread == NULL) 1314 if (select_thread == NULL)
1315 { 1315 {
1316 SOCKET select_listening_socket = -1; 1316 SOCKET select_listening_socket = -1;
1317 struct sockaddr_in s_in; 1317 struct sockaddr_in s_in;
1318 int alen; 1318 int alen;
1319 int res; 1319 int res;
1320 unsigned long p; 1320 unsigned long p;
1321 1321
1322 select_standby_event = CreateEvent (NULL, TRUE, FALSE, NULL); 1322 select_standby_event = CreateEvent (NULL, TRUE, FALSE, NULL);
1323 select_finished_event = CreateEvent (NULL, TRUE, FALSE, NULL); 1323 select_finished_event = CreateEvent (NULL, TRUE, FALSE, NULL);
1324 1324
1325 select_wakeup_socket = WSASocket (AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED); 1325 select_wakeup_socket = WSASocket (AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED);
1326 1326
1327 select_listening_socket = WSASocket (AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED); 1327 select_listening_socket = WSASocket (AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED);
1328 1328
1329 p = 1; 1329 p = 1;
1330 res = ioctlsocket (select_wakeup_socket, FIONBIO, &p); 1330 res = ioctlsocket (select_wakeup_socket, FIONBIO, &p);
1331 1331
1332 alen = sizeof (s_in); 1332 alen = sizeof (s_in);
1333 s_in.sin_family = AF_INET; 1333 s_in.sin_family = AF_INET;
1334 s_in.sin_port = 0; 1334 s_in.sin_port = 0;
1335 s_in.sin_addr.S_un.S_un_b.s_b1 = 127; 1335 s_in.sin_addr.S_un.S_un_b.s_b1 = 127;
1336 s_in.sin_addr.S_un.S_un_b.s_b2 = 0; 1336 s_in.sin_addr.S_un.S_un_b.s_b2 = 0;
1337 s_in.sin_addr.S_un.S_un_b.s_b3 = 0; 1337 s_in.sin_addr.S_un.S_un_b.s_b3 = 0;
1338 s_in.sin_addr.S_un.S_un_b.s_b4 = 1; 1338 s_in.sin_addr.S_un.S_un_b.s_b4 = 1;
1339 res = bind (select_listening_socket, (const struct sockaddr *) &s_in, sizeof (s_in)); 1339 res = bind (select_listening_socket, (const struct sockaddr *) &s_in, sizeof (s_in));
1340 1340
1341 res = getsockname (select_listening_socket, (struct sockaddr *) &s_in, &alen); 1341 res = getsockname (select_listening_socket, (struct sockaddr *) &s_in, &alen);
1342 1342
1343 res = listen (select_listening_socket, SOMAXCONN); 1343 res = listen (select_listening_socket, SOMAXCONN);
1344 1344
1345 res = connect (select_wakeup_socket, (const struct sockaddr *) &s_in, sizeof (s_in)); 1345 res = connect (select_wakeup_socket, (const struct sockaddr *) &s_in, sizeof (s_in));
1346 1346
1347 select_send_socket = accept (select_listening_socket, (struct sockaddr *) &s_in, &alen); 1347 select_send_socket = accept (select_listening_socket, (struct sockaddr *) &s_in, &alen);
1348 1348
1349 closesocket (select_listening_socket); 1349 closesocket (select_listening_socket);
1350 1350
1351 sp.wakeup = select_finished_event; 1351 sp.wakeup = select_finished_event;
1352 sp.standby = select_standby_event; 1352 sp.standby = select_standby_event;
1353 sp.wakeup_socket = select_wakeup_socket; 1353 sp.wakeup_socket = select_wakeup_socket;
1354 1354
1355 select_thread = CreateThread (NULL, 0, _selector, &sp, 0, NULL); 1355 select_thread = CreateThread (NULL, 0, _selector, &sp, 0, NULL);
1356 } 1356 }
1357 1357
1358 /* Events for pipes */ 1358 /* Events for pipes */
@@ -1534,14 +1534,14 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
1534 * and wake up by itself. 1534 * and wake up by itself.
1535 */ 1535 */
1536 if (ms_total != 0) 1536 if (ms_total != 0)
1537 i = send (select_send_socket, (const char *) &returnedpos, 1, 0); 1537 i = send (select_send_socket, (const char *) &returnedpos, 1, 0);
1538 i = (int) WaitForSingleObject (select_finished_event, INFINITE); 1538 i = (int) WaitForSingleObject (select_finished_event, INFINITE);
1539 LOG (GNUNET_ERROR_TYPE_DEBUG, "Finished waiting for the select thread: %d %d\n", i, sp.status); 1539 LOG (GNUNET_ERROR_TYPE_DEBUG, "Finished waiting for the select thread: %d %d\n", i, sp.status);
1540 if (ms_total != 0) 1540 if (ms_total != 0)
1541 { 1541 {
1542 do 1542 do
1543 { 1543 {
1544 i = recv (select_wakeup_socket, (char *) &returnedpos, 1, 0); 1544 i = recv (select_wakeup_socket, (char *) &returnedpos, 1, 0);
1545 } while (i == 1); 1545 } while (i == 1);
1546 } 1546 }
1547 /* Check aexcept, add its contents to awrite */ 1547 /* Check aexcept, add its contents to awrite */