diff --git a/src/listener.c b/src/listener.c
index f6ab73c..1ad017d 100644
--- a/src/listener.c
+++ b/src/listener.c
@@ -218,6 +218,12 @@
 
 #endif // USE_THREAD
 
+/* adjust the listener's state */
+void listener_set_state(struct listener *l, enum li_state st)
+{
+	l->state = st;
+}
+
 /* This function adds the specified listener's file descriptor to the polling
  * lists if it is in the LI_LISTEN state. The listener enters LI_READY or
  * LI_FULL state depending on its number of connections. In daemon mode, we
@@ -237,15 +243,15 @@
 				do_unbind_listener(listener, 1);
 			else {
 				do_unbind_listener(listener, 0);
-				listener->state = LI_LISTEN;
+				listener_set_state(listener, LI_LISTEN);
 			}
 		}
 		else if (!listener->maxconn || listener->nbconn < listener->maxconn) {
 			fd_want_recv(listener->rx.fd);
-			listener->state = LI_READY;
+			listener_set_state(listener, LI_READY);
 		}
 		else {
-			listener->state = LI_FULL;
+			listener_set_state(listener, LI_FULL);
 		}
 	}
 	/* if this listener is supposed to be only in the master, close it in the workers */
@@ -269,7 +275,7 @@
 	if (listener->state == LI_READY)
 		fd_stop_recv(listener->rx.fd);
 	MT_LIST_DEL(&listener->wait_queue);
-	listener->state = LI_LISTEN;
+	listener_set_state(listener, LI_LISTEN);
   end:
 	HA_SPIN_UNLOCK(LISTENER_LOCK, &listener->lock);
 }
@@ -308,7 +314,7 @@
 	MT_LIST_DEL(&l->wait_queue);
 
 	fd_stop_recv(l->rx.fd);
-	l->state = LI_PAUSED;
+	listener_set_state(l, LI_PAUSED);
   end:
 	HA_SPIN_UNLOCK(LISTENER_LOCK, &l->lock);
 	return ret;
@@ -372,12 +378,12 @@
 		goto end;
 
 	if (l->maxconn && l->nbconn >= l->maxconn) {
-		l->state = LI_FULL;
+		listener_set_state(l, LI_FULL);
 		goto end;
 	}
 
 	fd_want_recv(l->rx.fd);
-	l->state = LI_READY;
+	listener_set_state(l, LI_READY);
   end:
 	HA_SPIN_UNLOCK(LISTENER_LOCK, &l->lock);
 	return ret;
@@ -393,7 +399,7 @@
 		MT_LIST_DEL(&l->wait_queue);
 		if (l->state != LI_FULL) {
 			fd_stop_recv(l->rx.fd);
-			l->state = LI_FULL;
+			listener_set_state(l, LI_FULL);
 		}
 	}
 	HA_SPIN_UNLOCK(LISTENER_LOCK, &l->lock);
@@ -408,7 +414,7 @@
 	if (l->state == LI_READY) {
 		MT_LIST_TRY_ADDQ(list, &l->wait_queue);
 		fd_stop_recv(l->rx.fd);
-		l->state = LI_LIMITED;
+		listener_set_state(l, LI_LIMITED);
 	}
 	HA_SPIN_UNLOCK(LISTENER_LOCK, &l->lock);
 }
@@ -486,7 +492,7 @@
 	MT_LIST_DEL(&listener->wait_queue);
 
 	if (listener->state >= LI_PAUSED) {
-		listener->state = LI_ASSIGNED;
+		listener_set_state(listener, LI_ASSIGNED);
 		fd_stop_both(listener->rx.fd);
 	}
 
@@ -547,7 +553,7 @@
 		l->rx.fd = fd;
 		memcpy(&l->rx.addr, ss, sizeof(*ss));
 		MT_LIST_INIT(&l->wait_queue);
-		l->state = LI_INIT;
+		listener_set_state(l, LI_INIT);
 
 		proto->add(l, port);
 
