|
@@ -829,7 +829,7 @@ hpack_encode(uint8_t *store, const char *load, int lower)
|
|
|
|
|
|
|
|
|
static const char http2_pri[] = "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n";
|
|
|
-static unsigned char http2_pri_len = 24; /* = strlen(http2_pri) */
|
|
|
+static const unsigned char http2_pri_len = 24; /* = strlen(http2_pri) */
|
|
|
|
|
|
|
|
|
/* Read and check the HTTP/2 primer/preface:
|
|
@@ -841,10 +841,16 @@ is_valid_http2_primer(struct mg_connection *conn)
|
|
|
char buf[32]; /* Buffer must hold 24 bytes primer */
|
|
|
|
|
|
int read_pri_len = mg_read(conn, buf, pri_len);
|
|
|
- if ((read_pri_len != (int)pri_len)
|
|
|
- || (0 != memcmp(buf, http2_pri, pri_len))) {
|
|
|
+ if (read_pri_len != (int)pri_len) {
|
|
|
+ /* Size does not match.
|
|
|
+ * This includes cases where mg_read returns error codes */
|
|
|
return 0;
|
|
|
}
|
|
|
+ if (0 != memcmp(buf, http2_pri, pri_len)) {
|
|
|
+ /* Primer does not match */
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ /* Primer does match */
|
|
|
return 1;
|
|
|
}
|
|
|
|