diff options
Diffstat (limited to 'api')
-rw-r--r-- | api/src/glfs-mgmt.c | 83 |
1 files changed, 57 insertions, 26 deletions
diff --git a/api/src/glfs-mgmt.c b/api/src/glfs-mgmt.c index 4587e20df35..fd6b2f5c60c 100644 --- a/api/src/glfs-mgmt.c +++ b/api/src/glfs-mgmt.c @@ -759,32 +759,6 @@ mgmt_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event, ctx->cmd_args.volfile_server = server->volfile_server; ctx->cmd_args.volfile_server_transport = server->transport; - ret = dict_set_int32 (rpc_trans->options, - "remote-port", - server->port); - if (ret != 0) { - gf_msg ("glfs-mgmt", GF_LOG_ERROR, ENOTCONN, - API_MSG_DICT_SET_FAILED, - "failed to set remote-port: %d", - server->port); - errno = ENOTCONN; - glfs_init_done (fs, -1); - break; - } - - ret = dict_set_str (rpc_trans->options, - "remote-host", - server->volfile_server); - if (ret != 0) { - gf_msg ("glfs-mgmt", GF_LOG_ERROR, ENOTCONN, - API_MSG_DICT_SET_FAILED, - "failed to set remote-host: %s", - server->volfile_server); - errno = ENOTCONN; - glfs_init_done (fs, -1); - break; - } - ret = dict_set_str (rpc_trans->options, "transport-type", server->transport); @@ -797,6 +771,63 @@ mgmt_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event, glfs_init_done (fs, -1); break; } + + if (strcmp(server->transport, "unix") == 0) { + ret = dict_set_str (rpc_trans->options, + "transport.socket.connect-path", + server->volfile_server); + if (ret != 0) { + gf_msg ("glfs-mgmt", GF_LOG_ERROR, + ENOTCONN, + API_MSG_DICT_SET_FAILED, + "failed to set socket.connect-path: %s", + server->volfile_server); + errno = ENOTCONN; + glfs_init_done (fs, -1); + break; + } + /* delete the remote-host and remote-port keys + * in case they were set while looping through + * list of volfile servers previously + */ + dict_del (rpc_trans->options, "remote-host"); + dict_del (rpc_trans->options, "remote-port"); + } else { + ret = dict_set_int32 (rpc_trans->options, + "remote-port", + server->port); + if (ret != 0) { + gf_msg ("glfs-mgmt", GF_LOG_ERROR, + ENOTCONN, + API_MSG_DICT_SET_FAILED, + "failed to set remote-port: %d", + server->port); + errno = ENOTCONN; + glfs_init_done (fs, -1); + break; + } + + ret = dict_set_str (rpc_trans->options, + "remote-host", + server->volfile_server); + if (ret != 0) { + gf_msg ("glfs-mgmt", GF_LOG_ERROR, + ENOTCONN, + API_MSG_DICT_SET_FAILED, + "failed to set remote-host: %s", + server->volfile_server); + errno = ENOTCONN; + glfs_init_done (fs, -1); + break; + } + /* delete the "transport.socket.connect-path" + * key in case if it was set while looping + * through list of volfile servers previously + */ + dict_del (rpc_trans->options, + "transport.socket.connect-path"); + } + gf_msg ("glfs-mgmt", GF_LOG_INFO, 0, API_MSG_VOLFILE_CONNECTING, "connecting to next volfile server %s" |