This function will be called later when splitting the shutdown in two
steps. It will be needed by SSL and for remote socket operations to
release unused contexts.
return si_ctrl(si)->connect(si);
}
+/* Calls the close() function of the data layer if any */
+static inline void si_data_close(struct stream_interface *si)
+{
+ if (si->conn.data->close)
+ si->conn.data->close(&si->conn);
+}
+
#endif /* _PROTO_STREAM_INTERFACE_H */
/*
void (*chk_rcv)(struct stream_interface *); /* chk_rcv function */
void (*chk_snd)(struct stream_interface *); /* chk_snd function */
int (*read)(int fd); /* read callback after poll() */
- int (*write)(int fd); /* wrtie callback after poll() */
+ int (*write)(int fd); /* write callback after poll() */
+ void (*close)(struct connection *); /* close the data channel on the connection */
+
};
/* A stream interface has 3 parts :
.chk_snd = sock_raw_chk_snd,
.read = sock_raw_read,
.write = sock_raw_write,
+ .close = NULL,
};
/*
.chk_snd = stream_int_chk_snd,
.read = NULL,
.write = NULL,
+ .close = NULL,
};
/* socket operations for external tasks */
.chk_snd = stream_int_chk_snd,
.read = NULL,
.write = NULL,
+ .close = NULL,
};
/*