diff --git a/app/index.html b/app/index.html
index 3ecffbef..6f610aca 100644
--- a/app/index.html
+++ b/app/index.html
@@ -31,7 +31,7 @@
ga('send', 'pageview');
-
+
@@ -48,7 +48,7 @@
-
+
diff --git a/app/js/lib/aes_worker.js b/app/js/lib/aes_worker.js
index fe1ff83b..974b9ab6 100644
--- a/app/js/lib/aes_worker.js
+++ b/app/js/lib/aes_worker.js
@@ -5,7 +5,12 @@
* https://github.com/zhukov/webogram/blob/master/LICENSE
*/
-importScripts('mtproto.js', '../../vendor/jsbn/jsbn_combined.js', '../../vendor/cryptoJS/crypto.js');
+importScripts(
+ '../../vendor/console-polyfill/console-polyfill.js?1',
+ 'mtproto.js',
+ '../../vendor/jsbn/jsbn_combined.js',
+ '../../vendor/cryptoJS/crypto.js'
+);
onmessage = function (e) {
// console.log('AES worker in', e.data);
diff --git a/app/js/lib/mtproto.js b/app/js/lib/mtproto.js
index 9a2d56d2..846a0c07 100644
--- a/app/js/lib/mtproto.js
+++ b/app/js/lib/mtproto.js
@@ -1113,7 +1113,7 @@ factory('MtpAuthorizer', function (MtpDcConfigurator, MtpRsaKeysManager, MtpSecu
console.log('PQ factorization start');
if (!!window.Worker) {
- var worker = new Worker('js/lib/pq_worker.js');
+ var worker = new Worker('js/lib/pq_worker.js?1');
worker.onmessage = function (e) {
auth.p = e.data[0];
@@ -1407,7 +1407,7 @@ factory('MtpAesService', function ($q) {
};
}
- var worker = new Worker('js/lib/aes_worker.js'),
+ var worker = new Worker('js/lib/aes_worker.js?1'),
taskID = 0,
awaiting = {};
@@ -1459,7 +1459,7 @@ factory('MtpSha1Service', function ($q) {
};
}
- var worker = new Worker('js/lib/sha1_worker.js'),
+ var worker = new Worker('js/lib/sha1_worker.js?1'),
taskID = 0,
awaiting = {};
@@ -1511,13 +1511,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato
// })();
// }
- this.sessionID = new Array(8);
- MtpSecureRandom.nextBytes(this.sessionID);
-
- if (false) {
- this.sessionID[0] = 0xAB;
- this.sessionID[1] = 0xCD;
- }
+ this.updateSession();
this.seqNo = 0;
this.currentRequests = 0;
@@ -1537,6 +1531,15 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato
this.checkLongPoll();
};
+ MtpNetworker.prototype.updateSession = function () {
+ this.sessionID = new Array(8);
+ MtpSecureRandom.nextBytes(this.sessionID);
+
+ if (false) {
+ this.sessionID[0] = 0xAB;
+ this.sessionID[1] = 0xCD;
+ }
+ }
MtpNetworker.prototype.generateSeqNo = function (notContentRelated) {
var seqNo = this.seqNo * 2;
@@ -2046,6 +2049,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato
if (message.error_code == 16 || message.error_code == 17) {
MtpMessageIdGenerator.applyServerTime((new BigInteger(messageID, 10)).shiftRight(32).toString(10));
+ this.updateSession();
this.pushResend(message.bad_msg_id);
this.ackMessage(messageID);
}
@@ -2229,7 +2233,7 @@ factory('MtpApiManager', function (AppConfigManager, MtpAuthorizer, MtpNetworker
},
function (error) {
console.log('error', error.code, error.type, baseDcID, dcID);
- if (error.code == 401 && error.type == 'AUTH_KEY_UNREGISTERED' && baseDcID && dcID != baseDcID) {
+ if (error.code == 401 && baseDcID && dcID != baseDcID) {
if (cachedExportPromise[dcID] === undefined) {
var exportDeferred = $q.defer();
diff --git a/app/js/lib/pq_worker.js b/app/js/lib/pq_worker.js
index d076b49f..8d3c2f42 100644
--- a/app/js/lib/pq_worker.js
+++ b/app/js/lib/pq_worker.js
@@ -5,7 +5,11 @@
* https://github.com/zhukov/webogram/blob/master/LICENSE
*/
-importScripts('mtproto.js', '../../vendor/jsbn/jsbn_combined.js');
+importScripts(
+ '../../vendor/console-polyfill/console-polyfill.js?1',
+ 'mtproto.js',
+ '../../vendor/jsbn/jsbn_combined.js'
+);
onmessage = function (e) {
postMessage(pqPrimeFactorization(e.data));
diff --git a/app/js/lib/sha1_worker.js b/app/js/lib/sha1_worker.js
index 44a35fb5..809dd0cb 100644
--- a/app/js/lib/sha1_worker.js
+++ b/app/js/lib/sha1_worker.js
@@ -5,7 +5,11 @@
* https://github.com/zhukov/webogram/blob/master/LICENSE
*/
-importScripts('mtproto.js', '../../vendor/cryptoJS/crypto.js');
+importScripts(
+ '../../vendor/console-polyfill/console-polyfill.js?1',
+ 'mtproto.js',
+ '../../vendor/cryptoJS/crypto.js'
+);
onmessage = function (e) {
var taskID = e.data.taskID;
diff --git a/app/vendor/console-polyfill/console-polyfill.js b/app/vendor/console-polyfill/console-polyfill.js
index b16dbfaa..1ad5859f 100644
--- a/app/vendor/console-polyfill/console-polyfill.js
+++ b/app/vendor/console-polyfill/console-polyfill.js
@@ -12,4 +12,6 @@
'time,timeEnd,trace,warn').split(',');
while (prop = properties.pop()) con[prop] = con[prop] || empty;
while (method = methods.pop()) con[method] = con[method] || dummy;
-})(window.console = window.console || {});
+})(this.console = this.console || {});
+
+// For Workers compatibility `window` object is replaced with `this` keyword
\ No newline at end of file