summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rpc/rpc-transport/socket/src/socket.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c
index a39c16d2099..eef5bd2feae 100644
--- a/rpc/rpc-transport/socket/src/socket.c
+++ b/rpc/rpc-transport/socket/src/socket.c
@@ -2427,6 +2427,12 @@ socket_poller (void *ctx)
uint32_t gen = 0;
char *cname = NULL;
+ GF_ASSERT (this);
+ /* Set THIS early on in the life of this thread, instead of setting it
+ * conditionally
+ */
+ THIS = this->xl;
+
priv->ot_state = OT_RUNNING;
if (priv->use_ssl) {
@@ -2455,7 +2461,6 @@ socket_poller (void *ctx)
}
if (priv->connected == 0) {
- THIS = this->xl;
ret = socket_connect_finish (this);
if (ret != 0) {
gf_log (this->name, GF_LOG_WARNING,
@@ -2496,8 +2501,7 @@ socket_poller (void *ctx)
"poll error on pipe");
break;
}
- /* Only glusterd actually seems to need this. */
- THIS = this->xl;
+
if (pfd[1].revents & POLL_MASK_INPUT) {
ret = socket_event_poll_in(this);
if (ret >= 0) {
@@ -2575,8 +2579,7 @@ err:
priv->sock = -1;
priv->ot_state = OT_IDLE;
pthread_mutex_unlock(&priv->lock);
- rpc_transport_notify (this->listener, RPC_TRANSPORT_DISCONNECT,
- this);
+ rpc_transport_notify (this, RPC_TRANSPORT_DISCONNECT, this);
rpc_transport_unref (this);
return NULL;
}