MINOR: connstream: have a new flag CS_FL_KILL_CONN to kill a connection

This is the equivalent of SI_FL_KILL_CONN but for the connstreams. It
will be set by the stream-interface during the various shutdown
operations.
diff --git a/include/types/connection.h b/include/types/connection.h
index 434318f..f11cfb5 100644
--- a/include/types/connection.h
+++ b/include/types/connection.h
@@ -88,6 +88,7 @@
 	CS_FL_EOS           = 0x00001000,  /* End of stream delivered to data layer */
 	CS_FL_REOS          = 0x00002000,  /* End of stream received (buffer not empty) */
 	CS_FL_WAIT_FOR_HS   = 0x00010000,  /* This stream is waiting for handhskae */
+	CS_FL_KILL_CONN     = 0x00020000,  /* must kill the connection when the CS closes */
 
 	/* following flags are supposed to be set by the mux and read/unset by
 	 * the stream-interface :
diff --git a/src/stream_interface.c b/src/stream_interface.c
index cbe6f6e..669a906 100644
--- a/src/stream_interface.c
+++ b/src/stream_interface.c
@@ -904,6 +904,9 @@
 	if (si->state != SI_ST_EST && si->state != SI_ST_CON)
 		return;
 
+	if (si->flags & SI_FL_KILL_CONN)
+		cs->flags |= CS_FL_KILL_CONN;
+
 	if (si_oc(si)->flags & CF_SHUTW) {
 		cs_close(cs);
 		si->state = SI_ST_DIS;
@@ -950,6 +953,9 @@
 		 * However, if SI_FL_NOLINGER is explicitly set, we know there is
 		 * no risk so we close both sides immediately.
 		 */
+		if (si->flags & SI_FL_KILL_CONN)
+			cs->flags |= CS_FL_KILL_CONN;
+
 		if (si->flags & SI_FL_ERR) {
 			/* quick close, the socket is alredy shut anyway */
 		}
@@ -984,6 +990,8 @@
 		/* we may have to close a pending connection, and mark the
 		 * response buffer as shutr
 		 */
+		if (si->flags & SI_FL_KILL_CONN)
+			cs->flags |= CS_FL_KILL_CONN;
 		cs_close(cs);
 		/* fall through */
 	case SI_ST_CER: