}
if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (const char *) &opt, sizeof(opt))!=0) {
+ close(fd);
Error("proxyscan",ERR_ERROR,"Unable to set SO_REUSEADDR on listen socket.");
return -1;
}
sin.sin_port=htons(portnum);
if (bind(fd, (struct sockaddr *) &sin, sizeof(sin))) {
+ close(fd);
Error("proxyscan",ERR_ERROR,"Unable to bind listen socket (%d).",errno);
return -1;
}
listen(fd,5);
if (ioctl(fd, FIONBIO, &opt)!=0) {
+ close(fd);
Error("proxyscan",ERR_ERROR,"Unable to set listen socket non-blocking.");
return -1;
}
socklen_t addrsize=sizeof(sin);
char buf[20];
int newfd;
- if ((newfd=accept(fd, (struct sockaddr *)&sin, &addrsize))>0) {
+ if ((newfd=accept(fd, (struct sockaddr *)&sin, &addrsize))>-1) {
/* Got new connection */
sprintf(buf,"%u\n",nicks);
write(newfd,buf,strlen(buf));