[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