浏览代码

Do not set Connection: keep-alive unless -enable_keep_alive is set

Sergey Lyubka 13 年之前
父节点
当前提交
8601b03ead
共有 2 个文件被更改,包括 4 次插入2 次删除
  1. 3 2
      mongoose.c
  2. 1 0
      test/test.pl

+ 3 - 2
mongoose.c

@@ -781,8 +781,9 @@ static int match_extension(const char *path, const char *ext_list) {
 static int should_keep_alive(const struct mg_connection *conn) {
   const char *http_version = conn->request_info.http_version;
   const char *header = mg_get_header(conn, "Connection");
-  return (header == NULL && http_version && !strcmp(http_version, "1.1")) ||
-      (header != NULL && !mg_strcasecmp(header, "keep-alive"));
+  return (!mg_strcasecmp(conn->ctx->config[ENABLE_KEEP_ALIVE], "yes") &&
+          (header == NULL && http_version && !strcmp(http_version, "1.1"))) ||
+          (header != NULL && !mg_strcasecmp(header, "keep-alive"));
 }
 
 static const char *suggest_connection_header(const struct mg_connection *conn) {

+ 1 - 0
test/test.pl

@@ -229,6 +229,7 @@ o("GET /$test_dir_uri/x/ HTTP/1.0\n\n",
   "SCRIPT_FILENAME=test/test_dir/x/index.cgi", 'SCRIPT_FILENAME');
 o("GET /ta/x/ HTTP/1.0\n\n", "SCRIPT_NAME=/ta/x/index.cgi",
   'Aliases SCRIPT_NAME');
+o("GET /hello.txt HTTP/1.1\n\n", 'Connection: close', 'No keep-alive');
 #o("GET /hello.txt HTTP/1.1\n\n   GET /hello.txt HTTP/1.0\n\n",
 #  'HTTP/1.1 200.+keep-alive.+HTTP/1.1 200.+close',
 #  'Request pipelining', 2);