diff -r 539c9bee5372 -r 7623f9af9272 src/js/libs/tracemanager.js --- a/src/js/libs/tracemanager.js Fri Sep 25 14:45:38 2015 +0200 +++ b/src/js/libs/tracemanager.js Fri Oct 02 11:27:17 2015 +0200 @@ -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; })