struct rs_sge data_buf;
};
+/*
+ * rsocket states are ordered as connecting, connected, disconnected.
+ */
enum rs_state {
rs_init,
rs_bound,
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)
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)