@@ -575,7 +581,7 @@
 	HA_SPIN_LOCK(PROTO_LOCK, &proto_lock);
 	HA_SPIN_LOCK(LISTENER_LOCK, &listener->lock);
 	if (listener->state == LI_ASSIGNED) {
-		listener->state = LI_INIT;
+		listener_set_state(listener, LI_INIT);
 		LIST_DEL(&listener->rx.proto_list);
 		listener->rx.proto->nb_listeners--;
 		_HA_ATOMIC_SUB(&jobs, 1);
diff --git a/src/proto_sockpair.c b/src/proto_sockpair.c
index fc26a80..eb7ef86 100644
--- a/src/proto_sockpair.c
+++ b/src/proto_sockpair.c
@@ -89,7 +89,7 @@
 {
 	if (listener->state != LI_INIT)
 		return;
-	listener->state = LI_ASSIGNED;
+	listener_set_state(listener, LI_ASSIGNED);
 	listener->rx.proto = &proto_sockpair;
 	LIST_ADDQ(&proto_sockpair.listeners, &listener->rx.proto_list);
 	proto_sockpair.nb_listeners++;
@@ -175,7 +175,7 @@
 		goto err_return;
 	}
 
-	listener->state = LI_LISTEN;
+	listener_set_state(listener, LI_LISTEN);
 	return err;
 
  err_return:
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index 138dd68..e77d50e 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -676,7 +676,7 @@
 #endif
 
 	/* the socket is ready */
-	listener->state = LI_LISTEN;
+	listener_set_state(listener, LI_LISTEN);
 	goto tcp_return;
 
  tcp_close_return:
@@ -702,7 +702,7 @@
 {
 	if (listener->state != LI_INIT)
 		return;
-	listener->state = LI_ASSIGNED;
+	listener_set_state(listener, LI_ASSIGNED);
 	listener->rx.proto = &proto_tcpv4;
 	((struct sockaddr_in *)(&listener->rx.addr))->sin_port = htons(port);
 	LIST_ADDQ(&proto_tcpv4.listeners, &listener->rx.proto_list);
@@ -720,7 +720,7 @@
 {
 	if (listener->state != LI_INIT)
 		return;
-	listener->state = LI_ASSIGNED;
+	listener_set_state(listener, LI_ASSIGNED);
 	listener->rx.proto = &proto_tcpv6;
 	((struct sockaddr_in *)(&listener->rx.addr))->sin_port = htons(port);
 	LIST_ADDQ(&proto_tcpv6.listeners, &listener->rx.proto_list);
diff --git a/src/proto_udp.c b/src/proto_udp.c
index 2333b5d..af75cc9 100644
--- a/src/proto_udp.c
+++ b/src/proto_udp.c
@@ -114,7 +114,7 @@
 		goto udp_return;
 	}
 
-	listener->state = LI_LISTEN;
+	listener_set_state(listener, LI_LISTEN);
 
  udp_return:
 	if (msg && errlen) {
@@ -134,7 +134,7 @@
 {
 	if (listener->state != LI_INIT)
 		return;
-	listener->state = LI_ASSIGNED;
+	listener_set_state(listener, LI_ASSIGNED);
 	listener->rx.proto = &proto_udp4;
 	((struct sockaddr_in *)(&listener->rx.addr))->sin_port = htons(port);
 	LIST_ADDQ(&proto_udp4.listeners, &listener->rx.proto_list);
@@ -149,7 +149,7 @@
 {
 	if (listener->state != LI_INIT)
 		return;
-	listener->state = LI_ASSIGNED;
+	listener_set_state(listener, LI_ASSIGNED);
 	listener->rx.proto = &proto_udp6;
 	((struct sockaddr_in *)(&listener->rx.addr))->sin_port = htons(port);
 	LIST_ADDQ(&proto_udp6.listeners, &listener->rx.proto_list);
diff --git a/src/proto_uxst.c b/src/proto_uxst.c
index 6cf35b7..bafe97d 100644
--- a/src/proto_uxst.c
+++ b/src/proto_uxst.c
@@ -118,7 +118,7 @@
 	}
 
 	/* the socket is now listening */
-	listener->state = LI_LISTEN;
+	listener_set_state(listener, LI_LISTEN);
 	return err;
 
  uxst_close_return:
@@ -142,7 +142,7 @@
 {
 	if (listener->state != LI_INIT)
 		return;
-	listener->state = LI_ASSIGNED;
+	listener_set_state(listener, LI_ASSIGNED);
 	listener->rx.proto = &proto_unix;
 	LIST_ADDQ(&proto_unix.listeners, &listener->rx.proto_list);
 	proto_unix.nb_listeners++;
