From cfa495696d87fb15d860a0d06881c11557785647 Mon Sep 17 00:00:00 2001 From: Vladimir Shabanov Date: Wed, 16 May 2012 22:46:35 +0400 Subject: Allow RPC and run it synchronously in onunload event. --- lib/js/urweb.js | 7 +------ src/c/urweb.c | 4 ++-- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/lib/js/urweb.js b/lib/js/urweb.js index 85d10d4a..40d080b8 100644 --- a/lib/js/urweb.js +++ b/lib/js/urweb.js @@ -1184,17 +1184,12 @@ var sig = null; var unloading = false, inFlight = null; function unload() { - unloading = true; - for (; inFlight; inFlight = inFlight.next) { inFlight.data.abort(); } } function requestUri(xhr, uri, needsSig, isRpc) { - if (unloading) - return; - var extraData = null; if (isRpc && uri.length > 2000) { @@ -1202,7 +1197,7 @@ function requestUri(xhr, uri, needsSig, isRpc) { uri = uri.substring(0, 2000); } - xhr.open("POST", uri, true); + xhr.open("POST", uri, !unloading); xhr.setRequestHeader("Content-type", "text/plain"); try { xhr.setRequestHeader("Content-length", "0"); diff --git a/src/c/urweb.c b/src/c/urweb.c index 2e16743c..802a1620 100644 --- a/src/c/urweb.c +++ b/src/c/urweb.c @@ -1336,8 +1336,8 @@ uw_Basis_string uw_Basis_maybe_onunload(uw_context ctx, uw_Basis_string s) { if (ctx->script_header[0] == 0) return ""; else { - char *r = uw_malloc(ctx, 22 + strlen(s)); - sprintf(r, " onunload='unload();%s'", s); + char *r = uw_malloc(ctx, 37 + strlen(s)); + sprintf(r, " onunload='unloading=true;%s;unload()'", s); return r; } } -- cgit v1.2.3