Mercurial > urweb
diff lib/js/urweb.js @ 1691:ea292bf9431f
Avoid URL size limit in RPCs with large arguments
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Sat, 03 Mar 2012 16:41:20 -0500 |
parents | 225b87d4a7df |
children | 06791667937e |
line wrap: on
line diff
--- a/lib/js/urweb.js Sat Mar 03 16:20:54 2012 -0500 +++ b/lib/js/urweb.js Sat Mar 03 16:41:20 2012 -0500 @@ -1137,10 +1137,17 @@ } } -function requestUri(xhr, uri, needsSig) { +function requestUri(xhr, uri, needsSig, isRpc) { if (unloading) return; + var extraData = null; + + if (isRpc && uri.length > 2000) { + extraData = uri.substring(2000); + uri = uri.substring(0, 2000); + } + xhr.open("POST", uri, true); xhr.setRequestHeader("Content-type", "text/plain"); try { @@ -1161,7 +1168,7 @@ } inFlight = cons(xhr, inFlight); - xhr.send(null); + xhr.send(extraData); } function xhrFinished(xhr) { @@ -1211,7 +1218,7 @@ } }; - requestUri(xhr, uri, needsSig); + requestUri(xhr, uri, needsSig, true); } function path_join(s1, s2) { @@ -1260,7 +1267,7 @@ var connect = function () { xhr.onreadystatechange = orsc; tid = window.setTimeout(onTimeout, timeout * 500); - requestUri(xhr, uri, false); + requestUri(xhr, uri, false, false); } orsc = function() {