浏览代码

Bugfix of Issue #180: mg_read() should accept PUT requests.

Arnout Vandecappelle (Essensium/Mind) 14 年之前
父节点
当前提交
fb9493a090
共有 3 个文件被更改,包括 8 次插入3 次删除
  1. 1 2
      mongoose.c
  2. 3 1
      test/embed.c
  3. 4 0
      test/test.pl

+ 1 - 2
mongoose.c

@@ -1322,8 +1322,7 @@ int mg_read(struct mg_connection *conn, void *buf, size_t len) {
   DEBUG_TRACE(("%p %zu %lld %lld", buf, len,
                conn->content_len, conn->consumed_content));
   nread = 0;
-  if (strcmp(conn->request_info.request_method, "POST") == 0 &&
-      conn->consumed_content < conn->content_len) {
+  if (conn->consumed_content < conn->content_len) {
 
     // Adjust number of bytes to read.
     int64_t to_read = conn->content_len - conn->consumed_content;

+ 3 - 1
test/embed.c

@@ -51,7 +51,9 @@ static void test_get_var(struct mg_connection *conn,
   var = buf = NULL;
   cl = mg_get_header(conn, "Content-Length");
   mg_printf(conn, "cl: %p\n", cl);
-  if (!strcmp(ri->request_method, "POST") && cl != NULL) {
+  printf("reqeust method = %s\n", ri->request_method);
+  if ((!strcmp(ri->request_method, "POST") || !strcmp(ri->request_method, "PUT"))
+      && cl != NULL) {
     buf_len = atoi(cl);
     buf = malloc(buf_len);
     mg_read(conn, buf, buf_len);

+ 4 - 0
test/test.pl

@@ -425,6 +425,10 @@ sub do_embedded_test {
   o("POST /test_get_var HTTP/1.0\nContent-Length: 64007\n\n".
     "my_var=$my_var", 'Value size: \[64000\]', 'mg_get_var 10', 0);
 
+  # Other methods should also work
+  o("PUT /test_get_var HTTP/1.0\nContent-Length: 10\n\n".
+    "my_var=foo", 'Value: \[foo\]', 'mg_get_var 11', 0);
+
   o("POST /test_get_request_info?xx=yy HTTP/1.0\nFoo: bar\n".
     "Content-Length: 3\n\na=b",
     'Method: \[POST\].URI: \[/test_get_request_info\].'.