diff options
Diffstat (limited to 'rpc')
| -rw-r--r-- | rpc/rpc-lib/src/rpc-transport.h | 5 | ||||
| -rw-r--r-- | rpc/rpc-transport/socket/src/socket.c | 2 | 
2 files changed, 7 insertions, 0 deletions
diff --git a/rpc/rpc-lib/src/rpc-transport.h b/rpc/rpc-lib/src/rpc-transport.h index e3b630e2919..ff6567c198e 100644 --- a/rpc/rpc-lib/src/rpc-transport.h +++ b/rpc/rpc-lib/src/rpc-transport.h @@ -212,6 +212,11 @@ struct rpc_transport {          char                      *ssl_name;          dict_t                    *clnt_options; /* store options received from                                                    * client */ +        /* connect_failed: saves the connect() syscall status as socket_t +         * member holding connect() status can't be accessed by higher gfapi +         * layer or in client management notification handler functions +         */ +        gf_boolean_t               connect_failed;  };  struct rpc_transport_ops { diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c index 0ee75951207..d062cbbc4fb 100644 --- a/rpc/rpc-transport/socket/src/socket.c +++ b/rpc/rpc-transport/socket/src/socket.c @@ -3146,6 +3146,7 @@ socket_connect (rpc_transport_t *this, int port)                          }                  } +                this->connect_failed = _gf_false;                  if (ign_enoent) {                          ret = connect_loop (priv->sock,                                              SA (&this->peerinfo.sockaddr), @@ -3169,6 +3170,7 @@ socket_connect (rpc_transport_t *this, int port)                          /* TBD: What about ENOENT, we will do getsockopt there                          as well, so how is that exempt from such a problem? */                          priv->connect_failed = 1; +                        this->connect_failed = _gf_true;                          goto handler;                  }  | 
