diff --git a/include/types/stream_interface.h b/include/types/stream_interface.h index 7e9972242..70b8cd596 100644 --- a/include/types/stream_interface.h +++ b/include/types/stream_interface.h @@ -83,13 +83,14 @@ struct stream_interface { int fd; /* file descriptor for a stream driver when known */ unsigned int flags; unsigned int exp; /* wake up time for connect, queue, turn-around, ... */ - void (*update)(struct stream_interface *); /* update function */ + void (*update)(struct stream_interface *); /* I/O update function */ void (*shutr)(struct stream_interface *); /* shutr function */ void (*shutw)(struct stream_interface *); /* shutw function */ void (*chk_rcv)(struct stream_interface *);/* chk_rcv function */ void (*chk_snd)(struct stream_interface *);/* chk_snd function */ int (*connect)(struct stream_interface *, struct proxy *, struct server *, struct sockaddr *, struct sockaddr *); /* connect function if any */ + void (*iohandler)(struct stream_interface *); /* internal I/O handler when embedded */ struct buffer *ib, *ob; /* input and output buffers */ unsigned int err_type; /* first error detected, one of SI_ET_* */ void *err_loc; /* commonly the server, NULL when SI_ET_NONE */ diff --git a/src/client.c b/src/client.c index 76c91c919..88c11312f 100644 --- a/src/client.c +++ b/src/client.c @@ -197,6 +197,7 @@ int event_accept(int fd) { s->si[0].chk_rcv = stream_sock_chk_rcv; s->si[0].chk_snd = stream_sock_chk_snd; s->si[0].connect = NULL; + s->si[0].iohandler = NULL; s->si[0].fd = cfd; s->si[0].flags = SI_FL_NONE | SI_FL_CAP_SPLTCP; /* TCP splicing capable */ s->si[0].exp = TICK_ETERNITY; @@ -211,6 +212,7 @@ int event_accept(int fd) { s->si[1].chk_rcv = stream_sock_chk_rcv; s->si[1].chk_snd = stream_sock_chk_snd; s->si[1].connect = tcpv4_connect_server; + s->si[1].iohandler = NULL; s->si[1].exp = TICK_ETERNITY; s->si[1].fd = -1; /* just to help with debugging */ s->si[1].flags = SI_FL_NONE; diff --git a/src/proto_uxst.c b/src/proto_uxst.c index 60efb6dd7..686d85429 100644 --- a/src/proto_uxst.c +++ b/src/proto_uxst.c @@ -451,6 +451,7 @@ int uxst_event_accept(int fd) { s->si[0].chk_rcv = stream_sock_chk_rcv; s->si[0].chk_snd = stream_sock_chk_snd; s->si[0].connect = NULL; + s->si[0].iohandler = NULL; s->si[0].fd = cfd; s->si[0].flags = SI_FL_NONE; s->si[0].exp = TICK_ETERNITY; @@ -465,6 +466,7 @@ int uxst_event_accept(int fd) { s->si[1].chk_rcv = stream_sock_chk_rcv; s->si[1].chk_snd = stream_sock_chk_snd; s->si[1].connect = NULL; + s->si[1].iohandler = NULL; s->si[1].exp = TICK_ETERNITY; s->si[1].fd = -1; /* just to help with debugging */ s->si[1].flags = SI_FL_NONE;