MEDIUM: stream_interface: pass connection instead of fd in sock_ops

The sock_ops I/O callbacks made use of an FD till now. This has become
inappropriate and the struct connection is much more useful. It also
fixes the race condition introduced by previous change.
diff --git a/src/connection.c b/src/connection.c
index 6b84c94..ef5838a 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -38,14 +38,14 @@
 			goto leave;
 
 	if (fdtab[fd].ev & (FD_POLL_IN | FD_POLL_HUP | FD_POLL_ERR))
-		if (!conn->data->read(fd))
+		if (!conn->data->read(conn))
 			ret |= FD_WAIT_READ;
 
 	if (conn->flags & CO_FL_ERROR)
 		goto leave;
 
 	if (fdtab[fd].ev & (FD_POLL_OUT | FD_POLL_ERR))
-		if (!conn->data->write(fd))
+		if (!conn->data->write(conn))
 			ret |= FD_WAIT_WRITE;
 
 	if (conn->flags & CO_FL_ERROR)
@@ -55,7 +55,7 @@
 		/* still waiting for a connection to establish and no data to
 		 * send in order to probe it ? Then let's retry the connect().
 		 */
-		if (!tcp_connect_probe(fd))
+		if (!tcp_connect_probe(conn))
 			ret |= FD_WAIT_WRITE;
 	}