X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=sources%2Fsockconn.c;h=81c982d0481ec37036f48aa5167b70a9efd88867;hp=c1624743d8d0054224a39f00211359bb5559b36d;hb=8654ce33b450ae7bb34c3907835000a0760c2931;hpb=88d8a251947f948094d35de596feaf49e975f91b diff --git a/sources/sockconn.c b/sources/sockconn.c index c162474..81c982d 100644 --- a/sources/sockconn.c +++ b/sources/sockconn.c @@ -30,36 +30,39 @@ #include #include #include +#include +#include +#include #include int sockconn(char *host, char *serv, int prot, int type) { struct addrinfo hint, *addr; int res; - int sock - /* initialize hint */ - memset(&hint, 0, sizeof(hint)); - hint.ai_family = PF_UNSPEC; - hint.ai_protocol = prot; - hint.ai_socktype = type; - res = getaddrinfo(host, serv, &hint, &addr); - if (res != 0) { - printf("sockconn cannot resolve host %s, service %s, - protocol %d: %s\n", host, serv, prot, gai_strerror(res)); - errno = 0; + int sock; + /* initialize hint structure */ + memset(&hint, 0, sizeof(struct addrinfo)); + hint.ai_family = PF_UNSPEC; /* generic address (IPv4 or IPv6) */ + hint.ai_protocol = prot; /* protocol */ + hint.ai_socktype = type; /* socket type */ + res = getaddrinfo(host, serv, &hint, &addr); /* calling getaddrinfo */ + if (res != 0) { /* on error exit */ + printf("sockconn cannot resolve host %s, service %s, ", host, serv); + printf("protocol %d: %s\n", prot, gai_strerror(res)); return -1; } + /* get a socket */ sock = socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol); if (sock < 0) { - perror("sockconn cannot create socket\n"); + printf("sockconn cannot create socket\n"); return sock; } + /* connect the socket */ res = connect(sock, addr->ai_addr, addr->ai_addrlen); if (res < 0) { - perror("sockconn cannot connect socket\n"); + printf("sockconn cannot connect socket\n"); return res; } - freeaddrinfo(addr); + freeaddrinfo(addr); /* done, release memory */ return sock; } -