MEDIUM: connection: always unset the transport layer upon close

When calling conn_xprt_close(), we always clear the transport pointer
so that all transport layers leave the connection in the same state after
a close. This will also make it safer and cheaper to call conn_xprt_close()
multiple times if needed.
diff --git a/include/proto/connection.h b/include/proto/connection.h
index 37af379..ff63e03 100644
--- a/include/proto/connection.h
+++ b/include/proto/connection.h
@@ -45,11 +45,16 @@
 	return 0;
 }
 
-/* Calls the close() function of the transport layer if any */
+/* Calls the close() function of the transport layer if any, and always unsets
+ * the transport layer.
+ */
 static inline void conn_xprt_close(struct connection *conn)
 {
-	if (conn->xprt && conn->xprt->close)
-		conn->xprt->close(conn);
+	if (conn->xprt) {
+		if (conn->xprt->close)
+			conn->xprt->close(conn);
+		conn->xprt = NULL;
+	}
 }
 
 /* Update polling on connection <c>'s file descriptor depending on its current