X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/7b98850d3b8b2453b473fdfb6db52f4aa3fe39b6..fa9e8a6283ecb332b5947e13237346a1f40aed37:/sbr/client.c diff --git a/sbr/client.c b/sbr/client.c index ae6968f7..7417ed54 100644 --- a/sbr/client.c +++ b/sbr/client.c @@ -2,8 +2,6 @@ /* * client.c -- connect to a server * - * $Id$ - * * This code is Copyright (c) 2002, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for * complete copyright information. @@ -12,17 +10,10 @@ #include #include #include -#include #include #include #include - -#ifdef HAVE_ARPA_INET_H -# include -#endif - -#define TRUE 1 -#define FALSE 0 +#include #define MAXARGS 1000 @@ -60,7 +51,9 @@ client (char *args, char *service, char *response, int len_response, int debug) } memset(&hints, 0, sizeof(hints)); +#ifdef AI_ADDRCONFIG hints.ai_flags = AI_ADDRCONFIG; +#endif hints.ai_family = PF_UNSPEC; hints.ai_socktype = SOCK_STREAM; @@ -83,12 +76,15 @@ client (char *args, char *service, char *response, int len_response, int debug) for (ai = res; ai != NULL; ai = ai->ai_next) { if (debug) { char address[NI_MAXHOST]; + char port[NI_MAXSERV]; rc = getnameinfo(ai->ai_addr, ai->ai_addrlen, address, - sizeof(address), NULL, NULL, NI_NUMERICHOST); + sizeof(address), port, sizeof port, + NI_NUMERICHOST | NI_NUMERICSERV); - fprintf(stderr, "Connecting to %s...\n", - rc ? "unknown" : address); + fprintf(stderr, "Connecting to %s:%s...\n", + rc ? "unknown" : address, + rc ? "--" : port); } sd = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); @@ -101,7 +97,7 @@ client (char *args, char *service, char *response, int len_response, int debug) if (connect(sd, ai->ai_addr, ai->ai_addrlen) == 0) { freeaddrinfo(res); - client_freelist(ap); + client_freelist(arguments); return sd; } @@ -111,10 +107,11 @@ client (char *args, char *service, char *response, int len_response, int debug) close(sd); } + + freeaddrinfo(res); } - freeaddrinfo(res); - client_freelist(ap); + client_freelist(arguments); strncpy (response, "no servers available", len_response); return NOTOK; } @@ -127,8 +124,7 @@ client (char *args, char *service, char *response, int len_response, int debug) static void client_freelist(char **list) { - while (*list++ != NULL) - free(*list); + free(*list); } @@ -172,7 +168,7 @@ static int client_brkany (char chr, char *strg) { register char *sp; - + if (strg) for (sp = strg; *sp; sp++) if (chr == *sp) @@ -208,4 +204,3 @@ client_getcpy (char *str) memcpy (cp, str, len); return cp; } -