file: fix processing POST data for deferred requests
authorFelix Fietkau <nbd@openwrt.org>
Mon, 7 Sep 2015 19:18:26 +0000 (21:18 +0200)
committerFelix Fietkau <nbd@openwrt.org>
Mon, 7 Sep 2015 19:18:29 +0000 (21:18 +0200)
Fixes https://dev.openwrt.org/ticket/20458

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
file.c

diff --git a/file.c b/file.c
index 480c40b2f14fc2290cda5169fe81bdf2112dacc9..607282518a5b569138a0058d809da40878e496a0 100644 (file)
--- a/file.c
+++ b/file.c
@@ -696,8 +696,11 @@ static void uh_complete_request(struct client *cl)
                dr = list_first_entry(&pending_requests, struct deferred_request, list);
                list_del(&dr->list);
 
+               cl = dr->cl;
                dr->called = true;
-               uh_invoke_script(dr->cl, dr->d, dr->path ? &dr->pi : NULL);
+               cl->dispatch.data_blocked = false;
+               uh_invoke_script(cl, dr->d, dr->path ? &dr->pi : NULL);
+               client_poll_post_data(cl);
        }
 }
 
@@ -756,6 +759,7 @@ uh_defer_script(struct client *cl, struct dispatch_handler *d, struct path_info
        }
 
        cl->dispatch.req_data = dr;
+       cl->dispatch.data_blocked = true;
        dr->cl = cl;
        dr->d = d;
        list_add(&dr->list, &pending_requests);