diff --git a/lib/article.js b/lib/article.js index 460b056..be6e660 100644 --- a/lib/article.js +++ b/lib/article.js @@ -141,15 +141,44 @@ MultiEncoder.maxSize = function(size, line_size) { */ }; +// something that isn't as slow as crypto.pseudoRandomBytes +var randString = function() { + return String.fromCharCode( + 65 + Math.random()*26, + 97 + Math.random()*26, + 65 + Math.random()*26, + 97 + Math.random()*26, + 65 + Math.random()*26, + 97 + Math.random()*26, + 65 + Math.random()*26, + 97 + Math.random()*26, + 65 + Math.random()*26, + 97 + Math.random()*26, + 65 + Math.random()*26, + 97 + Math.random()*26, + 65 + Math.random()*26, + 97 + Math.random()*26, + 65 + Math.random()*26, + 97 + Math.random()*26, + 65 + Math.random()*26, + 97 + Math.random()*26, + 65 + Math.random()*26, + 97 + Math.random()*26, + 65 + Math.random()*26, + 97 + Math.random()*26, + 65 + Math.random()*26, + 97 + Math.random()*26 + ); +}; -var crypto = require('crypto'); function Post(headers, pool, date) { this.headers = {}; this.postPos = 0; this.pool = pool; this.genTime = date ? date.getTime() : Date.now(); - this.messageId = crypto.pseudoRandomBytes(16).toString('hex') + '-' + this.genTime + '@nyuu'; + // TODO: consider writing Message-ID as the first header - this simplifies some logic + this.messageId = randString() + '-' + this.genTime + '@nyuu'; if(pool) { this.buf = pool.get(); while(1) { @@ -204,9 +233,9 @@ Post.prototype = { bufs: null, randomizeMessageID: function() { - var rnd = crypto.pseudoRandomBytes(16).toString('hex'); + var rnd = randString(); this.data.write(rnd, this.mIdPos, ENCODING); - return this.messageId = rnd + this.messageId.substr(32); + return this.messageId = rnd + this.messageId.substr(24); }, release: function() {