Compare commits

..

4 Commits
3.1.0 ... 3.1.1

Author SHA1 Message Date
Daniel García Aubert
f5c349e105 Release 3.1.1 2017-03-23 11:02:04 +01:00
Raul Ochoa
e8d2e28dba Merge pull request #642 from CartoDB/resources-urls-crc-hash
Use crc32 instead of md5 for computing subdomain candidate
2017-03-23 01:21:50 +01:00
Raul Ochoa
e0c2423ace Remove unused import 2017-03-23 01:14:56 +01:00
Raul Ochoa
5e429ba71f Use crc32 instead of md5 for computing subdomain candidate 2017-03-23 01:03:45 +01:00
3 changed files with 34 additions and 6 deletions

View File

@@ -1,5 +1,13 @@
# Changelog
## 3.1.1
Released 2017-03-23
Bug fixes:
- Use crc32 instead of md5 for computing subdomain candidate #642
## 3.1.0
Released 2017-03-22

View File

@@ -1,5 +1,3 @@
var crypto = require('crypto');
var dot = require('dot');
dot.templateSettings.strip = false;
@@ -91,9 +89,31 @@ function getCdnDomain(serverMetadata, resource) {
return null;
}
// ref https://jsperf.com/js-crc32
function crcTable() {
var c;
var table = [];
for (var n = 0; n < 256; n++) {
c = n;
for (var k = 0; k < 8; k++) {
c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
}
table[n] = c;
}
return table;
}
var CRC_TABLE = crcTable();
function crc32(str) {
var crc = 0 ^ (-1);
for (var i = 0; i < str.length; i++) {
crc = (crc >>> 8) ^ CRC_TABLE[(crc ^ str.charCodeAt(i)) & 0xFF];
}
return (crc ^ (-1)) >>> 0;
}
function subdomain(subdomains, resource) {
var resourceHash = crypto.createHash('md5').update(resource, 'binary').digest('hex');
var index = parseInt(resourceHash, 16) % subdomains.length;
var index = crc32(resource) % subdomains.length;
return subdomains[index];
}
module.exports.subdomain = subdomain;
module.exports.subdomain = subdomain;

View File

@@ -1,7 +1,7 @@
{
"private": true,
"name": "windshaft-cartodb",
"version": "3.1.0",
"version": "3.1.1",
"description": "A map tile server for CartoDB",
"keywords": [
"cartodb"