Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
also save the cbps in SG, the same way I do in RL since a long time. I love calltree
[simgrid.git] / src / gras / Transport / transport.c
index 83a2175..623884d 100644 (file)
@@ -158,6 +158,7 @@ void gras_trp_socket_new(int incoming,
   sock->outgoing  = incoming ? 0:1;
   sock->accepting = incoming ? 1:0;
   sock->meas = 0;
+  sock->recv_ok = 1;
 
   sock->sd     = -1;
   sock->port      = -1;
@@ -225,7 +226,8 @@ gras_socket_server_ext(unsigned short port,
     RETHROW;
   }
 
-  ((gras_trp_procdata_t) gras_libdata_by_id(gras_trp_libdata_id))->myport = port;
+  if (!measurement)
+     ((gras_trp_procdata_t) gras_libdata_by_id(gras_trp_libdata_id))->myport = port;
   return sock;
 }
 /**
@@ -242,21 +244,22 @@ gras_socket_t
 gras_socket_server_range(unsigned short minport, unsigned short maxport,
                         unsigned long int buf_size, int measurement) {
    
-   int port;
-   gras_socket_t res=NULL;
-   xbt_ex_t e;
-   
-   for (port=minport; port<maxport;port ++) {
-      TRY {
-        res=gras_socket_server_ext(port,buf_size,measurement);
-      } CATCH(e) {
-        if (port==maxport)
-          RETHROW;
-        xbt_ex_free(e);
-      }
+  int port;
+  gras_socket_t res=NULL;
+  xbt_ex_t e;
+  
+  for (port=minport; port<maxport;port ++) {
+    TRY {
+      res=gras_socket_server_ext(port,buf_size,measurement);
+    } CATCH(e) {
+      if (port==maxport)
+       RETHROW;
+      xbt_ex_free(e);
+    }
+    if (res)
       return res;
-   }
-   THROW_IMPOSSIBLE;
+  }
+  THROW_IMPOSSIBLE;
 }
    
 /**
@@ -323,7 +326,7 @@ gras_socket_client(const char *host,
    return gras_socket_client_ext(host,port,0,0);
 }
 
-/** @brief Opens a client socket to a remote host specified as '<host>:<port>' */
+/** @brief Opens a client socket to a remote host specified as '\a host:\a port' */
 gras_socket_t
 gras_socket_client_from_string(const char *host) {
    xbt_host_t h = xbt_host_from_string(host);
@@ -355,7 +358,8 @@ void gras_socket_close(gras_socket_t sock) {
        return;
       }
     }
-    WARN1("Ignoring request to free an unknown socket (%p)",sock);
+    WARN1("Ignoring request to free an unknown socket (%p). Execution stack:",sock);
+    xbt_backtrace_display();
   }
   XBT_OUT;
 }
@@ -567,3 +571,7 @@ void gras_trp_register() {
    gras_trp_libdata_id = gras_procdata_add("gras_trp",gras_trp_procdata_new, gras_trp_procdata_free);
 }
 
+int gras_os_myport(void)  {
+   return ((gras_trp_procdata_t) gras_libdata_by_id(gras_trp_libdata_id))->myport;
+}
+