accessdata.acc_accl = strlen((char *)accessdata.acc_acc);
setsockopt(fd, DNPROTO_NSP, SO_CONACCESS, &accessdata, sizeof(accessdata));
- if(connect(fd, (struct sockaddr *) &addr, sizeof(addr)) == -1)
+ if(connect(fd, (struct sockaddr *) &addr, sizeof(addr)) == -1) {
+ close(fd);
return -1;
+ }
return fd;
}
#endif
for(addr = results; addr; addr = addr->ai_next)
{
fd = socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol);
- if(fd >= 0 && connect(fd, addr->ai_addr, addr->ai_addrlen) >= 0)
- break;
- fd = -1;
+ if(fd >= 0) {
+ if (connect(fd, addr->ai_addr, addr->ai_addrlen) >= 0)
+ break;
+ close(fd);
+ fd = -1;
+ }
}
freeaddrinfo(results);
return fd;
fd = socket(AF_UNIX, SOCK_STREAM, 0);
if(fd == -1)
return -1;
- if(connect(fd, (struct sockaddr *) &addr, sizeof(addr)) == -1)
+ if(connect(fd, (struct sockaddr *) &addr, sizeof(addr)) == -1) {
+ close(fd);
return -1;
+ }
return fd;
}