Socket
Socket
Sign inDemoInstall

http-deceiver

Package Overview
Dependencies
0
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.2.0 to 1.2.1

17

lib/deceiver.js

@@ -154,3 +154,13 @@ var assert = require('assert');

var self = this;
var oldExecute = parser.execute;
var oldFinish = parser.finish;
parser.execute = function execute(buffer, start, len) {
// Parser reuse
if (this.socket !== self.socket) {
this.execute = oldExecute;
this.finish = oldFinish;
return this.execute(buffer, start, len);
}
if (start !== undefined)

@@ -162,2 +172,9 @@ buffer = buffer.slice(start, start + len);

parser.finish = function finish() {
// Parser reuse
if (this.socket !== self.socket) {
this.execute = oldExecute;
this.finish = oldFinish;
return this.finish();
}
self.emitMessageComplete();

@@ -164,0 +181,0 @@ };

2

package.json
{
"name": "http-deceiver",
"version": "1.2.0",
"version": "1.2.1",
"description": "Deceive HTTP parser",

@@ -5,0 +5,0 @@ "main": "lib/deceiver.js",

@@ -75,2 +75,78 @@ var assert = require('assert');

});
it('should override .execute and .finish', function(done) {
var server = http.createServer();
server.emit('connection', socket);
server.on('request', function(req, res) {
assert.equal(req.method, 'PUT');
assert.equal(req.url, '/hello');
assert.deepEqual(req.headers, { a: 'b' });
var actual = '';
req.on('data', function(chunk) {
actual += chunk;
});
req.once('end', function() {
assert.equal(actual, 'hello world');
done();
});
});
deceiver.emitRequest({
method: 'PUT',
path: '/hello',
headers: {
a: 'b'
}
});
pair.write('hello');
pair.end(' world');
});
it('should work with reusing parser', function(done) {
var server = http.createServer();
server.emit('connection', socket);
function secondRequest() {
pair = streamPair.create();
handle = thing.create(pair.other);
socket = new net.Socket({ handle: handle });
// For v0.8
socket.readable = true;
socket.writable = true;
server.emit('connection', socket);
pair.end('PUT /second HTTP/1.1\r\nContent-Length:11\r\n\r\nhello world');
}
server.on('request', function(req, res) {
var actual = '';
req.on('data', function(chunk) {
actual += chunk;
});
req.once('end', function() {
assert.equal(actual, 'hello world');
if (req.url === '/first')
secondRequest();
else
done();
});
});
deceiver.emitRequest({
method: 'PUT',
path: '/first',
headers: {
a: 'b'
}
});
pair.write('hello');
pair.end(' world');
});
});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc