MEDIUM: connection: add an ->init function to data layer

SSL need to initialize the data layer before proceeding with data. At
the moment, this data layer is automatically initialized from itself,
which will not be possible once we extract connection from sessions
since we'll only create the data layer once the handshake is finished.

So let's have the application layer initialize the data layer before
using it.
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index af9dbf9..99741dc 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -458,6 +458,10 @@
 	fdtab[fd].iocb = conn_fd_handler;
 	fd_insert(fd);
 	conn_sock_want_send(conn);  /* for connect status */
+
+	if (conn_data_init(conn) < 0)
+		return SN_ERR_RESOURCE;
+
 	if (data)
 		conn_data_want_send(conn);  /* prepare to send data if any */
 
diff --git a/src/session.c b/src/session.c
index db13fc6..6b784cf 100644
--- a/src/session.c
+++ b/src/session.c
@@ -278,6 +278,8 @@
 	fdtab[cfd].flags = 0;
 	fdtab[cfd].iocb = conn_fd_handler;
 	conn_data_want_recv(&s->si[0].conn);
+	if (conn_data_init(&s->si[0].conn) < 0)
+		goto out_free_rep;
 
 	if (p->accept && (ret = p->accept(s)) <= 0) {
 		/* Either we had an unrecoverable error (<0) or work is