From 4013e1acba325a4f7ef4192c13ec39f64b4d098a Mon Sep 17 00:00:00 2001 From: bustico Date: Fri, 8 Feb 2008 09:33:07 +0000 Subject: fix makefile for non omp target --- src/ivysocket.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/ivysocket.c') diff --git a/src/ivysocket.c b/src/ivysocket.c index d0fd60e..1cc12e6 100644 --- a/src/ivysocket.c +++ b/src/ivysocket.c @@ -26,6 +26,7 @@ #include #include #include +#include #ifdef WIN32 #define close closesocket @@ -186,6 +187,7 @@ static void HandleServer(Channel channel, HANDLE fd, void *data) HANDLE ns; socklen_t addrlen; struct sockaddr_in remote2; + long socketFlag; TRACE( "Accepting Connection...\n"); @@ -210,6 +212,13 @@ static void HandleServer(Channel channel, HANDLE fd, void *data) client->terminator = '\n'; client->from = remote2; client->fd = ns; + + socketFlag = fcntl (client->fd, F_GETFD); + if (fcntl (client->fd, F_SETFD, socketFlag|O_NONBLOCK)) { + fprintf(stderr,"Warning : Setting socket in nonblock mode FAILED\n"); + } + + client->channel = IvyChannelAdd (ns, client, DeleteSocket, HandleSocket ); client->interpretation = server->interpretation; client->ptr = client->buffer; @@ -490,7 +499,8 @@ void *SocketGetData (Client client ) void SocketBroadcast ( char *fmt, ... ) { Client client; - static IvyBuffer buffer = {NULL, 0, 0 }; /* Use satic mem to eliminate multiple call to malloc /free */ + static IvyBuffer buffer = {NULL, 0, 0 }; /* Use satic mem to eliminate + multiple call to malloc /free */ #ifdef OPENMP #pragma omp threadprivate (buffer) #endif @@ -521,7 +531,8 @@ Client SocketConnect (char * host, unsigned short port, fprintf(stderr, "Erreur %s Calculateur inconnu !\n",host); return NULL; } - return SocketConnectAddr ((struct in_addr*)(rhost->h_addr), port, data, interpretation, handle_delete); + return SocketConnectAddr ((struct in_addr*)(rhost->h_addr), port, data, + interpretation, handle_delete); } Client SocketConnectAddr (struct in_addr * addr, unsigned short port, @@ -533,6 +544,7 @@ Client SocketConnectAddr (struct in_addr * addr, unsigned short port, HANDLE handle; Client client; struct sockaddr_in remote; + long socketFlag; remote.sin_family = AF_INET; remote.sin_addr = *addr; @@ -547,6 +559,10 @@ Client SocketConnectAddr (struct in_addr * addr, unsigned short port, perror ("*** client connect ***"); return NULL; }; + socketFlag = fcntl (handle, F_GETFD); + if (fcntl (handle, F_SETFD, socketFlag|O_NONBLOCK)) { + fprintf(stderr,"Warning : Setting socket in nonblock mode FAILED\n"); + } IVY_LIST_ADD_START(clients_list, client ); -- cgit v1.1