Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
gras_socket_close now expect the socket to close (and not its address to
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Sat, 3 Jul 2004 07:21:25 +0000 (07:21 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Sat, 3 Jul 2004 07:21:25 +0000 (07:21 +0000)
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

changelog
include/transport.h
src/gras/Transport/transport.c
src/gras/Transport/transport_plugin_tcp.c
testsuite/gras/trp_file_client.c
testsuite/gras/trp_file_server.c
testsuite/gras/trp_tcp_client.c
testsuite/gras/trp_tcp_server.c

index a2c6a7e..e7bee04 100644 (file)
--- 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]
index 0a67d63..b2b83f0 100644 (file)
@@ -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);
index 7010397..dd446cd 100644 (file)
@@ -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;
       }
     }
index e11e8dc..8253035 100644 (file)
@@ -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 {
index e458aa7..b7f9eb3 100644 (file)
@@ -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;
index 3ac4e0c..4bff8ed 100644 (file)
@@ -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;
index bddff1a..580eb2d 100644 (file)
@@ -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;
index a67bb45..e8c0ee7 100644 (file)
@@ -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;