MINOR: stream-int/connection: Move conn_si_send_proxy() in the connection scope

conn_si_send_proxy() function is renamed conn_send_proxy() and moved in
connection.c
diff --git a/include/haproxy/connection.h b/include/haproxy/connection.h
index 080ef4c..8240a6d 100644
--- a/include/haproxy/connection.h
+++ b/include/haproxy/connection.h
@@ -50,6 +50,7 @@
 
 /* receive a PROXY protocol header over a connection */
 int conn_recv_proxy(struct connection *conn, int flag);
+int conn_send_proxy(struct connection *conn, unsigned int flag);
 int make_proxy_line(char *buf, int buf_len, struct server *srv, struct connection *remote, struct stream *strm);
 
 int conn_append_debug_info(struct buffer *buf, const struct connection *conn, const char *pfx);
diff --git a/include/haproxy/stream_interface.h b/include/haproxy/stream_interface.h
index 93fffff..f0c16c7 100644
--- a/include/haproxy/stream_interface.h
+++ b/include/haproxy/stream_interface.h
@@ -40,7 +40,6 @@
 void si_free(struct stream_interface *si);
 
 /* main event functions used to move data between sockets and buffers */
-int conn_si_send_proxy(struct connection *conn, unsigned int flag);
 void si_applet_wake_cb(struct stream_interface *si);
 void si_update_rx(struct stream_interface *si);
 void si_update_tx(struct stream_interface *si);
diff --git a/src/connection.c b/src/connection.c
index 227e9d9..35549ee 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -1163,6 +1163,101 @@
 	return 0;
 }
 
