]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
Refresh of rs-recv-hang
authorSean Hefty <sean.hefty@intel.com>
Sat, 26 May 2012 00:28:14 +0000 (17:28 -0700)
committerSean Hefty <sean.hefty@intel.com>
Sat, 26 May 2012 00:28:14 +0000 (17:28 -0700)
src/rsocket.c

index 5eec5d9c6a8f0cfa5f34e3d945a5baec3f49fa3e..dc6fc70837caa36a19a06611bd3d7a0574183e35 100644 (file)
@@ -121,6 +121,9 @@ struct rs_conn_data {
        struct rs_sge     data_buf;
 };
 
+/*
+ * rsocket states are ordered as connecting, connected, disconnected.
+ */
 enum rs_state {
        rs_init,
        rs_bound,
@@ -994,9 +997,7 @@ ssize_t rrecv(int socket, void *buf, size_t len, int flags)
        int ret;
 
        rs = idm_at(&idm, socket);
-       if (rs->state != rs_connected &&
-           (rs->state == rs_resolving_addr || rs->state == rs_resolving_route ||
-            rs->state == rs_connecting || rs->state == rs_accepting)) {
+       if (rs->state < rs_connected) {
                ret = rs_do_connect(rs);
                if (ret) {
                        if (errno == EINPROGRESS)
@@ -1098,7 +1099,7 @@ ssize_t rsend(int socket, const void *buf, size_t len, int flags)
        int ret = 0;
 
        rs = idm_at(&idm, socket);
-       if (rs->state != rs_connected) {
+       if (rs->state < rs_connected) {
                ret = rs_do_connect(rs);
                if (ret) {
                        if (errno == EINPROGRESS)