#include <unistd.h>
#include <netinet/in.h>
#include <string.h>
+#include "../lib/version.h"
+
+MODULE_VERSION("")
unsigned int nicks;
unsigned int quits;
-int listenfd;
+int nickrate_listenfd;
void nr_nick(int hooknum, void *arg);
void nr_handlelistensocket(int fd, short events);
registerhook(HOOK_NICK_NEWNICK, &nr_nick);
registerhook(HOOK_NICK_LOSTNICK, &nr_nick);
- listenfd=nr_openlistensocket(6002);
- if (listenfd>0) {
- registerhandler(listenfd,POLLIN,&nr_handlelistensocket);
+ nickrate_listenfd=nr_openlistensocket(6002);
+ if (nickrate_listenfd>0) {
+ registerhandler(nickrate_listenfd,POLLIN,&nr_handlelistensocket);
}
}
void _fini() {
deregisterhook(HOOK_NICK_NEWNICK, &nr_nick);
deregisterhook(HOOK_NICK_LOSTNICK, &nr_nick);
- deregisterhandler(listenfd,1);
+ deregisterhandler(nickrate_listenfd,1);
}
void nr_nick(int hooknum, void *arg) {
}
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));