int exit_all = 0;
+#define EXTRA_DEBUG 0
+
#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))
return -1;
}
- printf("Registering handler for %s, fd %d\n",
- handler->name, handler->ev.data.fd);
+ if (EXTRA_DEBUG)
+ printf("Registering handler for %s, fd %d\n",
+ handler->name, handler->ev.data.fd);
ev.data.fd = handler->ev.data.fd;
ev.data.ptr = handler;
goto out_free;
}
- printf("%s: Got %s", __func__, conn->buf);
+ if (EXTRA_DEBUG)
+ printf("%s: Got %s", __func__, conn->buf);
conn->min_timestamp = atoi(conn->buf);
}
}
out_free:
- printf("%s: Closing socket %d\n", __func__, conn->fd);
+ if (EXTRA_DEBUG)
+ printf("%s: Closing socket %d\n", __func__, conn->fd);
+
close(conn->fd);
free(conn);
struct sockaddr_in addr;
struct listening_socket incoming;
int sockfd, ret;
+ int enable = 1;
bzero(&addr, sizeof(addr));
bzero(&incoming, sizeof(incoming));
goto out;
}
+ ret = setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(int));
+ if (ret < 0)
+ printf("Error setting SO_REUSEADDR: %m\n");
+
addr.sin_family = AF_INET;
addr.sin_port = htons(8347);
addr.sin_addr.s_addr = INADDR_ANY;
struct epoll_event ev;
struct event_handler *h;
- printf("%s: Waiting for events..\n", __func__);
+ if (EXTRA_DEBUG)
+ printf("%s: Waiting for events..\n", __func__);
+
ret = epoll_wait(bme->epollfd, &ev, 1, -1);
if (ret == -1) {
if (errno != EINTR) {
h = ev.data.ptr;
- printf("Handling %s %s event for %s\n",
- ev.events & EPOLLIN ? "incoming" : "",
- ev.events & EPOLLOUT ? "outgoing" : "",
- h->name);
+ if (EXTRA_DEBUG)
+ printf("Handling %s %s event for %s\n",
+ ev.events & EPOLLIN ? "incoming" : "",
+ ev.events & EPOLLOUT ? "outgoing" : "",
+ h->name);
+
h->ev = ev;
h->handle_event(h);
}