diff -r 20e00017dd60 -r 10974bff4dae web/res/js/tracemanager.js --- a/web/res/js/tracemanager.js Fri Dec 11 18:11:13 2015 +0100 +++ b/web/res/js/tracemanager.js Tue Dec 29 13:25:14 2015 +0100 @@ -21,12 +21,19 @@ window.tracemanager = (function($) { // If there are more than MAX_FAILURE_COUNT synchronisation // failures, then disable synchronisation - MAX_FAILURE_COUNT = 20; + var MAX_FAILURE_COUNT = 20; // If there are more than MAX_BUFFER_SIZE obsels in the buffer, // then "compress" them as a single "ktbsFullBuffer" - MAX_BUFFER_SIZE = 500; + var MAX_BUFFER_SIZE = 500; + var _replacement = { + ';': '"', + '"': ';', + '#': '%23', + '&': '%26', + '?': '%3F' + }; var BufferedService_prototype = { /* * Buffered service for traces @@ -60,7 +67,7 @@ // Swap " (very frequent, which will be // serialized into %22) and ; (rather rare), this // saves some bytes - data = data.replace(/[;"#]/g, function(s){ return s == ';' ? '"' : ( s == '"' ? ';' : '%23'); }); + data = data.replace(/[;"#?&]/g, function(s){ return _replacement[s]; }); // FIXME: check data length (< 2K is safe) var request=$('').error( function() { this.failureCount += 1; }) .load( function() { this.failureCount = 0; })