Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
reduce the verbosity of *all* setsockopt failures to set buffer sizes to keep darwin...
[simgrid.git] / src / gras / Transport / transport_plugin_tcp.c
index b8878fd..8b58f55 100644 (file)
@@ -90,7 +90,7 @@ static XBT_INLINE void gras_trp_sock_socket_client(gras_trp_plugin_t ignored,
 
   if (setsockopt(sock->sd, SOL_SOCKET, SO_RCVBUF, (char *)&size, sizeof(size)) ||
       setsockopt(sock->sd, SOL_SOCKET, SO_SNDBUF, (char *)&size, sizeof(size))) {
-     WARN1("setsockopt failed, cannot set buffer size: %s",sock_errstr(sock_errno));
+     VERB1("setsockopt failed, cannot set buffer size: %s",sock_errstr(sock_errno));
   }
   
   he = gethostbyname (sock->peer_name);
@@ -148,7 +148,7 @@ static XBT_INLINE void gras_trp_sock_socket_server(gras_trp_plugin_t ignored,
                    (char *)&size, sizeof(size)) 
       || setsockopt(sock->sd, SOL_SOCKET, SO_SNDBUF, 
                    (char *)&size, sizeof(size))) {
-     WARN1("setsockopt failed, cannot set buffer size: %s",
+     VERB1("setsockopt failed, cannot set buffer size: %s",
           sock_errstr(sock_errno));
   }
        
@@ -206,7 +206,7 @@ static gras_socket_t gras_trp_sock_socket_accept(gras_socket_t sock) {
   size = sock->buf_size;
   if (setsockopt(sd, SOL_SOCKET, SO_RCVBUF, (char *)&size, sizeof(size))
       || setsockopt(sd, SOL_SOCKET, SO_SNDBUF, (char *)&size, sizeof(size)))
-    WARN1("setsockopt failed, cannot set buffer size: %s", sock_errstr(tmp_errno));
+    VERB1("setsockopt failed, cannot set buffer size: %s", sock_errstr(tmp_errno));
      
   res->plugin    = sock->plugin;
   res->incoming  = sock->incoming;
@@ -322,6 +322,13 @@ gras_trp_tcp_recv_withbuffer(gras_socket_t sock,
 
   int got = 0;
 
+  if (sock->recvd) {
+     data[0] = sock->recvd_val;
+     sock->recvd = 0;
+     got++;
+     bufsize--;
+  }   
+
   while (size>got) {
     int status = 0;
     
@@ -343,7 +350,7 @@ gras_trp_tcp_recv_withbuffer(gras_socket_t sock,
       bufsize -= status;
       got     += status;
     } else {
-      THROW1(system_error,0,"Socket closed by remote side (got %d bytes before this)",
+      THROW1(system_error,errno,"Socket closed by remote side (got %d bytes before this)",
             got);
     }
   }