[master] d56e94a h2: Move RST_STREAM tx handling to its own function

Dag Haavi Finstad daghf at varnish-software.com
Mon Jan 22 09:04:09 UTC 2018


commit d56e94a0503c7b8ae333c29381036af5f9587f04
Author: Dag Haavi Finstad <daghf at varnish-software.com>
Date:   Wed Jan 17 11:05:21 2018 +0100

    h2: Move RST_STREAM tx handling to its own function

diff --git a/bin/varnishd/http2/cache_http2_proto.c b/bin/varnishd/http2/cache_http2_proto.c
index 45ab188..71ec6a8 100644
--- a/bin/varnishd/http2/cache_http2_proto.c
+++ b/bin/varnishd/http2/cache_http2_proto.c
@@ -804,12 +804,34 @@ h2_frame_complete(struct http_conn *htc)
 /**********************************************************************/
 
 static h2_error
+h2_tx_rst(struct worker *wrk, struct h2_sess *h2, h2_error h2e)
+{
+	h2_error ret;
+	char b[4];
+
+	CHECK_OBJ_NOTNULL(h2, H2_SESS_MAGIC);
+
+	Lck_Lock(&h2->sess->mtx);
+	VSLb(h2->vsl, SLT_Debug, "H2: stream %u: %s", h2->rxf_stream, h2e->txt);
+	Lck_Unlock(&h2->sess->mtx);
+	vbe32enc(b, h2e->val);
+
+	H2_Send_Get(wrk, h2, h2->req0);
+	ret = H2_Send_Frame(wrk, h2, H2_F_RST_STREAM,
+	    0, sizeof b, h2->rxf_stream, b);
+	H2_Send_Rel(h2, h2->req0);
+
+	return (ret);
+}
+
+/**********************************************************************/
+
+static h2_error
 h2_procframe(struct worker *wrk, struct h2_sess *h2,
     h2_frame h2f)
 {
 	struct h2_req *r2 = NULL, *r22;
 	h2_error h2e;
-	char b[4];
 
 	ASSERT_RXTHR(h2);
 	if (h2->rxf_stream == 0 && h2f->act_szero != 0)
@@ -857,17 +879,7 @@ h2_procframe(struct worker *wrk, struct h2_sess *h2,
 	if (h2->rxf_stream == 0 || h2e->connection)
 		return (h2e);	// Connection errors one level up
 
-	Lck_Lock(&h2->sess->mtx);
-	VSLb(h2->vsl, SLT_Debug, "H2: stream %u: %s", h2->rxf_stream, h2e->txt);
-	Lck_Unlock(&h2->sess->mtx);
-	vbe32enc(b, h2e->val);
-
-	H2_Send_Get(wrk, h2, h2->req0);
-	(void)H2_Send_Frame(wrk, h2, H2_F_RST_STREAM,
-	    0, sizeof b, h2->rxf_stream, b);
-	H2_Send_Rel(h2, h2->req0);
-
-	return (0);
+	return (h2_tx_rst(wrk, h2, h2e));
 }
 
 /***********************************************************************


More information about the varnish-commit mailing list