Version: 1
-Previous: f8af58b04bfe326e34e3784bc17d219e83cc870d
-Head: b6b9b190f9360838805efed5a2f097e6beb7d5a4
+Previous: 987792133bd31a784b2c1349ac86285bfc0f2e52
+Head: 9e58d865121e298d1d556bf10d3f0a84c7f8959e
Applied:
v6only: 3afce107e2baec86c5541ed0acd992e37bcb992a
rselect: 7d25968d337e976e0e22fdba69c8a2a2f5d35008
shut_wr: b6b9b190f9360838805efed5a2f097e6beb7d5a4
+ refresh-temp: 9e58d865121e298d1d556bf10d3f0a84c7f8959e
Unapplied:
rs-1sge: 8ec392829399dec7ed5c608b8697a482e5faa2de
ip6-opt: 7e43a759255e9890d1e41f1edf71792836f53941
--- /dev/null
+Bottom: 9c6317e02ea13b4c7c116bc0ca8be00c54af4ed4
+Top: 05a5cd3651f670e432b95b931b9a56acfd6820c7
+Author: Sean Hefty <sean.hefty@intel.com>
+Date: 2012-06-26 16:49:57 -0700
+
+Refresh of shut_wr
+
+---
+
+diff --git a/src/rsocket.c b/src/rsocket.c
+index a25c31a..5fc5404 100644
+--- a/src/rsocket.c
++++ b/src/rsocket.c
+@@ -147,6 +147,7 @@ enum rs_state {
+ rs_connected = 0x0100,
+ rs_connect_wr = rs_connected | 0x0200,
+ rs_connect_rd = rs_connected | 0x0400,
++ rs_connect_rdwr = rs_connect_rd | rs_connect_wr,
+ rs_connect_error = 0x0800,
+ rs_disconnected = 0x1000,
+ rs_error = 0x2000,
+@@ -632,7 +633,7 @@ int raccept(int socket, struct sockaddr *addr, socklen_t *addrlen)
+ rs_set_conn_data(new_rs, ¶m, &cresp);
+ ret = rdma_accept(new_rs->cm_id, ¶m);
+ if (!ret)
+- new_rs->state = rs_connected;
++ new_rs->state = rs_connect_rdwr;
+ else if (errno == EAGAIN || errno == EWOULDBLOCK)
+ new_rs->state = rs_accepting;
+ else
+@@ -719,7 +720,7 @@ connected:
+ }
+
+ rs_save_conn_data(rs, cresp);
+- rs->state = rs_connected;
++ rs->state = rs_connect_rdwr;
+ break;
+ case rs_accepting:
+ if (!(rs->fd_flags & O_NONBLOCK))
+@@ -729,7 +730,7 @@ connected:
+ if (ret)
+ break;
+
+- rs->state = rs_connected;
++ rs->state = rs_connect_rdwr;
+ break;
+ default:
+ ret = ERR(EINVAL);
+@@ -1728,7 +1729,7 @@ int rshutdown(int socket, int how)
+ 0, 0, 0);
+ }
+
+- if (!rs_all_sends_done(rs) && rs->state != rs_error)
++ if (!rs_all_sends_done(rs) && !(rs->state & rs_error))
+ rs_process_cq(rs, 0, rs_all_sends_done);
+
+ if ((rs->fd_flags & O_NONBLOCK) && (how == SHUT_WR))