+/* This callback is used to send a valid PROXY protocol line to a socket being
+ * established. It returns 0 if it fails in a fatal way or needs to poll to go
+ * further, otherwise it returns non-zero and removes itself from the connection's
+ * flags (the bit is provided in <flag> by the caller). It is designed to be
+ * called by the connection handler and relies on it to commit polling changes.
+ * Note that it can emit a PROXY line by relying on the other end's address
+ * when the connection is attached to a stream interface, or by resolving the
+ * local address otherwise (also called a LOCAL line).
+ */
+int conn_send_proxy(struct connection *conn, unsigned int flag)
+{
+	if (!conn_ctrl_ready(conn))
+		goto out_error;
+
+	/* If we have a PROXY line to send, we'll use this to validate the
+	 * connection, in which case the connection is validated only once
+	 * we've sent the whole proxy line. Otherwise we use connect().
+	 */
+	if (conn->send_proxy_ofs) {
+		struct conn_stream *cs;
+		int ret;
+
+		/* If there is no mux attached to the connection, it means the
+		 * connection context is a conn-stream.
+		 */
+		cs = (conn->mux ? cs_conn_get_first(conn) : conn->ctx);
+
+		/* The target server expects a PROXY line to be sent first.
+		 * If the send_proxy_ofs is negative, it corresponds to the
+		 * offset to start sending from then end of the proxy string
+		 * (which is recomputed every time since it's constant). If
+		 * it is positive, it means we have to send from the start.
+		 * We can only send a "normal" PROXY line when the connection
+		 * is attached to a stream interface. Otherwise we can only
+		 * send a LOCAL line (eg: for use with health checks).
+		 */
+
+		if (cs && cs_strm(cs)) {
+			ret = make_proxy_line(trash.area, trash.size,
+					      objt_server(conn->target),
+					      cs_conn(cs_opposite(cs)),
+					      __cs_strm(cs));
+		}
+		else {
+			/* The target server expects a LOCAL line to be sent first. Retrieving
+			 * local or remote addresses may fail until the connection is established.
+			 */
+			if (!conn_get_src(conn) || !conn_get_dst(conn))
+				goto out_wait;
+
+			ret = make_proxy_line(trash.area, trash.size,
+					      objt_server(conn->target), conn,
+					      NULL);
+		}
+
+		if (!ret)
+			goto out_error;
+
+		if (conn->send_proxy_ofs > 0)
+			conn->send_proxy_ofs = -ret; /* first call */
+
+		/* we have to send trash from (ret+sp for -sp bytes). If the
+		 * data layer has a pending write, we'll also set MSG_MORE.
+		 */
+		ret = conn_ctrl_send(conn,
+				     trash.area + ret + conn->send_proxy_ofs,
+		                     -conn->send_proxy_ofs,
+		                     (conn->subs && conn->subs->events & SUB_RETRY_SEND) ? CO_SFL_MSG_MORE : 0);
+
+		if (ret < 0)
+			goto out_error;
+
+		conn->send_proxy_ofs += ret; /* becomes zero once complete */
+		if (conn->send_proxy_ofs != 0)
+			goto out_wait;
+
+		/* OK we've sent the whole line, we're connected */
+	}
+
+	/* The connection is ready now, simply return and let the connection
+	 * handler notify upper layers if needed.
+	 */
+	conn->flags &= ~CO_FL_WAIT_L4_CONN;
+	conn->flags &= ~flag;
+	return 1;
+
+ out_error:
+	/* Write error on the file descriptor */
+	conn->flags |= CO_FL_ERROR;
+	return 0;
+
+ out_wait:
+	return 0;
+}
+
 /* This handshake handler waits a NetScaler Client IP insertion header
  * at the beginning of the raw data stream. The header format is
  * described in doc/netscaler-client-ip-insertion-protocol.txt
diff --git a/src/stream_interface.c b/src/stream_interface.c
index 85e2b61..95985b7 100644
--- a/src/stream_interface.c
+++ b/src/stream_interface.c
@@ -269,102 +269,6 @@
 		task_wakeup(cs_strm_task(cs), TASK_WOKEN_IO);
 }
 
-/* This callback is used to send a valid PROXY protocol line to a socket being
- * established. It returns 0 if it fails in a fatal way or needs to poll to go
- * further, otherwise it returns non-zero and removes itself from the connection's
- * flags (the bit is provided in <flag> by the caller). It is designed to be
- * called by the connection handler and relies on it to commit polling changes.
- * Note that it can emit a PROXY line by relying on the other end's address
- * when the connection is attached to a stream interface, or by resolving the
- * local address otherwise (also called a LOCAL line).
- */
-int conn_si_send_proxy(struct connection *conn, unsigned int flag)
-{
-	if (!conn_ctrl_ready(conn))
-		goto out_error;
-
-	/* If we have a PROXY line to send, we'll use this to validate the
-	 * connection, in which case the connection is validated only once
-	 * we've sent the whole proxy line. Otherwise we use connect().
-	 */
-	if (conn->send_proxy_ofs) {
-		const struct conn_stream *cs;
-		int ret;
-
-		/* If there is no mux attached to the connection, it means the
-		 * connection context is a conn-stream.
-		 */
-		cs = (conn->mux ? cs_conn_get_first(conn) : conn->ctx);
-
-		/* The target server expects a PROXY line to be sent first.
-		 * If the send_proxy_ofs is negative, it corresponds to the
-		 * offset to start sending from then end of the proxy string
-		 * (which is recomputed every time since it's constant). If
-		 * it is positive, it means we have to send from the start.
-		 * We can only send a "normal" PROXY line when the connection
-		 * is attached to a stream interface. Otherwise we can only
-		 * send a LOCAL line (eg: for use with health checks).
-		 */
-
-		if (cs && cs->data_cb == &si_conn_cb) {
-			ret = make_proxy_line(trash.area, trash.size,
-					      objt_server(conn->target),
-					      cs_conn(si_opposite(cs_si(cs))->cs),
-					      cs_strm(cs));
-		}
-		else {
-			/* The target server expects a LOCAL line to be sent first. Retrieving
-			 * local or remote addresses may fail until the connection is established.
-			 */
-			if (!conn_get_src(conn) || !conn_get_dst(conn))
-				goto out_wait;
-
-			ret = make_proxy_line(trash.area, trash.size,
-					      objt_server(conn->target), conn,
-					      NULL);
-		}
-
-		if (!ret)
-			goto out_error;
-
-		if (conn->send_proxy_ofs > 0)
-			conn->send_proxy_ofs = -ret; /* first call */
-
-		/* we have to send trash from (ret+sp for -sp bytes). If the
-		 * data layer has a pending write, we'll also set MSG_MORE.
-		 */
-		ret = conn_ctrl_send(conn,
-				     trash.area + ret + conn->send_proxy_ofs,
-		                     -conn->send_proxy_ofs,
-		                     (conn->subs && conn->subs->events & SUB_RETRY_SEND) ? CO_SFL_MSG_MORE : 0);
-
-		if (ret < 0)
-			goto out_error;
-
-		conn->send_proxy_ofs += ret; /* becomes zero once complete */
-		if (conn->send_proxy_ofs != 0)
-			goto out_wait;
-
-		/* OK we've sent the whole line, we're connected */
-	}
-
-	/* The connection is ready now, simply return and let the connection
-	 * handler notify upper layers if needed.
-	 */
-	conn->flags &= ~CO_FL_WAIT_L4_CONN;
-	conn->flags &= ~flag;
-	return 1;
-
- out_error:
-	/* Write error on the file descriptor */
-	conn->flags |= CO_FL_ERROR;
-	return 0;
-
- out_wait:
-	return 0;
-}
-
-
 /* This function is the equivalent to si_update() except that it's
  * designed to be called from outside the stream handlers, typically the lower
  * layers (applets, connections) after I/O completion. After updating the stream
diff --git a/src/xprt_handshake.c b/src/xprt_handshake.c
index e9b22b8..75ebdae 100644
--- a/src/xprt_handshake.c
+++ b/src/xprt_handshake.c
@@ -11,7 +11,6 @@
  */
 
 #include <haproxy/connection.h>
-#include <haproxy/stream_interface.h>
 
 struct xprt_handshake_ctx {
 	struct connection *conn;
@@ -72,7 +71,7 @@
 		}
 
 	if (conn->flags & CO_FL_SEND_PROXY)
-		if (!conn_si_send_proxy(conn, CO_FL_SEND_PROXY)) {
+		if (!conn_send_proxy(conn, CO_FL_SEND_PROXY)) {
 			ctx->xprt->subscribe(conn, ctx->xprt_ctx, SUB_RETRY_SEND,
 			    &ctx->wait_event);
 			goto out;