diff --git a/include/proto/proto_tcp.h b/include/proto/proto_tcp.h index 13d7a788b..94a84153b 100644 --- a/include/proto/proto_tcp.h +++ b/include/proto/proto_tcp.h @@ -28,8 +28,8 @@ #include int tcp_bind_socket(int fd, int flags, struct sockaddr_storage *local, struct sockaddr_storage *remote); -void tcpv4_add_listener(struct listener *listener); -void tcpv6_add_listener(struct listener *listener); +void tcpv4_add_listener(struct listener *listener, int port); +void tcpv6_add_listener(struct listener *listener, int port); int tcp_pause_listener(struct listener *l); int tcp_connect_server(struct connection *conn, int data, int delack); int tcp_connect_probe(struct connection *conn); diff --git a/include/proto/proto_uxst.h b/include/proto/proto_uxst.h index d7bcaa6ef..63de24f53 100644 --- a/include/proto/proto_uxst.h +++ b/include/proto/proto_uxst.h @@ -26,7 +26,7 @@ #include #include -void uxst_add_listener(struct listener *listener); +void uxst_add_listener(struct listener *listener, int port); int uxst_pause_listener(struct listener *l); int uxst_get_src(int fd, struct sockaddr *sa, socklen_t salen, int dir); int uxst_get_dst(int fd, struct sockaddr *sa, socklen_t salen, int dir); diff --git a/src/cfgparse.c b/src/cfgparse.c index fc346b99f..9752b81e2 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -299,15 +299,13 @@ int str2listener(char *str, struct proxy *curproxy, struct bind_conf *bind_conf, l->state = LI_INIT; if (ss.ss_family == AF_INET) { - ((struct sockaddr_in *)(&l->addr))->sin_port = htons(port); - tcpv4_add_listener(l); + tcpv4_add_listener(l, port); } else if (ss.ss_family == AF_INET6) { - ((struct sockaddr_in6 *)(&l->addr))->sin6_port = htons(port); - tcpv6_add_listener(l); + tcpv6_add_listener(l, port); } else { - uxst_add_listener(l); + uxst_add_listener(l, port); } jobs++; diff --git a/src/proto_tcp.c b/src/proto_tcp.c index 2bbde7a21..6b1505a3a 100644 --- a/src/proto_tcp.c +++ b/src/proto_tcp.c @@ -1137,30 +1137,32 @@ static int tcp_bind_listeners(struct protocol *proto, char *errmsg, int errlen) return err; } -/* Add listener to the list of tcpv4 listeners. The listener's state - * is automatically updated from LI_INIT to LI_ASSIGNED. The number of - * listeners is updated. This is the function to use to add a new listener. +/* Add to the list of tcpv4 listeners, on port . The + * listener's state is automatically updated from LI_INIT to LI_ASSIGNED. + * The number of listeners for the protocol is updated. */ -void tcpv4_add_listener(struct listener *listener) +void tcpv4_add_listener(struct listener *listener, int port) { if (listener->state != LI_INIT) return; listener->state = LI_ASSIGNED; listener->proto = &proto_tcpv4; + ((struct sockaddr_in *)(&listener->addr))->sin_port = htons(port); LIST_ADDQ(&proto_tcpv4.listeners, &listener->proto_list); proto_tcpv4.nb_listeners++; } -/* Add listener to the list of tcpv4 listeners. The listener's state - * is automatically updated from LI_INIT to LI_ASSIGNED. The number of - * listeners is updated. This is the function to use to add a new listener. +/* Add to the list of tcpv6 listeners, on port . The + * listener's state is automatically updated from LI_INIT to LI_ASSIGNED. + * The number of listeners for the protocol is updated. */ -void tcpv6_add_listener(struct listener *listener) +void tcpv6_add_listener(struct listener *listener, int port) { if (listener->state != LI_INIT) return; listener->state = LI_ASSIGNED; listener->proto = &proto_tcpv6; + ((struct sockaddr_in *)(&listener->addr))->sin_port = htons(port); LIST_ADDQ(&proto_tcpv6.listeners, &listener->proto_list); proto_tcpv6.nb_listeners++; } diff --git a/src/proto_uxst.c b/src/proto_uxst.c index ac14d3b49..767cd16fd 100644 --- a/src/proto_uxst.c +++ b/src/proto_uxst.c @@ -365,11 +365,11 @@ static int uxst_unbind_listener(struct listener *listener) return ERR_NONE; } -/* Add a listener to the list of unix stream listeners. The listener's state - * is automatically updated from LI_INIT to LI_ASSIGNED. The number of - * listeners is updated. This is the function to use to add a new listener. +/* Add to the list of unix stream listeners (port is ignored). The + * listener's state is automatically updated from LI_INIT to LI_ASSIGNED. + * The number of listeners for the protocol is updated. */ -void uxst_add_listener(struct listener *listener) +void uxst_add_listener(struct listener *listener, int port) { if (listener->state != LI_INIT) return;