From: mquinson Date: Sat, 3 Jul 2004 07:21:25 +0000 (+0000) Subject: gras_socket_close now expect the socket to close (and not its address to X-Git-Tag: v3.3~5197 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/704a0f5dead4ac665eb65bdd686d0bfab8d52f83 gras_socket_close now expect the socket to close (and not its address to put NULL in it after it). This is because the socket passed to handlers is one of their argument (=> not writable). git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@149 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/changelog b/changelog index a2c6a7ef40..e7bee04ec1 100644 --- a/changelog +++ b/changelog @@ -3,6 +3,10 @@ them all up in one shot) [DataDesc] - Fix the ugly case of reference to dynamic array. + [Transport] + - gras_socket_close now expect the socket to close (and not its address to + put NULL in it after it). This is because the socket passed to handlers + is one of their argument (=> not writable). 2004-06-21 [Transport] diff --git a/include/transport.h b/include/transport.h index 0a67d63652..b2b83f0525 100644 --- a/include/transport.h +++ b/include/transport.h @@ -20,7 +20,7 @@ gras_error_t gras_socket_client(const char *host, /* OUT */ gras_socket_t **dst); gras_error_t gras_socket_server(unsigned short port, /* OUT */ gras_socket_t **dst); -void gras_socket_close(gras_socket_t **sd); +void gras_socket_close(gras_socket_t *sd); /* get information about socket */ int gras_socket_my_port (gras_socket_t *sock); diff --git a/src/gras/Transport/transport.c b/src/gras/Transport/transport.c index 70103973d8..dd446cd670 100644 --- a/src/gras/Transport/transport.c +++ b/src/gras/Transport/transport.c @@ -239,21 +239,20 @@ gras_socket_client(const char *host, return no_error; } -void gras_socket_close(gras_socket_t **sock) { +void gras_socket_close(gras_socket_t *sock) { gras_socket_t *sock_iter; int cursor; /* FIXME: Issue an event when the socket is closed */ - if (sock && *sock) { + if (sock) { gras_dynar_foreach(_gras_trp_sockets,cursor,sock_iter) { - if (*sock == sock_iter) { + if (sock == sock_iter) { gras_dynar_cursor_rm(_gras_trp_sockets,&cursor); - if ( (*sock)->plugin->socket_close) - (* (*sock)->plugin->socket_close)(*sock); + if ( sock->plugin->socket_close) + (* sock->plugin->socket_close)(sock); /* free the memory */ - free(*sock); - *sock=NULL; + free(sock); return; } } diff --git a/src/gras/Transport/transport_plugin_tcp.c b/src/gras/Transport/transport_plugin_tcp.c index e11e8dc416..8253035d39 100644 --- a/src/gras/Transport/transport_plugin_tcp.c +++ b/src/gras/Transport/transport_plugin_tcp.c @@ -214,7 +214,7 @@ gras_trp_tcp_socket_accept(gras_socket_t *sock, tmp_errno = errno; if(sd == -1) { - gras_socket_close(&sock); + gras_socket_close(sock); RAISE1(system_error, "Accept failed (%s). Droping server socket.", strerror(tmp_errno)); } else { diff --git a/testsuite/gras/trp_file_client.c b/testsuite/gras/trp_file_client.c index e458aa7686..b7f9eb3c52 100644 --- a/testsuite/gras/trp_file_client.c +++ b/testsuite/gras/trp_file_client.c @@ -15,7 +15,7 @@ //GRAS_LOG_NEW_DEFAULT_CATEGORY(test); int main(int argc,char *argv[]) { - gras_socket_t * sock; + gras_socket_t *sock; gras_error_t errcode; char data_send[256]; @@ -29,7 +29,7 @@ int main(int argc,char *argv[]) { TRYFAIL(gras_trp_chunk_send(sock,data_send, sizeof(data_send))); fprintf(stderr,"===[CLIENT]=== Exiting successfully\n"); - gras_socket_close(&sock); + gras_socket_close(sock); gras_exit(); return 0; diff --git a/testsuite/gras/trp_file_server.c b/testsuite/gras/trp_file_server.c index 3ac4e0cd65..4bff8ed3a0 100644 --- a/testsuite/gras/trp_file_server.c +++ b/testsuite/gras/trp_file_server.c @@ -32,7 +32,7 @@ int main(int argc,char *argv[]) { fprintf(stderr,"===[SERVER]=== Got '%s'.\n", data_recv); fprintf(stderr,"===[SERVER]=== Exiting successfully\n"); - gras_socket_close(&sock); + gras_socket_close(sock); gras_exit(); return 0; diff --git a/testsuite/gras/trp_tcp_client.c b/testsuite/gras/trp_tcp_client.c index bddff1a8dc..580eb2d6d9 100644 --- a/testsuite/gras/trp_tcp_client.c +++ b/testsuite/gras/trp_tcp_client.c @@ -38,7 +38,7 @@ int main(int argc,char *argv[]) { fprintf(stderr,"===[CLIENT]=== Got a valid ACK\n"); fprintf(stderr,"===[CLIENT]=== Exiting successfully\n"); - gras_socket_close(&sock); + gras_socket_close(sock); gras_exit(); return 0; diff --git a/testsuite/gras/trp_tcp_server.c b/testsuite/gras/trp_tcp_server.c index a67bb45a00..e8c0ee7f06 100644 --- a/testsuite/gras/trp_tcp_server.c +++ b/testsuite/gras/trp_tcp_server.c @@ -31,10 +31,10 @@ int main(int argc,char *argv[]) { TRYFAIL(gras_trp_chunk_recv(conn,data_recv, sizeof(data_recv))); fprintf(stderr,"===[SERVER]=== Got '%s'. Send it back.\n", data_recv); TRYFAIL(gras_trp_chunk_send(conn,data_recv, sizeof(data_recv))); - gras_socket_close(&conn); + gras_socket_close(conn); fprintf(stderr,"===[SERVER]=== Exiting successfully\n"); - gras_socket_close(&sock); + gras_socket_close(sock); gras_exit(); return 0;