};
struct sock_ops {
- int (*init)(struct stream_interface *, void *); /* init function */
void (*update)(struct stream_interface *); /* I/O update function */
void (*shutr)(struct stream_interface *); /* shutr function */
void (*shutw)(struct stream_interface *); /* shutw function */
fdtab[fd].state = FD_STCONN; /* connection in progress */
fdtab[fd].flags = FD_FL_TCP | FD_FL_TCP_NODELAY;
- /* If we have nothing to send or if we want to initialize the sock layer,
- * we want to confirm that the TCP connection is established before doing
- * so, so we use our own write callback then switch to the sock layer.
+ /* If we have nothing to send, we want to confirm that the TCP
+ * connection is established before doing so, so we use our own write
+ * callback then switch to the sock layer.
*/
- if (si->sock.init || ((si->ob->flags & BF_OUT_EMPTY) && !si->send_proxy_ofs)) {
+ if ((si->ob->flags & BF_OUT_EMPTY) && !si->send_proxy_ofs) {
fdtab[fd].cb[DIR_RD].f = tcp_connect_read;
fdtab[fd].cb[DIR_WR].f = tcp_connect_write;
}
rep->rto = s->be->timeout.server;
}
req->wex = TICK_ETERNITY;
-
- if (si->sock.init) {
- /* initialize the socket layer if needed */
- void *arg = NULL;
- if (target_srv(&s->target))
- arg = target_srv(&s->target)->sock_init_arg;
- si->sock.init(si, arg);
- }
}
/* Update stream interface status for input states SI_ST_ASS, SI_ST_QUE, SI_ST_TAR.
/* stream sock operations */
struct sock_ops sock_raw = {
- .init = NULL,
.update = sock_raw_data_finish,
.shutr = sock_raw_shutr,
.shutw = sock_raw_shutw,
/* socket operations for embedded tasks */
struct sock_ops stream_int_embedded = {
- .init = NULL,
.update = stream_int_update_embedded,
.shutr = stream_int_shutr,
.shutw = stream_int_shutw,
/* socket operations for external tasks */
struct sock_ops stream_int_task = {
- .init = NULL,
.update = stream_int_update,
.shutr = stream_int_shutr,
.shutw = stream_int_shutw,