summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2010-09-19 13:51:46 +0200
committerAlon Levy <alevy@redhat.com>2010-09-19 13:51:46 +0200
commitb1a3c160735ccbf0ba5539e957d400660ebb6ec3 (patch)
treef056dfb965258c38511e440df2e02a95e160675b
parentfb73133fa9af0aee278d3bcaeb46fa72855f0c72 (diff)
vssclient: use getaddrinfo
-rw-r--r--vscclient.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/vscclient.c b/vscclient.c
index 16eb6f0..40ad64d 100644
--- a/vscclient.c
+++ b/vscclient.c
@@ -6,6 +6,7 @@
#include <sys/types.h>
#include <sys/socket.h>
+#include <netdb.h>
#include <netinet/in.h>
#include "vscard_common.h"
@@ -181,7 +182,8 @@ main (
int argc,
char *argv[]
) {
- struct sockaddr_in servaddr;
+ struct addrinfo hints;
+ struct addrinfo* server;
VSCMsgHeader mhHeader;
@@ -198,6 +200,7 @@ main (
char* cert_names[MAX_CERTS];
int cert_count = 0;
int c;
+ int ret;
VirtualReaderOptions command_line_readers[] = {
{
@@ -240,16 +243,23 @@ main (
printf ("Error opening socket!\n");
}
- memset (&servaddr, 0, sizeof (struct sockaddr_in));
- servaddr.sin_family = AF_INET;
- servaddr.sin_addr.s_addr = inet_addr (argv[argc - 2]);
- servaddr.sin_port = htons (atoi(argv[argc - 1]));
+ memset(&hints, 0, sizeof(struct addrinfo));
+ hints.ai_family = AF_INET;
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_flags = 0;
+ hints.ai_protocol = 0; /* Any protocol */
- if (
- connect (
+ ret = getaddrinfo(argv[argc - 2], argv[argc - 1], &hints, &server);
+
+ if (ret != 0) {
+ printf ("getaddrinfo failed\n");
+ return (5);
+ }
+
+ if (connect (
sock,
- (struct sockaddr *)&servaddr,
- sizeof(servaddr)
+ server->ai_addr,
+ server->ai_addrlen
) < 0
) {
// Error