Create a new helper function to set the sockaddr for a rpc context

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
libnfs-4.0.0-vitalif
Ronnie Sahlberg 2016-12-01 08:45:59 -08:00
parent 6f8b2f85ca
commit dccffb86ee
1 changed files with 26 additions and 17 deletions

View File

@ -552,24 +552,11 @@ static int rpc_connect_sockaddr_async(struct rpc_context *rpc, struct sockaddr_s
return 0;
}
int rpc_connect_async(struct rpc_context *rpc, const char *server, int port, rpc_cb cb, void *private_data)
static int rpc_set_sockaddr(struct rpc_context *rpc, const char *server,
int port)
{
struct addrinfo *ai = NULL;
assert(rpc->magic == RPC_CONTEXT_MAGIC);
if (rpc->fd != -1) {
rpc_set_error(rpc, "Trying to connect while already connected");
return -1;
}
if (rpc->is_udp != 0) {
rpc_set_error(rpc, "Trying to connect on UDP socket");
return -1;
}
rpc->auto_reconnect = 0;
if (getaddrinfo(server, NULL, NULL, &ai) != 0) {
rpc_set_error(rpc, "Invalid address:%s. "
"Can not resolv into IPv4/v6 structure.", server);
@ -594,12 +581,34 @@ int rpc_connect_async(struct rpc_context *rpc, const char *server, int port, rpc
#endif
break;
}
freeaddrinfo(ai);
return 0;
}
int rpc_connect_async(struct rpc_context *rpc, const char *server, int port, rpc_cb cb, void *private_data)
{
assert(rpc->magic == RPC_CONTEXT_MAGIC);
if (rpc->fd != -1) {
rpc_set_error(rpc, "Trying to connect while already connected");
return -1;
}
if (rpc->is_udp != 0) {
rpc_set_error(rpc, "Trying to connect on UDP socket");
return -1;
}
rpc->auto_reconnect = 0;
if (rpc_set_sockaddr(rpc, server, port) != 0) {
return -1;
}
rpc->connect_cb = cb;
rpc->connect_data = private_data;
freeaddrinfo(ai);
if (rpc_connect_sockaddr_async(rpc, &rpc->s) != 0) {
return -1;
}