浏览代码

Resolve merge conflict

xtne6f 9 年之前
父节点
当前提交
e0175ea806
共有 1 个文件被更改,包括 8 次插入16 次删除
  1. 8 16
      src/civetweb.c

+ 8 - 16
src/civetweb.c

@@ -6909,23 +6909,12 @@ parse_http_headers(char **buf, struct mg_request_info *ri)
 
 	for (i = 0; i < (int)ARRAY_SIZE(ri->http_headers); i++) {
 		char *dp = *buf;
-		while ((*dp != ':') && (*dp != '\r') && (*dp != 0)) {
+		while ((*dp != ':') && (*dp >= 32) && (*dp <= 126)) {
 			dp++;
 		}
-		if (!*dp) {
-			/* neither : nor \r\n. This is not a valid field. */
+		if ((dp == *buf) || (*dp != ':')) {
+			/* This is not a valid field. */
 			break;
-		}
-		if (*dp == '\r') {
-			if (dp[1] == '\n') {
-				/* \r\n */
-				ri->http_headers[i].name = *buf;
-				ri->http_headers[i].value = "";
-				*buf = dp;
-			} else {
-				/* stray \r. This is not valid. */
-				break;
-			}
 		} else {
 			/* (*dp == ':') */
 			*dp = 0;
@@ -6935,7 +6924,10 @@ parse_http_headers(char **buf, struct mg_request_info *ri)
 			} while (*dp == ' ');
 
 			ri->http_headers[i].value = dp;
-			*buf = strstr(dp, "\r\n");
+			*buf = dp + strcspn(dp, "\r\n");
+			if (((*buf)[0] != '\r') || ((*buf)[1] != '\n')) {
+				*buf = NULL;
+			}
 		}
 
 		ri->num_headers = i + 1;
@@ -6948,7 +6940,7 @@ parse_http_headers(char **buf, struct mg_request_info *ri)
 			break;
 		}
 
-		if (*buf[0] == '\r') {
+		if ((*buf)[0] == '\r') {
 			/* This is the end of the header */
 			break;
 		}