MINOR: listeners: move fd_stop_recv() to the receiver's socket code

fd_stop_recv() has nothing to do in the generic listener code, it's per
protocol as some don't need it. For instance with abns@ it could even
lead to fd_stop_recv(-1). And later with QUIC we don't want to touch
the fd at all! It used to be that since commit f2cb169487 delegating
fd manipulation to their respective threads it wasn't possible to call
it down there but it's not the case anymore, so let's perform the action
in the protocol-specific code.
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index 83b23b9..b9bc97e 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -743,6 +743,7 @@
 	if (shutdown(l->rx.fd, SHUT_RD) != 0)
 		goto check_already_done; /* show always be OK */
 
+	fd_stop_recv(l->rx.fd);
 	return 1;
 
  check_already_done:
@@ -752,11 +753,15 @@
 	 */
 	opt_val = 0;
 	opt_len = sizeof(opt_val);
-	if (getsockopt(l->rx.fd, SOL_SOCKET, SO_ACCEPTCONN, &opt_val, &opt_len) == -1)
+	if (getsockopt(l->rx.fd, SOL_SOCKET, SO_ACCEPTCONN, &opt_val, &opt_len) == -1) {
+		fd_stop_recv(l->rx.fd);
 		return 0; /* the socket is really unrecoverable */
+	}
 
-	if (!opt_val)
+	if (!opt_val) {
+		fd_stop_recv(l->rx.fd);
 		return 1; /* already paused by another process */
+	}
 
 	/* something looks fishy here */
 	return -1;