diff options
-rw-r--r-- | rpc/rpc-lib/src/rpc-clnt.c | 5 | ||||
-rw-r--r-- | rpc/rpc-lib/src/rpc-transport.c | 2 | ||||
-rw-r--r-- | rpc/rpc-lib/src/rpcsvc-auth.c | 22 | ||||
-rw-r--r-- | rpc/rpc-lib/src/rpcsvc.c | 51 | ||||
-rw-r--r-- | rpc/rpc-transport/socket/src/name.c | 18 | ||||
-rw-r--r-- | rpc/rpc-transport/socket/src/socket.c | 11 |
6 files changed, 62 insertions, 47 deletions
diff --git a/rpc/rpc-lib/src/rpc-clnt.c b/rpc/rpc-lib/src/rpc-clnt.c index f2c2736e0..9b0bfe33d 100644 --- a/rpc/rpc-lib/src/rpc-clnt.c +++ b/rpc/rpc-lib/src/rpc-clnt.c @@ -129,7 +129,6 @@ call_bail (void *data) struct tm frame_sent_tm; char frame_sent[32] = {0,}; struct timeval timeout = {0,}; - gf_timer_cbk_t timer_cbk = NULL; struct rpc_req req; struct iovec iov = {0,}; @@ -147,8 +146,6 @@ call_bail (void *data) /* Chaining to get call-always functionality from call-once timer */ if (conn->timer) { - timer_cbk = conn->timer->callbk; - timeout.tv_sec = 10; timeout.tv_usec = 0; @@ -673,8 +670,6 @@ rpc_clnt_handle_reply (struct rpc_clnt *clnt, rpc_transport_pollin_t *pollin) if (ret == 0) { rpc_clnt_reply_deinit (&req); } - - ret = 0; out: if (saved_frame) { diff --git a/rpc/rpc-lib/src/rpc-transport.c b/rpc/rpc-lib/src/rpc-transport.c index 82ea9a74b..b77ea2aa5 100644 --- a/rpc/rpc-lib/src/rpc-transport.c +++ b/rpc/rpc-lib/src/rpc-transport.c @@ -79,7 +79,7 @@ valid_ipv4_address (char *address, int length) char *tmp = NULL, *ptr = NULL, *prev = NULL, *endptr = NULL; char ret = 1; - prev = tmp = gf_strdup (address); + tmp = gf_strdup (address); prev = strtok_r (tmp, ".", &ptr); while (prev != NULL) diff --git a/rpc/rpc-lib/src/rpcsvc-auth.c b/rpc/rpc-lib/src/rpcsvc-auth.c index 75305e68e..381cf2823 100644 --- a/rpc/rpc-lib/src/rpcsvc-auth.c +++ b/rpc/rpc-lib/src/rpcsvc-auth.c @@ -85,7 +85,7 @@ rpcsvc_auth_add_initers (rpcsvc_t *svc) ret = 0; err: - return 0; + return ret; } @@ -142,14 +142,26 @@ rpcsvc_auth_init_auths (rpcsvc_t *svc, dict_t *options) * it by default. This is a globally default rule, the user is still * allowed to disable the two for particular subvolumes. */ - if (!dict_get (options, "rpc-auth.auth-null")) + if (!dict_get (options, "rpc-auth.auth-null")) { ret = dict_set_str (options, "rpc-auth.auth-null", "on"); + if (ret) + gf_log ("rpc-auth", GF_LOG_DEBUG, + "dict_set failed for 'auth-nill'"); + } - if (!dict_get (options, "rpc-auth.auth-unix")) + if (!dict_get (options, "rpc-auth.auth-unix")) { ret = dict_set_str (options, "rpc-auth.auth-unix", "on"); + if (ret) + gf_log ("rpc-auth", GF_LOG_DEBUG, + "dict_set failed for 'auth-unix'"); + } - if (!dict_get (options, "rpc-auth.auth-glusterfs")) + if (!dict_get (options, "rpc-auth.auth-glusterfs")) { ret = dict_set_str (options, "rpc-auth.auth-glusterfs", "on"); + if (ret) + gf_log ("rpc-auth", GF_LOG_DEBUG, + "dict_set failed for 'auth-unix'"); + } list_for_each_entry_safe (auth, tmp, &svc->authschemes, authlist) { ret = rpcsvc_auth_init_auth (svc, options, auth); @@ -191,7 +203,6 @@ out: rpcsvc_auth_t * __rpcsvc_auth_get_handler (rpcsvc_request_t *req) { - int ret = -1; struct rpcsvc_auth_list *auth = NULL; struct rpcsvc_auth_list *tmp = NULL; rpcsvc_t *svc = NULL; @@ -207,7 +218,6 @@ __rpcsvc_auth_get_handler (rpcsvc_request_t *req) if (list_empty (&svc->authschemes)) { gf_log (GF_RPCSVC, GF_LOG_WARNING, "No authentication!"); - ret = 0; goto err; } diff --git a/rpc/rpc-lib/src/rpcsvc.c b/rpc/rpc-lib/src/rpcsvc.c index bb4e37ef8..9bb7e0e4c 100644 --- a/rpc/rpc-lib/src/rpcsvc.c +++ b/rpc/rpc-lib/src/rpcsvc.c @@ -371,8 +371,13 @@ rpcsvc_conn_check_volume_specific (dict_t *options, char *volname, if ((dict_get (options, "rpc-auth.addr.namelookup"))) { ret = dict_get_str (options, "rpc-auth.addr.namelookup" , &namestr); - if (ret == 0) + if (ret == 0) { ret = gf_string2boolean (namestr, &namelookup); + if (ret) + gf_log ("rpcsvc", GF_LOG_DEBUG, + "wrong option %s given for " + "'namelookup'", namestr); + } } /* We need two separate checks because the rules with addresses in them @@ -408,8 +413,13 @@ rpcsvc_conn_check_volume_general (dict_t *options, rpcsvc_conn_t *conn) if ((dict_get (options, "rpc-auth.addr.namelookup"))) { ret = dict_get_str (options, "rpc-auth.addr.namelookup" , &namestr); - if (ret == 0) + if (!ret) { ret = gf_string2boolean (namestr, &namelookup); + if (ret) + gf_log ("rpcsvc", GF_LOG_DEBUG, + "wrong option %s given for " + "'namelookup'", namestr); + } } /* We need two separate checks because the rules with addresses in them @@ -466,9 +476,15 @@ rpcsvc_volume_allowed (dict_t *options, char *volname) GF_FREE (srchstr); srchstr = globalrule; ret = dict_get_str (options, srchstr, &addrstr); - } else + if (ret) + gf_log ("rpcsvc", GF_LOG_DEBUG, + "failed to get the string %s", srchstr); + } else { ret = dict_get_str (options, srchstr, &addrstr); - + if (ret) + gf_log ("rpcsvc", GF_LOG_DEBUG, + "failed to get the string %s", srchstr); + } out: return addrstr; } @@ -657,7 +673,6 @@ rpcsvc_conn_init (rpcsvc_t *svc, rpc_transport_t *trans) conn = rpcsvc_conn_alloc (svc, trans); if (!conn) { - ret = -1; gf_log (GF_RPCSVC, GF_LOG_DEBUG, "cannot init a connection"); goto out; } @@ -1143,6 +1158,9 @@ rpcsvc_request_create (rpcsvc_conn_t *conn, rpc_transport_pollin_t *msg) err: if (ret == -1) { ret = rpcsvc_error_reply (req); + if (ret) + gf_log ("rpcsvc", GF_LOG_DEBUG, + "failed to queue error reply"); req = NULL; } @@ -1195,6 +1213,9 @@ err_reply: if ((ret == RPCSVC_ACTOR_ERROR) || (req->rpc_err != SUCCESS)) ret = rpcsvc_error_reply (req); + if (ret) + gf_log ("rpcsvc", GF_LOG_DEBUG, "failed to queue error reply"); + /* No need to propagate error beyond this function since the reply * has now been queued. */ ret = 0; @@ -1208,7 +1229,6 @@ rpcsvc_notify (rpc_transport_t *trans, void *mydata, rpc_transport_event_t event, void *data, ...) { rpcsvc_conn_t *conn = NULL; - rpcsvc_t *svc = NULL; int ret = -1; rpc_transport_pollin_t *msg = NULL; rpc_transport_t *new_trans = NULL; @@ -1218,8 +1238,6 @@ rpcsvc_notify (rpc_transport_t *trans, void *mydata, goto out; } - svc = conn->svc; - switch (event) { case RPC_TRANSPORT_ACCEPT: new_trans = data; @@ -1765,7 +1783,6 @@ rpcsvc_listener_t * rpcsvc_listener_alloc (rpcsvc_t *svc, rpcsvc_conn_t *conn) { rpcsvc_listener_t *listener = NULL; - int ret = -1; listener = GF_CALLOC (1, sizeof (*listener), gf_common_mt_rpcsvc_listener_t); @@ -1774,17 +1791,6 @@ rpcsvc_listener_alloc (rpcsvc_t *svc, rpcsvc_conn_t *conn) goto out; } - /* TODO: unresolved symbol */ - ret = rpc_transport_get_myaddr (conn->trans, NULL, 0, - &listener->sa, - sizeof (listener->sa)); - ret = 0; - if (ret == -1) { - GF_FREE (listener); - listener = NULL; - goto out; - } - listener->conn = conn; INIT_LIST_HEAD (&listener->list); @@ -2005,7 +2011,8 @@ fail: ret = xdr_serialize_dump_rsp (iov, &rsp); if (ret < 0) { - req->rpc_err = GARBAGE_ARGS; + if (req) + req->rpc_err = GARBAGE_ARGS; op_errno = EINVAL; goto fail; } @@ -2015,7 +2022,7 @@ fail: free_prog_details (&rsp); - return 0; + return ret; } int diff --git a/rpc/rpc-transport/socket/src/name.c b/rpc/rpc-transport/socket/src/name.c index 763fa3dd0..e5b9199aa 100644 --- a/rpc/rpc-transport/socket/src/name.c +++ b/rpc/rpc-transport/socket/src/name.c @@ -605,21 +605,23 @@ int32_t fill_inet6_inet_identifiers (rpc_transport_t *this, struct sockaddr_storage *addr, int32_t addr_len, char *identifier) { - int32_t ret = 0, tmpaddr_len = 0; - char service[NI_MAXSERV], host[NI_MAXHOST]; struct sockaddr_storage tmpaddr; + char service[NI_MAXSERV] = {0,}; + char host[NI_MAXHOST] = {0,}; + int32_t ret = 0; + int32_t tmpaddr_len = 0; + int32_t one_to_four = 0; + int32_t four_to_eight = 0; + int32_t twelve_to_sixteen = 0; + int16_t eight_to_ten = 0; + int16_t ten_to_twelve = 0; + memset (&tmpaddr, 0, sizeof (tmpaddr)); tmpaddr = *addr; tmpaddr_len = addr_len; if (((struct sockaddr *) &tmpaddr)->sa_family == AF_INET6) { - int32_t one_to_four, four_to_eight, twelve_to_sixteen; - int16_t eight_to_ten, ten_to_twelve; - - one_to_four = four_to_eight = twelve_to_sixteen = 0; - eight_to_ten = ten_to_twelve = 0; - one_to_four = ((struct sockaddr_in6 *) &tmpaddr)->sin6_addr.s6_addr32[0]; four_to_eight = ((struct sockaddr_in6 *) &tmpaddr)->sin6_addr.s6_addr32[1]; #ifdef GF_SOLARIS_HOST_OS diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c index b40a93ee8..6406d4589 100644 --- a/rpc/rpc-transport/socket/src/socket.c +++ b/rpc/rpc-transport/socket/src/socket.c @@ -392,12 +392,9 @@ __socket_reset (rpc_transport_t *this) struct ioq * __socket_ioq_new (rpc_transport_t *this, rpc_transport_msg_t *msg) { - socket_private_t *priv = NULL; struct ioq *entry = NULL; int count = 0; - priv = this->private; - /* TODO: use mem-pool */ entry = GF_CALLOC (1, sizeof (*entry), gf_common_mt_ioq); if (!entry) @@ -1553,7 +1550,11 @@ socket_server_event_handler (int fd, int idx, void *data, ret = -1; } pthread_mutex_unlock (&new_priv->lock); - ret = rpc_transport_notify (this, RPC_TRANSPORT_ACCEPT, new_trans); + if (ret == -1) + goto unlock; + + ret = rpc_transport_notify (this, RPC_TRANSPORT_ACCEPT, + new_trans); } } unlock: @@ -2112,7 +2113,7 @@ int32_t socket_getmyaddr (rpc_transport_t *this, char *myaddr, int addrlen, struct sockaddr *sa, socklen_t salen) { - int32_t ret = -1; + int32_t ret = 0; if ((this == NULL) || (sa == NULL)) { goto out; |