]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
CLEANUP: protocol: remove the now unused <handler> field of proto_fam->bind()
authorWilly Tarreau <w@1wt.eu>
Thu, 15 Oct 2020 19:45:15 +0000 (21:45 +0200)
committerWilly Tarreau <w@1wt.eu>
Thu, 15 Oct 2020 19:47:56 +0000 (21:47 +0200)
We don't need to specify the handler anymore since it's set in the
receiver. Let's remove this argument from the function and clean up
the remains of code that were still setting it.

include/haproxy/proto_sockpair.h
include/haproxy/protocol-t.h
include/haproxy/sock_inet.h
include/haproxy/sock_unix.h
src/proto_sockpair.c
src/protocol.c
src/sock_inet.c
src/sock_unix.c

index 6807169a797af1e36f9fc8508e8a4956ef280f05..e012407d7eb555ba0d540197f399b4b33c10912e 100644 (file)
@@ -25,7 +25,7 @@ extern struct proto_fam proto_fam_sockpair;
 
 int recv_fd_uxst(int sock);
 int send_fd_uxst(int fd, int send_fd);
-int sockpair_bind_receiver(struct receiver *rx, void (*handler)(int fd), char **errmsg);
+int sockpair_bind_receiver(struct receiver *rx, char **errmsg);
 
 #endif /* _HAPROXY_PROTO_SOCKPAIR_H  */
 
index d50c83882edff18c48500504feca8cfa19e0df3c..1306a32a52f9f442ede17eada365b1e21f0684f5 100644 (file)
@@ -67,7 +67,7 @@ struct proto_fam {
        socklen_t sock_addrlen;                         /* socket address length, used by bind() */
        int l3_addrlen;                                 /* layer3 address length, used by hashes */
        int (*addrcmp)(const struct sockaddr_storage *, const struct sockaddr_storage *); /* compare addresses (like memcmp) */
-       int (*bind)(struct receiver *rx, void (*handler)(int fd), char **errmsg); /* bind a receiver */
+       int (*bind)(struct receiver *rx, char **errmsg); /* bind a receiver */
        int (*get_src)(int fd, struct sockaddr *, socklen_t, int dir); /* syscall used to retrieve src addr */
        int (*get_dst)(int fd, struct sockaddr *, socklen_t, int dir); /* syscall used to retrieve dst addr */
 };
index 7ecdc7b6079f8bcca27c2221a62a12cf2feba856..5829fcf3130a19517c636bb74686557d62c23f46 100644 (file)
@@ -40,6 +40,6 @@ int sock_inet_get_dst(int fd, struct sockaddr *sa, socklen_t salen, int dir);
 int sock_inet_is_foreign(int fd, sa_family_t family);
 int sock_inet4_make_foreign(int fd);
 int sock_inet6_make_foreign(int fd);
-int sock_inet_bind_receiver(struct receiver *rx, void (*handler)(int fd), char **errmsg);
+int sock_inet_bind_receiver(struct receiver *rx, char **errmsg);
 
 #endif /* _HAPROXY_SOCK_INET_H */
index 3b46b484223609a93dad4b725faa44ff4144e326..99343417e9d46585914ade79cf044da00b52eaba 100644 (file)
@@ -31,6 +31,6 @@
 extern struct proto_fam proto_fam_unix;
 
 int sock_unix_addrcmp(const struct sockaddr_storage *a, const struct sockaddr_storage *b);
-int sock_unix_bind_receiver(struct receiver *rx, void (*handler)(int fd), char **errmsg);
+int sock_unix_bind_receiver(struct receiver *rx, char **errmsg);
 
 #endif /* _HAPROXY_SOCK_UNIX_H */
index 8e174601982c82b0415ddc6a8ce664879ac610ff..f8e673d0b58e062edf5e61199e56975ca1db2e3c 100644 (file)
@@ -124,15 +124,15 @@ static void sockpair_disable_listener(struct listener *l)
                fd_stop_recv(l->rx.fd);
 }
 
-/* Binds receiver <rx>, and assigns <handler> and rx->owner as the callback and
- * context, respectively, with <tm> as the thread mask. Returns and error code
- * made of ERR_* bits on failure or ERR_NONE on success. On failure, an error
- * message may be passed into <errmsg>. Note that the binding address is only
- * an FD to receive the incoming FDs on. Thus by definition there is no real
- * "bind" operation, this only completes the receiver. Such FDs are not
+/* Binds receiver <rx>, and assigns rx->iocb and rx->owner as the callback
+ * and context, respectively, with ->bind_thread as the thread mask. Returns an
+ * error code made of ERR_* bits on failure or ERR_NONE on success. On failure,
+ * an error message may be passed into <errmsg>. Note that the binding address
+ * is only an FD to receive the incoming FDs on. Thus by definition there is no
+ * real "bind" operation, this only completes the receiver. Such FDs are not
  * inherited upon reload.
  */
