diff options
Diffstat (limited to 'rpc/rpc-lib/src/rpcsvc.c')
| -rw-r--r-- | rpc/rpc-lib/src/rpcsvc.c | 61 | 
1 files changed, 21 insertions, 40 deletions
diff --git a/rpc/rpc-lib/src/rpcsvc.c b/rpc/rpc-lib/src/rpcsvc.c index daf1932b90d..b0eea194347 100644 --- a/rpc/rpc-lib/src/rpcsvc.c +++ b/rpc/rpc-lib/src/rpcsvc.c @@ -1584,43 +1584,6 @@ rpcsvc_transport_peeraddr (rpc_transport_t *trans, char *addrstr, int addrlen,                                            sasize);  } - -rpc_transport_t * -rpcsvc_transport_create (rpcsvc_t *svc, dict_t *options, char *name) -{ -        int                ret   = -1; -        rpc_transport_t   *trans = NULL; - -        trans = rpc_transport_load (svc->ctx, options, name); -        if (!trans) { -                gf_log (GF_RPCSVC, GF_LOG_WARNING, "cannot create listener, " -                        "initing the transport failed"); -                goto out; -        } - -        ret = rpc_transport_listen (trans); -        if (ret == -1) { -                gf_log (GF_RPCSVC, GF_LOG_WARNING, -                        "listening on transport failed"); -                goto out; -        } - -        ret = rpc_transport_register_notify (trans, rpcsvc_notify, svc); -        if (ret == -1) { -                gf_log (GF_RPCSVC, GF_LOG_WARNING, "registering notify failed"); -                goto out; -        } - -        ret = 0; -out: -        if ((ret == -1) && (trans)) { -                rpc_transport_disconnect (trans); -                trans = NULL; -        } - -        return trans; -} -  rpcsvc_listener_t *  rpcsvc_listener_alloc (rpcsvc_t *svc, rpc_transport_t *trans)  { @@ -1658,9 +1621,23 @@ rpcsvc_create_listener (rpcsvc_t *svc, dict_t *options, char *name)                  goto out;          } -        trans = rpcsvc_transport_create (svc, options, name); +        trans = rpc_transport_load (svc->ctx, options, name);          if (!trans) { -                /* LOG TODO */ +                gf_log (GF_RPCSVC, GF_LOG_WARNING, "cannot create listener, " +                        "initing the transport failed"); +                goto out; +        } + +        ret = rpc_transport_listen (trans); +        if (ret == -EADDRINUSE || ret == -1) { +                gf_log (GF_RPCSVC, GF_LOG_WARNING, +                        "listening on transport failed"); +                goto out; +        } + +        ret = rpc_transport_register_notify (trans, rpcsvc_notify, svc); +        if (ret == -1) { +                gf_log (GF_RPCSVC, GF_LOG_WARNING, "registering notify failed");                  goto out;          } @@ -1763,7 +1740,11 @@ out:          GF_FREE (transport_name); -        return count; +        if (count > 0) { +                return count; +        } else { +                return ret; +        }  }  | 
