Version: 1
-Previous: 951b42932f0aac33c890e79f4084999985bc2777
+Previous: e0d8bf054de0b16d6fcd269d58a286c048fbf3d2
Head: 548f496443177ae86bbd9690ad315351ce1efae4
Applied:
destroy_cqs: 66410c265b2661e16b7f6126bcc4ea5c7e1af1bd
acm-sock: dbc1a8fd27cad76749a228f01b8bf708832cdae0
acm-init: 666fa02d8f18ac2e98008cd3d57a90a864203548
pre-socket: 659f605c2d6bdba067651138aa5ffc01f14465d6
+ rs-states: 548f496443177ae86bbd9690ad315351ce1efae4
Unapplied:
rs-1sge: 85e4c4a0da0b501b60a1035d7a003ee20a749511
rs-def-inline: 6ad70d3b80178e40fea97f662a6b31e51cddc0af
- rs-states: 093242597614aefb205cdbebb14ce59775b11243
rs-recv-hang: 7f62ace0f6bae5cc302bd58dd24ef5455229e1cb
rstream-opt: e7db81a741c83da0739c078351abcc730465404a
Hidden:
-Bottom: fbb83f69330642e2137a4cc6bd617b2cf9efb85b
-Top: 58e892deadb121454026692a0c778cbb9d22e540
+Bottom: 87ab98f3bddaca811ce2dc2b7920287c23686a20
+Top: 87ab98f3bddaca811ce2dc2b7920287c23686a20
Author: Sean Hefty <sean.hefty@intel.com>
Date: 2012-05-25 17:28:44 -0700
---
-diff --git a/src/rsocket.c b/src/rsocket.c
-index e591116..8cbd425 100644
---- a/src/rsocket.c
-+++ b/src/rsocket.c
-@@ -121,6 +121,9 @@ struct rs_conn_data {
- struct rs_sge data_buf;
- };
-
-+/*
-+ * rsocket states are ordered as passive, connecting, connected, disconnected.
-+ */
- enum rs_state {
- rs_init,
- rs_bound,
-@@ -129,9 +132,9 @@ enum rs_state {
- rs_resolving_route,
- rs_connecting,
- rs_accepting,
-+ rs_connect_error,
- rs_connected,
- rs_disconnected,
-- rs_connect_error,
- rs_error
- };
-
-@@ -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)
-@@ -1190,7 +1191,7 @@ static ssize_t rsendv(int socket, const struct iovec *iov, int iovcnt, int flags
- int i, 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)
-@@ -1319,7 +1320,7 @@ static int rs_poll_rs(struct rsocket *rs, int events,
- revents |= POLLOUT;
- if (rs->state == rs_disconnected)
- revents |= POLLHUP;
-- if (rs->state == rs_error)
-+ else if (rs->state == rs_error)
- revents |= POLLERR;
-
- return revents;
-@@ -1360,16 +1361,11 @@ static int rs_poll_arm(struct pollfd *rfds, struct pollfd *fds, nfds_t nfds)
- if (fds[i].revents)
- return 1;
-
-- switch (rs->state) {
-- case rs_connected:
-- case rs_disconnected:
-- case rs_error:
-+ if (rs->state >= rs_connected)
- rfds[i].fd = rs->cm_id->recv_cq_channel->fd;
-- break;
-- default:
-+ else
- rfds[i].fd = rs->cm_id->channel->fd;
-- break;
-- }
-+
- rfds[i].events = POLLIN;
- } else {
- rfds[i].fd = fds[i].fd;
+