From 82653c44bd67dbae24330e3b7c841153f930a17c Mon Sep 17 00:00:00 2001 From: Nalin Dahyabhai Date: Thu, 18 Aug 2016 14:23:19 -0400 Subject: [PATCH] knownhostsproxy: use all of the getaddrinfo() In sss_ssh_knownhostsproxy, use all of the data returned by getaddrinfo() when we're connecting to the remote host. Should fix ticket #1498. Signed-off-by: Nalin Dahyabhai --- src/sss_client/ssh/sss_ssh_knownhostsproxy.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/sss_client/ssh/sss_ssh_knownhostsproxy.c b/src/sss_client/ssh/sss_ssh_knownhostsproxy.c index adb82288d435cefccf7e23e6ed2b2c551798a7f8..26de8c7e787f2df0e7c40411ebf4efdb45742f03 100644 --- a/src/sss_client/ssh/sss_ssh_knownhostsproxy.c +++ b/src/sss_client/ssh/sss_ssh_knownhostsproxy.c @@ -40,7 +40,7 @@ /* connect to server using socket */ static int -connect_socket(int family, struct sockaddr *addr, size_t addr_len) +connect_socket(int family, int socktype, int protocol, struct sockaddr *addr, size_t addr_len) { int flags; int sock = -1; @@ -68,7 +68,7 @@ connect_socket(int family, struct sockaddr *addr, size_t addr_len) } /* create socket */ - sock = socket(family, SOCK_STREAM, IPPROTO_TCP); + sock = socket(family, socktype, protocol); if (sock == -1) { ret = errno; DEBUG(SSSDBG_OP_FAILURE, "socket() failed (%d): %s\n", @@ -295,7 +295,13 @@ int main(int argc, const char **argv) if (pc_args) { ret = connect_proxy_command(discard_const(pc_args)); } else if (ai) { - ret = connect_socket(ai[0].ai_family, ai[0].ai_addr, ai[0].ai_addrlen); + while (ai != NULL) { + ret = connect_socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol, ai->ai_addr, ai->ai_addrlen); + if (ret == 0) { + break; + } + ai = ai->ai_next; + } } else { ret = EFAULT; } -- 2.4.11