BUG/MEDIUM: h2: Make sure we don't set CS_FL_ERROR if there's still data.

In the mux h2, make sure we set CS_FL_ERR_PENDING and wake the recv task,
instead of setting CS_FL_ERROR, if CS_FL_EOS is not set, so if there's
potentially still some data to be sent.
diff --git a/src/mux_h2.c b/src/mux_h2.c
index d61205f..3e120d7 100644
--- a/src/mux_h2.c
+++ b/src/mux_h2.c
@@ -588,8 +588,13 @@
 	if (h2s->id && h2s->st < H2_SS_ERROR) {
 		h2s->errcode = err;
 		h2s->st = H2_SS_ERROR;
-		if (h2s->cs)
-			h2s->cs->flags |= CS_FL_ERROR;
+		if (h2s->cs) {
+			if (h2s->cs->flags & CS_FL_EOS)
+				h2s->cs->flags |= CS_FL_ERROR;
+			else {
+				h2s->cs->flags |= CS_FL_REOS | CS_FL_ERR_PENDING;
+			}
+		}
 	}
 }
 
@@ -4795,7 +4800,11 @@
 			break;
 		}
 		else {
-			cs->flags |= CS_FL_ERROR;
+			if (cs->flags & CS_FL_EOS)
+				cs->flags |= CS_FL_ERROR;
+			else
+				cs->flags |= CS_FL_REOS | CS_FL_ERR_PENDING;
+
 			break;
 		}
 
@@ -4820,7 +4829,11 @@
 
 	/* RST are sent similarly to frame acks */
 	if (h2s->st == H2_SS_ERROR || h2s->flags & H2_SF_RST_RCVD) {
-		cs->flags |= CS_FL_ERROR;
+		if (cs->flags & CS_FL_EOS)
+			cs->flags |= CS_FL_ERROR;
+		else
+			cs->flags |= CS_FL_REOS | CS_FL_ERR_PENDING;
+
 		if (h2s_send_rst_stream(h2s->h2c, h2s) > 0)
 			h2s_close(h2s);
 	}