-int sockpair_bind_receiver(struct receiver *rx, void (*handler)(int fd), char **errmsg)
+int sockpair_bind_receiver(struct receiver *rx, char **errmsg)
 {
        int err;
 
@@ -165,7 +165,7 @@ int sockpair_bind_receiver(struct receiver *rx, void (*handler)(int fd), char **
 
        rx->flags |= RX_F_BOUND;
 
-       fd_insert(rx->fd, rx->owner, handler, thread_mask(rx->settings->bind_thread) & all_threads_mask);
+       fd_insert(rx->fd, rx->owner, rx->iocb, thread_mask(rx->settings->bind_thread) & all_threads_mask);
        return err;
 
  bind_return:
index 18ca40a0dbe83871f71fcaa3262ff482217d766d..8ea36cb8190389017ba8cfbcc16c00c7b1b216ef 100644 (file)
@@ -65,7 +65,6 @@ int protocol_bind_all(int verbose)
        struct receiver *receiver;
        char msg[100];
        char *errmsg;
-       void *handler;
        int err, lerr;
 
        err = 0;
@@ -74,12 +73,7 @@ int protocol_bind_all(int verbose)
                list_for_each_entry(receiver, &proto->receivers, proto_list) {
                        listener = LIST_ELEM(receiver, struct listener *, rx);
 
-                       /* FIXME: horrible hack, we don't have a way to register
-                        * a handler when creating the receiver yet, so we still
-                        * have to take care of special cases here.
-                        */
-                       handler = listener->rx.iocb;
-                       lerr = proto->fam->bind(receiver, handler, &errmsg);
+                       lerr = proto->fam->bind(receiver, &errmsg);
                        err |= lerr;
 
                        /* errors are reported if <verbose> is set or if they are fatal */
index 7a87fbea83a0efcbc952ac755ec25f70fe352835..6675be583326692834a8adbaa4386ba76cd422e8 100644 (file)
@@ -252,12 +252,12 @@ int sock_inet6_make_foreign(int fd)
                0;
 }
 
-/* Binds receiver <rx>, and assigns <handler> and rx->owner as the callback and
+/* Binds receiver <rx>, and assigns rx->iocb and rx->owner as the callback and
  * context, respectively. Returns and error code made of ERR_* bits on failure
  * or ERR_NONE on success. On failure, an error message may be passed into
  * <errmsg>.
  */
-int sock_inet_bind_receiver(struct receiver *rx, void (*handler)(int fd), char **errmsg)
+int sock_inet_bind_receiver(struct receiver *rx, char **errmsg)
 {
        int fd, err, ext;
        /* copy listener addr because sometimes we need to switch family */
@@ -377,7 +377,7 @@ int sock_inet_bind_receiver(struct receiver *rx, void (*handler)(int fd), char *
        rx->fd = fd;
        rx->flags |= RX_F_BOUND;
 
-       fd_insert(fd, rx->owner, handler, thread_mask(rx->settings->bind_thread) & all_threads_mask);
+       fd_insert(fd, rx->owner, rx->iocb, thread_mask(rx->settings->bind_thread) & all_threads_mask);
 
        /* for now, all regularly bound TCP listeners are exportable */
        if (!(rx->flags & RX_F_INHERITED))
index 2be8d6bfb792f09678236c049c61ae48b0a1e50d..45631ac17a0631af6d5cc92457c99efa4462f8ca 100644 (file)
@@ -118,12 +118,12 @@ int sock_unix_addrcmp(const struct sockaddr_storage *a, const struct sockaddr_st
        return 0;
 }
 
-/* Binds receiver <rx>, and assigns <handler> and rx-> as the callback and
- * context, respectively, with <tm> as the thread mask. Returns and error code
- * made of ERR_* bits on failure or ERR_NONE on success. On failure, an error
- * message may be passed into <errmsg>.
+/* Binds receiver <rx>, and assigns rx->iocb and rx->owner as the callback and
+ * context, respectively, with ->bind_thread as the thread mask. Returns an
+ * error code made of ERR_* bits on failure or ERR_NONE on success. On failure,
+ * an error message may be passed into <errmsg>.
  */
-int sock_unix_bind_receiver(struct receiver *rx, void (*handler)(int fd), char **errmsg)
+int sock_unix_bind_receiver(struct receiver *rx, char **errmsg)
 {
        char tempname[MAXPATHLEN];
        char backname[MAXPATHLEN];
@@ -285,7 +285,7 @@ int sock_unix_bind_receiver(struct receiver *rx, void (*handler)(int fd), char *
        rx->fd = fd;
        rx->flags |= RX_F_BOUND;
 
-       fd_insert(fd, rx->owner, handler, thread_mask(rx->settings->bind_thread) & all_threads_mask);
+       fd_insert(fd, rx->owner, rx->iocb, thread_mask(rx->settings->bind_thread) & all_threads_mask);
 
        /* for now, all regularly bound TCP listeners are exportable */
        if (!(rx->flags & RX_F_INHERITED))