diff options
Diffstat (limited to 'rpc/rpc-transport/socket/src/socket.c')
| -rw-r--r-- | rpc/rpc-transport/socket/src/socket.c | 175 | 
1 files changed, 91 insertions, 84 deletions
diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c index 7861e67cc05..71f927063ff 100644 --- a/rpc/rpc-transport/socket/src/socket.c +++ b/rpc/rpc-transport/socket/src/socket.c @@ -168,7 +168,7 @@ ssl_setup_connection_params(rpc_transport_t *this);                                                                                 \          ret = __socket_readv(this, in->pending_vector, 1, &in->pending_vector, \                               &in->pending_count, &bytes_read);                 \ -        if (ret == -1)                                                         \ +        if (ret < 0)                                                           \              break;                                                             \          __socket_proto_update_priv_after_read(priv, ret, bytes_read);          \      } @@ -733,7 +733,7 @@ __socket_rwv(rpc_transport_t *this, struct iovec *vector, int count,                  ret = sys_writev(sock, opvector, IOV_MIN(opcount));              } -            if (ret == 0 || (ret == -1 && errno == EAGAIN)) { +            if ((ret == 0) || ((ret < 0) && (errno == EAGAIN))) {                  /* done for now */                  break;              } else if (ret > 0) @@ -748,7 +748,7 @@ __socket_rwv(rpc_transport_t *this, struct iovec *vector, int count,                  errno = ENODATA;                  ret = -1;              } -            if (ret == -1 && errno == EAGAIN) { +            if ((ret < 0) && (errno == EAGAIN)) {                  /* done for now */                  break;              } else if (ret > 0) @@ -764,7 +764,7 @@ __socket_rwv(rpc_transport_t *this, struct iovec *vector, int count,              errno = ENOTCONN;              break;          } -        if (ret == -1) { +        if (ret < 0) {              if (errno == EINTR)                  continue; @@ -901,7 +901,7 @@ __socket_disconnect(rpc_transport_t *this)      gf_log(this->name, GF_LOG_TRACE, "disconnecting %p, sock=%d", this,             priv->sock); -    if (priv->sock != -1) { +    if (priv->sock >= 0) {          gf_log_callingfn(this->name, GF_LOG_TRACE,                           "tearing down socket connection");          ret = __socket_teardown_connection(this); @@ -938,7 +938,7 @@ __socket_server_bind(rpc_transport_t *this)      ret = setsockopt(priv->sock, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)); -    if (ret == -1) { +    if (ret != 0) {          gf_log(this->name, GF_LOG_ERROR,                 "setsockopt() for SO_REUSEADDR failed (%s)", strerror(errno));      } @@ -951,7 +951,7 @@ __socket_server_bind(rpc_transport_t *this)          if (reuse_check_sock >= 0) {              ret = connect(reuse_check_sock, SA(&unix_addr),                            this->myinfo.sockaddr_len); -            if ((ret == -1) && (ECONNREFUSED == errno)) { +            if ((ret != 0) && (ECONNREFUSED == errno)) {                  sys_unlink(((struct sockaddr_un *)&unix_addr)->sun_path);              }              gf_log(this->name, GF_LOG_INFO, @@ -972,7 +972,7 @@ __socket_server_bind(rpc_transport_t *this)          while (retries) {              ret = bind(priv->sock, (struct sockaddr *)&this->myinfo.sockaddr,                         this->myinfo.sockaddr_len); -            if (ret == -1) { +            if (ret != 0) {                  gf_log(this->name, GF_LOG_ERROR, "binding to %s failed: %s",                         this->myinfo.identifier, strerror(errno));                  if (errno == EADDRINUSE) { @@ -990,7 +990,7 @@ __socket_server_bind(rpc_transport_t *this)          ret = bind(priv->sock, (struct sockaddr *)&this->myinfo.sockaddr,                     this->myinfo.sockaddr_len); -        if (ret == -1) { +        if (ret != 0) {              gf_log(this->name, GF_LOG_ERROR, "binding to %s failed: %s",                     this->myinfo.identifier, strerror(errno));              if (errno == EADDRINUSE) { @@ -1000,7 +1000,7 @@ __socket_server_bind(rpc_transport_t *this)      }      if (AF_UNIX != SA(&this->myinfo.sockaddr)->sa_family) {          if (getsockname(priv->sock, SA(&this->myinfo.sockaddr), -                        &this->myinfo.sockaddr_len) == -1) { +                        &this->myinfo.sockaddr_len) != 0) {              gf_log(this->name, GF_LOG_WARNING,                     "getsockname on (%d) failed (%s)", priv->sock,                     strerror(errno)); @@ -1028,7 +1028,7 @@ __socket_nonblock(int fd)      flags = fcntl(fd, F_GETFL); -    if (flags != -1) +    if (flags >= 0)          ret = fcntl(fd, F_SETFL, flags | O_NONBLOCK);      return ret; @@ -1058,7 +1058,7 @@ __socket_keepalive(int fd, int family, int keepaliveintvl, int keepaliveidle,  #endif      ret = setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &on, sizeof(on)); -    if (ret == -1) { +    if (ret != 0) {          gf_log("socket", GF_LOG_WARNING,                 "failed to set keep alive option on socket %d", fd);          goto err; @@ -1075,7 +1075,7 @@ __socket_keepalive(int fd, int family, int keepaliveintvl, int keepaliveidle,      ret = setsockopt(fd, IPPROTO_TCP, TCP_KEEPALIVE, &keepaliveintvl,                       sizeof(keepaliveintvl));  #endif -    if (ret == -1) { +    if (ret != 0) {          gf_log("socket", GF_LOG_WARNING,                 "failed to set keep alive interval on socket %d", fd);          goto err; @@ -1086,7 +1086,7 @@ __socket_keepalive(int fd, int family, int keepaliveintvl, int keepaliveidle,      ret = setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &keepaliveidle,                       sizeof(keepaliveidle)); -    if (ret == -1) { +    if (ret != 0) {          gf_log("socket", GF_LOG_WARNING,                 "failed to set keep idle %d on socket %d, %s", keepaliveidle, fd,                 strerror(errno)); @@ -1094,7 +1094,7 @@ __socket_keepalive(int fd, int family, int keepaliveintvl, int keepaliveidle,      }      ret = setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &keepaliveintvl,                       sizeof(keepaliveintvl)); -    if (ret == -1) { +    if (ret != 0) {          gf_log("socket", GF_LOG_WARNING,                 "failed to set keep interval %d on socket %d, %s",                 keepaliveintvl, fd, strerror(errno)); @@ -1106,7 +1106,7 @@ __socket_keepalive(int fd, int family, int keepaliveintvl, int keepaliveidle,          goto done;      ret = setsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &timeout_ms,                       sizeof(timeout_ms)); -    if (ret == -1) { +    if (ret != 0) {          gf_log("socket", GF_LOG_WARNING,                 "failed to set "                 "TCP_USER_TIMEOUT %d on socket %d, %s", @@ -1117,7 +1117,7 @@ __socket_keepalive(int fd, int family, int keepaliveintvl, int keepaliveidle,  #if defined(TCP_KEEPCNT)      ret = setsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT, &keepalivecnt,                       sizeof(keepalivecnt)); -    if (ret == -1) { +    if (ret != 0) {          gf_log("socket", GF_LOG_WARNING,                 "failed to set "                 "TCP_KEEPCNT %d on socket %d, %s", @@ -1398,7 +1398,7 @@ socket_event_poll_err(rpc_transport_t *this, int gen, int idx)      pthread_mutex_lock(&priv->out_lock);      { -        if ((priv->gen == gen) && (priv->idx == idx) && (priv->sock != -1)) { +        if ((priv->gen == gen) && (priv->idx == idx) && (priv->sock >= 0)) {              __socket_ioq_flush(this);              __socket_reset(this);              socket_closed = _gf_true; @@ -1437,7 +1437,7 @@ socket_event_poll_out(rpc_transport_t *this)          if (priv->connected == 1) {              ret = __socket_ioq_churn(this); -            if (ret == -1) { +            if (ret < 0) {                  gf_log(this->name, GF_LOG_TRACE,                         "__socket_ioq_churn returned -1; "                         "disconnecting socket"); @@ -1495,7 +1495,7 @@ __socket_read_simple_msg(rpc_transport_t *this)                                       &bytes_read);              } -            if (ret == -1) { +            if (ret < 0) {                  gf_log(this->name, GF_LOG_WARNING,                         "reading from socket failed. Error (%s), "                         "peer (%s)", @@ -1693,8 +1693,8 @@ __socket_read_vectored_request(rpc_transport_t *this,              remaining_size = RPC_FRAGSIZE(in->fraghdr) - frag->bytes_read; -            if ((ret == -1) || ((ret == 0) && (remaining_size == 0) && -                                RPC_LASTFRAG(in->fraghdr))) { +            if ((ret < 0) || ((ret == 0) && (remaining_size == 0) && +                              RPC_LASTFRAG(in->fraghdr))) {                  request->vector_state = SP_STATE_VECTORED_REQUEST_INIT;                  in->payload_vector.iov_len = ((unsigned long)frag->fragcurrent -                                                (unsigned long) @@ -1771,8 +1771,8 @@ __socket_read_request(rpc_transport_t *this)              remaining_size = RPC_FRAGSIZE(in->fraghdr) - frag->bytes_read; -            if ((ret == -1) || ((ret == 0) && (remaining_size == 0) && -                                (RPC_LASTFRAG(in->fraghdr)))) { +            if ((ret < 0) || ((ret == 0) && (remaining_size == 0) && +                              (RPC_LASTFRAG(in->fraghdr)))) {                  request->header_state = SP_STATE_REQUEST_HEADER_INIT;              } @@ -1902,8 +1902,8 @@ __socket_read_accepted_successful_reply(rpc_transport_t *this)              /* now read the entire remaining msg into new iobuf */              ret = __socket_read_simple_msg(this);              remaining_size = RPC_FRAGSIZE(in->fraghdr) - frag->bytes_read; -            if ((ret == -1) || ((ret == 0) && (remaining_size == 0) && -                                RPC_LASTFRAG(in->fraghdr))) { +            if ((ret < 0) || ((ret == 0) && (remaining_size == 0) && +                              RPC_LASTFRAG(in->fraghdr))) {                  frag->call_body.reply.accepted_success_state =                      SP_STATE_ACCEPTED_SUCCESS_REPLY_INIT;              } @@ -2035,8 +2035,8 @@ __socket_read_accepted_successful_reply_v2(rpc_transport_t *this)              /* now read the entire remaining msg into new iobuf */              ret = __socket_read_simple_msg(this);              remaining_size = RPC_FRAGSIZE(in->fraghdr) - frag->bytes_read; -            if ((ret == -1) || ((ret == 0) && (remaining_size == 0) && -                                RPC_LASTFRAG(in->fraghdr))) { +            if ((ret < 0) || ((ret == 0) && (remaining_size == 0) && +                              RPC_LASTFRAG(in->fraghdr))) {                  frag->call_body.reply.accepted_success_state =                      SP_STATE_ACCEPTED_SUCCESS_REPLY_INIT;              } @@ -2135,8 +2135,8 @@ __socket_read_accepted_reply(rpc_transport_t *this)              remaining_size = RPC_FRAGSIZE(in->fraghdr) - frag->bytes_read; -            if ((ret == -1) || ((ret == 0) && (remaining_size == 0) && -                                (RPC_LASTFRAG(in->fraghdr)))) { +            if ((ret < 0) || ((ret == 0) && (remaining_size == 0) && +                              (RPC_LASTFRAG(in->fraghdr)))) {                  frag->call_body.reply                      .accepted_state = SP_STATE_ACCEPTED_REPLY_INIT;              } @@ -2201,8 +2201,8 @@ __socket_read_vectored_reply(rpc_transport_t *this)              remaining_size = RPC_FRAGSIZE(in->fraghdr) - frag->bytes_read; -            if ((ret == -1) || ((ret == 0) && (remaining_size == 0) && -                                (RPC_LASTFRAG(in->fraghdr)))) { +            if ((ret < 0) || ((ret == 0) && (remaining_size == 0) && +                              (RPC_LASTFRAG(in->fraghdr)))) {                  frag->call_body.reply                      .status_state = SP_STATE_VECTORED_REPLY_STATUS_INIT;                  in->payload_vector.iov_len = (unsigned long)frag->fragcurrent - @@ -2269,7 +2269,7 @@ __socket_read_reply(rpc_transport_t *this)          /* Transition back to externally visible state. */          frag->state = SP_STATE_READ_MSGTYPE; -        if (ret == -1) { +        if (ret < 0) {              gf_log(this->name, GF_LOG_WARNING,                     "notify for event MAP_XID failed for %s",                     this->peerinfo.identifier); @@ -2347,8 +2347,8 @@ __socket_read_frag(rpc_transport_t *this)              remaining_size = RPC_FRAGSIZE(in->fraghdr) - frag->bytes_read; -            if ((ret == -1) || ((ret == 0) && (remaining_size == 0) && -                                (RPC_LASTFRAG(in->fraghdr)))) { +            if ((ret < 0) || ((ret == 0) && (remaining_size == 0) && +                              (RPC_LASTFRAG(in->fraghdr)))) {                  /* frag->state = SP_STATE_NADA; */                  frag->state = SP_STATE_RPCFRAG_INIT;              } @@ -2432,7 +2432,7 @@ __socket_proto_state_machine(rpc_transport_t *this,                  ret = __socket_readv(this, in->pending_vector, 1,                                       &in->pending_vector, &in->pending_count,                                       NULL); -                if (ret == -1) +                if (ret < 0)                      goto out;                  if (ret > 0) { @@ -2454,7 +2454,7 @@ __socket_proto_state_machine(rpc_transport_t *this,                  in->total_bytes_read += RPC_FRAGSIZE(in->fraghdr);                  if (in->total_bytes_read >= GF_UNIT_GB) { -                    ret = -ENOMEM; +                    ret = -1;                      goto out;                  } @@ -2462,7 +2462,7 @@ __socket_proto_state_machine(rpc_transport_t *this,                      this->ctx->iobuf_pool,                      (in->total_bytes_read + sizeof(in->fraghdr)));                  if (!iobuf) { -                    ret = -ENOMEM; +                    ret = -1;                      goto out;                  } @@ -2489,7 +2489,7 @@ __socket_proto_state_machine(rpc_transport_t *this,              case SP_STATE_READING_FRAG:                  ret = __socket_read_frag(this); -                if ((ret == -1) || +                if ((ret < 0) ||                      (frag->bytes_read != RPC_FRAGSIZE(in->fraghdr))) {                      goto out;                  } @@ -2634,7 +2634,7 @@ socket_event_poll_in(rpc_transport_t *this, gf_boolean_t notify_handled)          pthread_mutex_unlock(&priv->notify.lock);      } -    if (notify_handled && (ret != -1)) +    if (notify_handled && (ret >= 0))          gf_event_handled(ctx->event_pool, priv->sock, priv->idx, priv->gen);      if (pollin) { @@ -2667,10 +2667,10 @@ socket_connect_finish(rpc_transport_t *this)          ret = __socket_connect_finish(priv->sock); -        if (ret == -1 && errno == EINPROGRESS) +        if ((ret < 0) && (errno == EINPROGRESS))              ret = 1; -        if (ret == -1 && errno != EINPROGRESS) { +        if ((ret < 0) && (errno != EINPROGRESS)) {              if (!priv->connect_finish_log) {                  gf_log(this->name, GF_LOG_ERROR,                         "connection to %s failed (%s); " @@ -2689,7 +2689,7 @@ socket_connect_finish(rpc_transport_t *this)              ret = getsockname(priv->sock, SA(&this->myinfo.sockaddr),                                &this->myinfo.sockaddr_len); -            if (ret == -1) { +            if (ret != 0) {                  gf_log(this->name, GF_LOG_WARNING,                         "getsockname on (%d) failed (%s) - "                         "disconnecting socket", @@ -2973,6 +2973,13 @@ socket_event_handler(int fd, int idx, int gen, void *data, int poll_in,          return;      } +    /* At this point we are sure no other thread is using the transport because +     * we cannot receive more events until we call gf_event_handled(). However +     * this function may call gf_event_handled() in some cases. When this is +     * done, the transport may be destroyed at any moment if another thread +     * handled an error event. To prevent that we take a reference here. */ +    rpc_transport_ref(this); +      GF_VALIDATE_OR_GOTO("socket", this, out);      GF_VALIDATE_OR_GOTO("socket", this->private, out);      GF_VALIDATE_OR_GOTO("socket", this->xl, out); @@ -3009,7 +3016,7 @@ socket_event_handler(int fd, int idx, int gen, void *data, int poll_in,              if (ret > 0) {                  gf_log(this->name, GF_LOG_TRACE,                         "(sock:%d) returning to wait on socket", priv->sock); -                return; +                goto out;              }          } else {              char *sock_type = (priv->is_server ? "Server" : "Client"); @@ -3064,7 +3071,7 @@ socket_event_handler(int fd, int idx, int gen, void *data, int poll_in,      }  out: -    return; +    rpc_transport_unref(this);  }  static void @@ -3123,7 +3130,7 @@ socket_server_event_handler(int fd, int idx, int gen, void *data, int poll_in,          gf_event_handled(ctx->event_pool, fd, idx, gen); -        if (new_sock == -1) { +        if (new_sock < 0) {              gf_log(this->name, GF_LOG_WARNING, "accept on %d failed (%s)",                     priv->sock, strerror(errno));              goto out; @@ -3131,7 +3138,7 @@ socket_server_event_handler(int fd, int idx, int gen, void *data, int poll_in,          if (priv->nodelay && (new_sockaddr.ss_family != AF_UNIX)) {              ret = __socket_nodelay(new_sock); -            if (ret == -1) { +            if (ret != 0) {                  gf_log(this->name, GF_LOG_WARNING,                         "setsockopt() failed for "                         "NODELAY (%s)", @@ -3143,7 +3150,7 @@ socket_server_event_handler(int fd, int idx, int gen, void *data, int poll_in,              ret = __socket_keepalive(new_sock, new_sockaddr.ss_family,                                       priv->keepaliveintvl, priv->keepaliveidle,                                       priv->keepalivecnt, priv->timeout); -            if (ret == -1) +            if (ret != 0)                  gf_log(this->name, GF_LOG_WARNING,                         "Failed to set keep-alive: %s", strerror(errno));          } @@ -3159,7 +3166,7 @@ socket_server_event_handler(int fd, int idx, int gen, void *data, int poll_in,          }          ret = pthread_mutex_init(&new_trans->lock, NULL); -        if (ret == -1) { +        if (ret != 0) {              gf_log(this->name, GF_LOG_WARNING,                     "pthread_mutex_init() failed: %s; closing newly accepted "                     "socket %d", @@ -3179,7 +3186,7 @@ socket_server_event_handler(int fd, int idx, int gen, void *data, int poll_in,          ret = getsockname(new_sock, SA(&new_trans->myinfo.sockaddr),                            &new_trans->myinfo.sockaddr_len); -        if (ret == -1) { +        if (ret != 0) {              gf_log(this->name, GF_LOG_WARNING,                     "getsockname on socket %d "                     "failed (errno:%s); closing newly accepted socket", @@ -3285,7 +3292,7 @@ socket_server_event_handler(int fd, int idx, int gen, void *data, int poll_in,               */              ret = rpc_transport_notify(this, RPC_TRANSPORT_ACCEPT, new_trans); -            if (ret != -1) { +            if (ret >= 0) {                  new_priv->idx = gf_event_register(                      ctx->event_pool, new_sock, socket_event_handler, new_trans,                      1, 0, new_trans->notify_poller_death); @@ -3323,7 +3330,7 @@ socket_server_event_handler(int fd, int idx, int gen, void *data, int poll_in,              rpc_transport_unref(new_trans);          } -        if (ret == -1) { +        if (ret < 0) {              gf_log(this->name, GF_LOG_WARNING, "closing newly accepted socket");              sys_close(new_sock);              /* this unref is to actually cause the destruction of @@ -3454,7 +3461,7 @@ socket_connect(rpc_transport_t *this, int port)      pthread_mutex_lock(&priv->out_lock);      { -        if (priv->sock != -1) { +        if (priv->sock >= 0) {              gf_log_callingfn(this->name, GF_LOG_TRACE,                               "connect () called on transport "                               "already connected"); @@ -3468,7 +3475,7 @@ socket_connect(rpc_transport_t *this, int port)          ret = socket_client_get_remote_sockaddr(this, &sock_union.sa,                                                  &sockaddr_len, &sa_family); -        if (ret == -1) { +        if (ret < 0) {              /* logged inside client_get_remote_sockaddr */              goto unlock;          } @@ -3487,7 +3494,7 @@ socket_connect(rpc_transport_t *this, int port)          this->peerinfo.sockaddr_len = sockaddr_len;          priv->sock = sys_socket(sa_family, SOCK_STREAM, 0); -        if (priv->sock == -1) { +        if (priv->sock < 0) {              gf_log(this->name, GF_LOG_ERROR, "socket creation failed (%s)",                     strerror(errno));              ret = -1; @@ -3499,7 +3506,7 @@ socket_connect(rpc_transport_t *this, int port)           */          if (priv->windowsize != 0) {              if (setsockopt(priv->sock, SOL_SOCKET, SO_RCVBUF, &priv->windowsize, -                           sizeof(priv->windowsize)) < 0) { +                           sizeof(priv->windowsize)) != 0) {                  gf_log(this->name, GF_LOG_ERROR,                         "setting receive window "                         "size failed: %d: %d: %s", @@ -3507,7 +3514,7 @@ socket_connect(rpc_transport_t *this, int port)              }              if (setsockopt(priv->sock, SOL_SOCKET, SO_SNDBUF, &priv->windowsize, -                           sizeof(priv->windowsize)) < 0) { +                           sizeof(priv->windowsize)) != 0) {                  gf_log(this->name, GF_LOG_ERROR,                         "setting send window size "                         "failed: %d: %d: %s", @@ -3532,7 +3539,7 @@ socket_connect(rpc_transport_t *this, int port)          if (priv->nodelay && (sa_family != AF_UNIX)) {              ret = __socket_nodelay(priv->sock); -            if (ret == -1) { +            if (ret != 0) {                  gf_log(this->name, GF_LOG_ERROR, "NODELAY on %d failed (%s)",                         priv->sock, strerror(errno));              } @@ -3542,7 +3549,7 @@ socket_connect(rpc_transport_t *this, int port)              ret = __socket_keepalive(priv->sock, sa_family,                                       priv->keepaliveintvl, priv->keepaliveidle,                                       priv->keepalivecnt, priv->timeout); -            if (ret == -1) +            if (ret != 0)                  gf_log(this->name, GF_LOG_ERROR, "Failed to set keep-alive: %s",                         strerror(errno));          } @@ -3564,7 +3571,7 @@ socket_connect(rpc_transport_t *this, int port)          ret = client_bind(this, SA(&this->myinfo.sockaddr),                            &this->myinfo.sockaddr_len, priv->sock); -        if (ret == -1) { +        if (ret < 0) {              gf_log(this->name, GF_LOG_WARNING, "client bind failed: %s",                     strerror(errno));              goto handler; @@ -3573,7 +3580,7 @@ socket_connect(rpc_transport_t *this, int port)          /* make socket non-blocking for all types of sockets */          if (!priv->bio) {              ret = __socket_nonblock(priv->sock); -            if (ret == -1) { +            if (ret != 0) {                  gf_log(this->name, GF_LOG_ERROR, "NBIO on %d failed (%s)",                         priv->sock, strerror(errno));                  goto handler; @@ -3600,7 +3607,7 @@ socket_connect(rpc_transport_t *this, int port)          connect_attempted = _gf_true; -        if (ret == -1 && errno == ENOENT && ign_enoent) { +        if ((ret != 0) && (errno == ENOENT) && ign_enoent) {              gf_log(this->name, GF_LOG_WARNING,                     "Ignore failed connection attempt on %s, (%s) ",                     this->peerinfo.identifier, strerror(errno)); @@ -3618,7 +3625,7 @@ socket_connect(rpc_transport_t *this, int port)              goto handler;          } -        if (ret == -1 && ((errno != EINPROGRESS) && (errno != ENOENT))) { +        if ((ret != 0) && (errno != EINPROGRESS) && (errno != ENOENT)) {              /* For unix path based sockets, the socket path is               * cryptic (md5sum of path) and may not be useful for               * the user in debugging so log it in DEBUG @@ -3682,8 +3689,8 @@ socket_connect(rpc_transport_t *this, int port)      pthread_mutex_unlock(&priv->out_lock);  err: -    /* if sock != -1, then cleanup is done from the event handler */ -    if (ret == -1 && sock == -1) { +    /* if sock >= 0, then cleanup is done from the event handler */ +    if ((ret < 0) && (sock < 0)) {          /* Cleaup requires to send notification to upper layer which             intern holds the big_lock. There can be dead-lock situation             if big_lock is already held by the current thread. @@ -3737,20 +3744,20 @@ socket_listen(rpc_transport_t *this)      }      pthread_mutex_unlock(&priv->out_lock); -    if (sock != -1) { +    if (sock >= 0) {          gf_log_callingfn(this->name, GF_LOG_DEBUG, "already listening");          return ret;      }      ret = socket_server_get_local_sockaddr(this, SA(&sockaddr), &sockaddr_len,                                             &sa_family); -    if (ret == -1) { +    if (ret < 0) {          return ret;      }      pthread_mutex_lock(&priv->out_lock);      { -        if (priv->sock != -1) { +        if (priv->sock >= 0) {              gf_log(this->name, GF_LOG_DEBUG, "already listening");              goto unlock;          } @@ -3760,7 +3767,7 @@ socket_listen(rpc_transport_t *this)          priv->sock = sys_socket(sa_family, SOCK_STREAM, 0); -        if (priv->sock == -1) { +        if (priv->sock < 0) {              gf_log(this->name, GF_LOG_ERROR, "socket creation failed (%s)",                     strerror(errno));              goto unlock; @@ -3771,7 +3778,7 @@ socket_listen(rpc_transport_t *this)           */          if (priv->windowsize != 0) {              if (setsockopt(priv->sock, SOL_SOCKET, SO_RCVBUF, &priv->windowsize, -                           sizeof(priv->windowsize)) < 0) { +                           sizeof(priv->windowsize)) != 0) {                  gf_log(this->name, GF_LOG_ERROR,                         "setting receive window size "                         "failed: %d: %d: %s", @@ -3779,7 +3786,7 @@ socket_listen(rpc_transport_t *this)              }              if (setsockopt(priv->sock, SOL_SOCKET, SO_SNDBUF, &priv->windowsize, -                           sizeof(priv->windowsize)) < 0) { +                           sizeof(priv->windowsize)) != 0) {                  gf_log(this->name, GF_LOG_ERROR,                         "setting send window size failed:"                         " %d: %d: %s", @@ -3789,7 +3796,7 @@ socket_listen(rpc_transport_t *this)          if (priv->nodelay && (sa_family != AF_UNIX)) {              ret = __socket_nodelay(priv->sock); -            if (ret == -1) { +            if (ret != 0) {                  gf_log(this->name, GF_LOG_ERROR,                         "setsockopt() failed for NODELAY (%s)", strerror(errno));              } @@ -3798,7 +3805,7 @@ socket_listen(rpc_transport_t *this)          if (!priv->bio) {              ret = __socket_nonblock(priv->sock); -            if (ret == -1) { +            if (ret != 0) {                  gf_log(this->name, GF_LOG_ERROR,                         "NBIO on socket %d failed "                         "(errno:%s); closing socket", @@ -3812,7 +3819,7 @@ socket_listen(rpc_transport_t *this)          /* coverity[SLEEP] */          ret = __socket_server_bind(this); -        if ((ret == -EADDRINUSE) || (ret == -1)) { +        if (ret < 0) {              /* logged inside __socket_server_bind() */              gf_log(this->name, GF_LOG_ERROR,                     "__socket_server_bind failed;" @@ -3828,7 +3835,7 @@ socket_listen(rpc_transport_t *this)          ret = listen(priv->sock, priv->backlog); -        if (ret == -1) { +        if (ret != 0) {              gf_log(this->name, GF_LOG_ERROR,                     "could not set socket %d to listen mode (errno:%s); "                     "closing socket", @@ -4067,7 +4074,7 @@ reconfigure(rpc_transport_t *this, dict_t *options)      if (dict_get_str_sizen(options, "transport.socket.keepalive", &optstr) ==          0) { -        if (gf_string2boolean(optstr, &tmp_bool) == -1) { +        if (gf_string2boolean(optstr, &tmp_bool) != 0) {              gf_log(this->name, GF_LOG_ERROR,                     "'transport.socket.keepalive' takes only "                     "boolean options, not taking any action"); @@ -4129,7 +4136,7 @@ reconfigure(rpc_transport_t *this, dict_t *options)      if (data) {          optstr = data_to_str(data); -        if (gf_string2boolean(optstr, &tmp_bool) == -1) { +        if (gf_string2boolean(optstr, &tmp_bool) != 0) {              gf_log(this->name, GF_LOG_ERROR,                     "'non-blocking-io' takes only boolean options,"                     " not taking any action"); @@ -4144,7 +4151,7 @@ reconfigure(rpc_transport_t *this, dict_t *options)      if (!priv->bio) {          ret = __socket_nonblock(priv->sock); -        if (ret == -1) { +        if (ret != 0) {              gf_log(this->name, GF_LOG_WARNING, "NBIO on %d failed (%s)",                     priv->sock, strerror(errno));              goto out; @@ -4539,7 +4546,7 @@ socket_init(rpc_transport_t *this)      if (data) {          optstr = data_to_str(data); -        if (gf_string2boolean(optstr, &tmp_bool) == -1) { +        if (gf_string2boolean(optstr, &tmp_bool) != 0) {              gf_log(this->name, GF_LOG_ERROR,                     "'non-blocking-io' takes only boolean options,"                     " not taking any action"); @@ -4559,7 +4566,7 @@ socket_init(rpc_transport_t *this)      if (data) {          optstr = data_to_str(data); -        if (gf_string2boolean(optstr, &tmp_bool) == -1) { +        if (gf_string2boolean(optstr, &tmp_bool) != 0) {              gf_log(this->name, GF_LOG_ERROR,                     "'transport.socket.nodelay' takes only "                     "boolean options, not taking any action"); @@ -4590,7 +4597,7 @@ socket_init(rpc_transport_t *this)      priv->keepalivecnt = GF_KEEPALIVE_COUNT;      if (dict_get_str_sizen(this->options, "transport.socket.keepalive",                             &optstr) == 0) { -        if (gf_string2boolean(optstr, &tmp_bool) == -1) { +        if (gf_string2boolean(optstr, &tmp_bool) != 0) {              gf_log(this->name, GF_LOG_ERROR,                     "'transport.socket.keepalive' takes only "                     "boolean options, not taking any action"); @@ -4636,7 +4643,7 @@ socket_init(rpc_transport_t *this)      data = dict_get_sizen(this->options, "transport.socket.read-fail-log");      if (data) {          optstr = data_to_str(data); -        if (gf_string2boolean(optstr, &tmp_bool) == -1) { +        if (gf_string2boolean(optstr, &tmp_bool) != 0) {              gf_log(this->name, GF_LOG_WARNING,                     "'transport.socket.read-fail-log' takes only "                     "boolean options; logging socket read fails"); @@ -4673,7 +4680,7 @@ fini(rpc_transport_t *this)      priv = this->private;      if (priv) { -        if (priv->sock != -1) { +        if (priv->sock >= 0) {              pthread_mutex_lock(&priv->out_lock);              {                  __socket_ioq_flush(this); @@ -4720,7 +4727,7 @@ init(rpc_transport_t *this)      ret = socket_init(this); -    if (ret == -1) { +    if (ret < 0) {          gf_log(this->name, GF_LOG_DEBUG, "socket_init() failed");      }  | 
