mirror of
https://github.com/gorhill/uBlock.git
synced 2024-09-15 15:32:28 +02:00
this fixes #301: many silly bugs broke local mirroring
This commit is contained in:
parent
c2b6ad1fad
commit
f6ef39627d
@ -1,3 +1,6 @@
|
|||||||
|
# As of now 2014-10-11:
|
||||||
|
# If no regex capture: use whole URL
|
||||||
|
# If regex capture: use capture index 1
|
||||||
ajax.googleapis.com
|
ajax.googleapis.com
|
||||||
^ajax\.googleapis\.com\/ajax\/libs\/
|
^ajax\.googleapis\.com\/ajax\/libs\/
|
||||||
fonts.googleapis.com
|
fonts.googleapis.com
|
||||||
|
@ -53,7 +53,7 @@ var nullFunc = function() {};
|
|||||||
// control over what significant part(s) of a URL is to be used as key.
|
// control over what significant part(s) of a URL is to be used as key.
|
||||||
var mirrorCandidates = Object.create(null);
|
var mirrorCandidates = Object.create(null);
|
||||||
|
|
||||||
var magicId = 'nmewkrsniruu';
|
var magicId = 'yawqboypxuhs';
|
||||||
var metadataPersistTimer = null;
|
var metadataPersistTimer = null;
|
||||||
var bytesInUseMercy = 1 * 1024 * 1024;
|
var bytesInUseMercy = 1 * 1024 * 1024;
|
||||||
|
|
||||||
@ -190,7 +190,9 @@ var toUrlKey = function(url) {
|
|||||||
if ( matches === null ) {
|
if ( matches === null ) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
return matches.length === 1 ? matches[0] : matches[1];
|
// https://github.com/gorhill/uBlock/issues/301
|
||||||
|
// Use whole URL as key when no regex capture
|
||||||
|
return matches.length === 1 ? url : matches[1];
|
||||||
}
|
}
|
||||||
return '';
|
return '';
|
||||||
};
|
};
|
||||||
@ -360,9 +362,10 @@ var cacheAsset = function(url) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var mimeType = extractMimeType(this.getResponseHeader('Content-Type'));
|
var mimeType = extractMimeType(this.getResponseHeader('Content-Type'));
|
||||||
|
var uint8Buffer = new Uint8Array(this.response);
|
||||||
var yamd5 = new YaMD5();
|
var yamd5 = new YaMD5();
|
||||||
yamd5.appendAsciiStr(mimeType);
|
yamd5.appendAsciiStr(mimeType);
|
||||||
yamd5.appendAsciiStr(this.response);
|
yamd5.appendByteArray(uint8Buffer);
|
||||||
var hash = yamd5.end();
|
var hash = yamd5.end();
|
||||||
addMetadata(urlKey, hash);
|
addMetadata(urlKey, hash);
|
||||||
if ( contentExists(hash) ) {
|
if ( contentExists(hash) ) {
|
||||||
@ -374,7 +377,7 @@ var cacheAsset = function(url) {
|
|||||||
// as the result is somewhat more compact I believe
|
// as the result is somewhat more compact I believe
|
||||||
var dataUrl = null;
|
var dataUrl = null;
|
||||||
try {
|
try {
|
||||||
dataUrl = 'data:' + mimeType + ';base64,' + btoaSafe(new Uint8Array(this.response));
|
dataUrl = 'data:' + mimeType + ';base64,' + btoaSafe(uint8Buffer);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
//console.debug('"%s":', url, e);
|
//console.debug('"%s":', url, e);
|
||||||
}
|
}
|
||||||
@ -486,10 +489,9 @@ var load = function() {
|
|||||||
|
|
||||||
var onMetadataReady = function(bin) {
|
var onMetadataReady = function(bin) {
|
||||||
//console.debug('mirrors.load(): loaded metadata');
|
//console.debug('mirrors.load(): loaded metadata');
|
||||||
metadata = bin.mirrors_metadata;
|
var u2hmap = metadata.urlKeyToHashMap = bin.mirrors_metadata.urlKeyToHashMap;
|
||||||
var mustReset = metadata.magicId !== magicId;
|
var mustReset = bin.mirrors_metadata.magicId !== magicId;
|
||||||
var toRemove = [];
|
var toRemove = [];
|
||||||
var u2hmap = metadata.urlKeyToHashMap;
|
|
||||||
var hash;
|
var hash;
|
||||||
for ( var urlKey in u2hmap ) {
|
for ( var urlKey in u2hmap ) {
|
||||||
if ( u2hmap.hasOwnProperty(urlKey) === false ) {
|
if ( u2hmap.hasOwnProperty(urlKey) === false ) {
|
||||||
|
21
lib/yamd5.js
21
lib/yamd5.js
@ -269,6 +269,27 @@ THE SOFTWARE.
|
|||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
MD5.prototype.appendByteArray = function(input) {
|
||||||
|
var buf8 = this._buffer8;
|
||||||
|
var buf32 = this._buffer32;
|
||||||
|
var bufLen = this._bufferLength;
|
||||||
|
var i, j = 0;
|
||||||
|
for (;;) {
|
||||||
|
i = Math.min(input.length-j, 64-bufLen);
|
||||||
|
while ( i-- ) {
|
||||||
|
buf8[bufLen++] = input[j++];
|
||||||
|
}
|
||||||
|
if ( bufLen < 64 ) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
this._dataLength += 64;
|
||||||
|
md5cycle(this._state, buf32);
|
||||||
|
bufLen = 0;
|
||||||
|
}
|
||||||
|
this._bufferLength = bufLen;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
MD5.prototype.start = function() {
|
MD5.prototype.start = function() {
|
||||||
this._dataLength = 0;
|
this._dataLength = 0;
|
||||||
this._bufferLength = 0;
|
this._bufferLength = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user