- if (connect(s, (struct sockaddr *) &sin, sizeof(sin)) < 0) {
- lprintf(1, "Can't connect to %s.%s: %s\n",
- host, service, strerror(errno));
- close(s);
- return (-1);
- }
- alarm(0);
- signal(SIGALRM, SIG_IGN);
- if (!is_https) {
- fdflags = fcntl(s, F_GETFL);
- if (fdflags < 0)
- lprintf(1, "unable to get socket flags! %s.%s: %s \n",
- host, service, strerror(errno));
- fdflags = fdflags | O_NONBLOCK;
- if (fcntl(s, F_SETFD, fdflags) < 0)
- lprintf(1, "unable to set socket nonblocking flags! %s.%s: %s \n",
- host, service, strerror(errno));
+ s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
+ if (s < 0) {
+ syslog(1, "socket() failed: %s\n", strerror(errno));
+ freeaddrinfo(res);
+ return(-1);
+ }
+ rc = connect(s, ai->ai_addr, ai->ai_addrlen);
+ if (rc >= 0) {
+ freeaddrinfo(res);
+ return(s);
+ }
+ else {
+ syslog(1, "connect() failed: %s\n", strerror(errno));
+ close(s);
+ }