[PVFS2-CVS] commit by walt in pvfs2-1/src/io/bmi/bmi_tcp: bmi-tcp.c sockio.c sockio.h

CVS commit program cvs at parl.clemson.edu
Wed Jul 13 12:45:56 EDT 2005


Update of /projects/cvsroot/pvfs2-1/src/io/bmi/bmi_tcp
In directory parlweb:/tmp/cvs-serv31772/src/io/bmi/bmi_tcp

Modified Files:
	bmi-tcp.c sockio.c sockio.h 
Log Message:
fixed error reporting for gethostbyname in BMI-TCP
also fixed simple omissions and errors in related code


Index: bmi-tcp.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/io/bmi/bmi_tcp/bmi-tcp.c,v
diff -p -u -r1.91 -r1.92
--- bmi-tcp.c	7 Jul 2005 21:47:48 -0000	1.91
+++ bmi-tcp.c	13 Jul 2005 15:45:56 -0000	1.92
@@ -1640,7 +1640,7 @@ static int tcp_sock_init(method_addr_p m
 	fcntl(tcp_addr_data->socket, F_SETFL, oldfl | O_NONBLOCK);
     }
 
-    /* turn of Nagle's algorithm */
+    /* turn off Nagle's algorithm */
     if (BMI_sockio_set_tcpopt(tcp_addr_data->socket, TCP_NODELAY, 1) < 0)
     {
 	tmp_errno = errno;
@@ -1655,9 +1655,9 @@ static int tcp_sock_init(method_addr_p m
 		      "Connect: socket=%d, hostname=%s, port=%d\n",
 		      tcp_addr_data->socket, tcp_addr_data->hostname,
 		      tcp_addr_data->port);
-	ret =
-	    BMI_sockio_connect_sock(tcp_addr_data->socket, tcp_addr_data->hostname,
-			 tcp_addr_data->port);
+	ret = BMI_sockio_connect_sock(tcp_addr_data->socket,
+                      tcp_addr_data->hostname,
+		      tcp_addr_data->port);
     }
     else
     {
@@ -1673,9 +1673,9 @@ static int tcp_sock_init(method_addr_p m
 	}
 	else
 	{
-            tmp_errno = errno;
-	    gossip_err("Error: BMI_sockio_connect_sock: %s\n", strerror(tmp_errno));
-	    return (bmi_tcp_errno_to_pvfs(-tmp_errno));
+            /* BMI_sockio_connect_sock returns a PVFS error */
+            PVFS_perror_gossip("Error: BMI_sockio_connect_sock", ret);
+	    return (ret);
 	}
     }
 
@@ -2665,6 +2665,7 @@ static int work_on_send_op(method_op_p m
 	ret = tcp_sock_init(my_method_op->addr);
 	if (ret < 0)
 	{
+            PVFS_perror_gossip("Error: socket failed to init", ret);
 	    tcp_forget_addr(my_method_op->addr, 0, ret);
 	    return (0);
 	}

Index: sockio.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/io/bmi/bmi_tcp/sockio.c,v
diff -p -u -r1.18 -r1.19
--- sockio.c	16 Jun 2005 20:42:24 -0000	1.18
+++ sockio.c	13 Jul 2005 15:45:56 -0000	1.19
@@ -65,20 +65,38 @@ int BMI_sockio_connect_sock(int sockd,
 		 int service)
 {
     struct sockaddr saddr;
+    int ret;
 
-    if (BMI_sockio_init_sock(&saddr, name, service) != 0)
-	return (-1);
+    if ((ret = BMI_sockio_init_sock(&saddr, name, service)) != 0)
+	return (ret); /* converted to PVFS error code below */
   connect_sock_restart:
     if (connect(sockd, (struct sockaddr *) &saddr, sizeof(saddr)) < 0)
     {
 	if (errno == EINTR)
 	    goto connect_sock_restart;
-	return (-1);
+        return (-PVFS_ERROR_CODE(errno));
     }
     return (sockd);
 }
 
 #ifdef HAVE_GETHOSTBYNAME
+static int conv_h_errno(int herr)
+{   
+    switch (herr)
+    {
+    case HOST_NOT_FOUND :
+        return BMI_EHOSTNTFD;
+    case NO_ADDRESS :
+        return BMI_EADDRNTFD;
+    case NO_RECOVERY :
+        return BMI_ENORECVR;
+    case TRY_AGAIN :
+        return BMI_ETRYAGAIN;
+    default :
+        return herr;
+    }
+}
+
 /* gethostbyname version */
 int BMI_sockio_init_sock(struct sockaddr *saddrp,
 			 const char *name,
@@ -91,12 +109,12 @@ int BMI_sockio_init_sock(struct sockaddr
     {
 	if ((hep = gethostbyname("localhost")) == NULL)
 	{
-	    return (-1);
+	    return (-conv_h_errno(h_errno));
 	}
     }
     else if ((hep = gethostbyname(name)) == NULL)
     {
-	return (-1);
+	return (-conv_h_errno(h_errno));
     }
     ((struct sockaddr_in *) saddrp)->sin_family = AF_INET;
     ((struct sockaddr_in *) saddrp)->sin_port = htons((u_short) service);

Index: sockio.h
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/io/bmi/bmi_tcp/sockio.h,v
diff -p -u -r1.13 -r1.14
--- sockio.h	28 Jul 2004 14:32:41 -0000	1.13
+++ sockio.h	13 Jul 2005 15:45:56 -0000	1.14
@@ -27,6 +27,8 @@
 #include <netinet/in.h>
 #include <stdio.h>
 
+#include "bmi-types.h"
+
 int BMI_sockio_new_sock(void);
 int BMI_sockio_bind_sock(int,
 			 int);



More information about the PVFS2-CVS mailing list