MEDIUM: listener: Bind listeners on a thread subset if specified
If a "process" option with a thread set is used on the bind line, we use the
corresponding bitmask when the listener's FD is created.
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index 5badda7..606c3c5 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -1107,7 +1107,10 @@
fdtab[fd].owner = listener; /* reference the listener instead of a task */
fdtab[fd].iocb = listener->proto->accept;
- fd_insert(fd, MAX_THREADS_MASK);
+ if (listener->bind_conf->bind_thread[relative_pid-1])
+ fd_insert(fd, listener->bind_conf->bind_thread[relative_pid-1]);
+ else
+ fd_insert(fd, MAX_THREADS_MASK);
tcp_return:
if (msg && errlen) {
diff --git a/src/proto_uxst.c b/src/proto_uxst.c
index fc4a519..3b353c6 100644
--- a/src/proto_uxst.c
+++ b/src/proto_uxst.c
@@ -334,7 +334,10 @@
/* the function for the accept() event */
fdtab[fd].iocb = listener->proto->accept;
fdtab[fd].owner = listener; /* reference the listener instead of a task */
- fd_insert(fd, MAX_THREADS_MASK);
+ if (listener->bind_conf->bind_thread[relative_pid-1])
+ fd_insert(fd, listener->bind_conf->bind_thread[relative_pid-1]);
+ else
+ fd_insert(fd, MAX_THREADS_MASK);
return err;
err_rename: