spdy-transport
Advanced tools
Comparing version 2.1.1 to 3.0.0
@@ -5,3 +5,2 @@ 'use strict' | ||
var transport = require('../spdy-transport') | ||
var Buffer = require('safe-buffer').Buffer | ||
@@ -181,7 +180,11 @@ var debug = { | ||
this.socket.once('close', function onclose () { | ||
var err = new Error('socket hang up') | ||
err.code = 'ECONNRESET' | ||
this.socket.once('close', function onclose (hadError) { | ||
var err | ||
if (hadError) { | ||
err = new Error('socket hang up') | ||
err.code = 'ECONNRESET' | ||
} | ||
self.destroyStreams(err) | ||
self.emit('close', err) | ||
self.emit('close') | ||
@@ -454,4 +457,6 @@ if (state.pair) { | ||
state.stream.lastId.received = Math.max(state.stream.lastId.received, | ||
stream.id) | ||
state.stream.lastId.received = Math.max( | ||
state.stream.lastId.received, | ||
stream.id | ||
) | ||
@@ -759,4 +764,6 @@ // TODO(indutny) handle stream limit | ||
stream.abort() | ||
stream.emit('error', err) | ||
stream.destroy() | ||
if (err) { | ||
stream.emit('error', err) | ||
} | ||
}) | ||
@@ -814,3 +821,3 @@ } | ||
err = new Error( | ||
'Can\'t send PUSH_PROMISE, other side won\'t accept it') | ||
'Can\'t send PUSH_PROMISE, other side won\'t accept it') | ||
process.nextTick(function () { | ||
@@ -817,0 +824,0 @@ if (callback) { callback(err) } else { |
@@ -136,6 +136,6 @@ 'use strict' | ||
debug('add node=%d parent=%d weight=%d exclusive=%d', | ||
options.id, | ||
options.parent === null ? -1 : options.parent, | ||
options.weight || this.defaultWeight, | ||
options.exclusive ? 1 : 0) | ||
options.id, | ||
options.parent === null ? -1 : options.parent, | ||
options.weight || this.defaultWeight, | ||
options.exclusive ? 1 : 0) | ||
@@ -186,3 +186,5 @@ var children | ||
delete this.map[node.id] | ||
var index = utils.binarySearch(this.list, node, compareChildren) | ||
this.list.splice(index, 1) | ||
this.count-- | ||
} |
@@ -124,3 +124,9 @@ 'use strict' | ||
this.count-- | ||
res = this.push(item.chunks[j]) | ||
// TODO: handle stream backoff properly | ||
try { | ||
res = this.push(item.chunks[j]) | ||
} catch (err) { | ||
this.emit('error', err) | ||
return false | ||
} | ||
} | ||
@@ -165,3 +171,9 @@ debug('after tick sync pending=%d', this.count) | ||
this.count-- | ||
res = this.push(item.chunks[i]) | ||
// TODO: handle stream backoff properly | ||
try { | ||
res = this.push(item.chunks[i]) | ||
} catch (err) { | ||
this.emit('error', err) | ||
return false | ||
} | ||
} | ||
@@ -187,3 +199,3 @@ debug('after tick pending=%d', this.count) | ||
} | ||
assert.equal(this.count, 0) | ||
assert.strictEqual(this.count, 0) | ||
} | ||
@@ -190,0 +202,0 @@ |
@@ -6,4 +6,2 @@ 'use strict' | ||
var Buffer = require('safe-buffer').Buffer | ||
exports.PREFACE_SIZE = 24 | ||
@@ -19,3 +17,3 @@ exports.PREFACE = 'PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n' | ||
exports.HEADER_TABLE_SIZE = 4096 | ||
exports.DEFAULT_MAX_HEADER_LIST_SIZE = 80 * 1024 // as in http_parser | ||
exports.DEFAULT_MAX_HEADER_LIST_SIZE = 80 * 1024 // as in http_parser | ||
exports.MAX_INITIAL_WINDOW_SIZE = 2147483647 | ||
@@ -44,3 +42,3 @@ | ||
exports.flags = { | ||
ACK: 0x01, // SETTINGS-only | ||
ACK: 0x01, // SETTINGS-only | ||
END_STREAM: 0x01, | ||
@@ -47,0 +45,0 @@ END_HEADERS: 0x04, |
@@ -95,4 +95,4 @@ 'use strict' | ||
Framer.prototype._continuationFrame = function _continuationFrame (frame, | ||
body, | ||
callback) { | ||
body, | ||
callback) { | ||
var frames = this._split(frame) | ||
@@ -138,4 +138,4 @@ | ||
Framer.prototype._compressHeaders = function _compressHeaders (headers, | ||
pairs, | ||
callback) { | ||
pairs, | ||
callback) { | ||
Object.keys(headers || {}).forEach(function (name) { | ||
@@ -348,2 +348,5 @@ var lowName = name.toLowerCase() | ||
sendPromise(promiseChunks) | ||
if (frame.response === false) { | ||
return callback(null) | ||
} | ||
compress(frame.response, pairs.response, function (responseChunks) { | ||
@@ -505,3 +508,3 @@ sendResponse(responseChunks, callback) | ||
Framer.prototype.windowUpdateFrame = function windowUpdateFrame (frame, | ||
callback) { | ||
callback) { | ||
this._frame({ | ||
@@ -508,0 +511,0 @@ id: frame.id, |
@@ -79,3 +79,3 @@ 'use strict' | ||
assert.equal(header.flags & constants.flags.PADDED, 0) | ||
assert.strictEqual(header.flags & constants.flags.PADDED, 0) | ||
@@ -97,3 +97,3 @@ if (this.window) { this.window.recv.update(-buffer.size) } | ||
return callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'Invalid preface')) | ||
'Invalid preface')) | ||
} | ||
@@ -116,3 +116,3 @@ | ||
return callback(this.error(constants.error.FRAME_SIZE_ERROR, | ||
'Frame length OOB')) | ||
'Frame length OOB')) | ||
} | ||
@@ -168,3 +168,3 @@ | ||
callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'Received unknown frame in the middle of a header block')) | ||
'Received unknown frame in the middle of a header block')) | ||
return | ||
@@ -182,3 +182,3 @@ } | ||
return callback(this.error(constants.error.FRAME_SIZE_ERROR, | ||
'Not enough space for padding')) | ||
'Not enough space for padding')) | ||
} | ||
@@ -189,3 +189,3 @@ | ||
return callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'Invalid padding size')) | ||
'Invalid padding size')) | ||
} | ||
@@ -203,3 +203,3 @@ | ||
return callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'Received DATA frame with stream=0')) | ||
'Received DATA frame with stream=0')) | ||
} | ||
@@ -227,8 +227,8 @@ | ||
Parser.prototype.initHeaderBlock = function initHeaderBlock (header, | ||
frame, | ||
block, | ||
callback) { | ||
frame, | ||
block, | ||
callback) { | ||
if (this._lastHeaderBlock) { | ||
return callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'Duplicate Stream ID')) | ||
'Duplicate Stream ID')) | ||
} | ||
@@ -247,4 +247,4 @@ | ||
Parser.prototype.queueHeaderBlock = function queueHeaderBlock (header, | ||
block, | ||
callback) { | ||
block, | ||
callback) { | ||
var self = this | ||
@@ -254,3 +254,3 @@ var item = this._lastHeaderBlock | ||
return callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'No matching stream for continuation')) | ||
'No matching stream for continuation')) | ||
} | ||
@@ -269,3 +269,3 @@ | ||
return callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'Compressed header list is too large')) | ||
'Compressed header list is too large')) | ||
} | ||
@@ -279,3 +279,3 @@ | ||
return callback(self.error(constants.error.COMPRESSION_ERROR, | ||
err.message)) | ||
err.message)) | ||
} | ||
@@ -291,3 +291,3 @@ | ||
return callback(self.error(constants.error.PROTOCOL_ERROR, | ||
'Header list is too large')) | ||
'Header list is too large')) | ||
} | ||
@@ -297,3 +297,3 @@ | ||
return callback(self.error(constants.error.PROTOCOL_ERROR, | ||
'Header name must be lowercase')) | ||
'Header name must be lowercase')) | ||
} | ||
@@ -312,4 +312,4 @@ | ||
Parser.prototype.onHeadersFrame = function onHeadersFrame (header, | ||
body, | ||
callback) { | ||
body, | ||
callback) { | ||
var self = this | ||
@@ -319,3 +319,3 @@ | ||
return callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'Invalid stream id for HEADERS')) | ||
'Invalid stream id for HEADERS')) | ||
} | ||
@@ -329,3 +329,3 @@ | ||
return callback(self.error(constants.error.FRAME_SIZE_ERROR, | ||
'Not enough data for HEADERS')) | ||
'Not enough data for HEADERS')) | ||
} | ||
@@ -347,3 +347,3 @@ | ||
return callback(self.error(constants.error.PROTOCOL_ERROR, | ||
'Stream can\'t dependend on itself')) | ||
'Stream can\'t dependend on itself')) | ||
} | ||
@@ -370,4 +370,4 @@ | ||
Parser.prototype.onContinuationFrame = function onContinuationFrame (header, | ||
body, | ||
callback) { | ||
body, | ||
callback) { | ||
this.queueHeaderBlock(header, body, callback) | ||
@@ -379,3 +379,3 @@ } | ||
return callback(this.error(constants.error.FRAME_SIZE_ERROR, | ||
'RST_STREAM length not 4')) | ||
'RST_STREAM length not 4')) | ||
} | ||
@@ -385,3 +385,3 @@ | ||
return callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'Invalid stream id for RST_STREAM')) | ||
'Invalid stream id for RST_STREAM')) | ||
} | ||
@@ -401,3 +401,3 @@ | ||
return this.error(constants.error.PROTOCOL_ERROR, | ||
'SETTINGS_ENABLE_PUSH must be 0 or 1') | ||
'SETTINGS_ENABLE_PUSH must be 0 or 1') | ||
} | ||
@@ -409,3 +409,3 @@ | ||
return this.error(constants.error.FLOW_CONTROL_ERROR, | ||
'SETTINGS_INITIAL_WINDOW_SIZE is OOB') | ||
'SETTINGS_INITIAL_WINDOW_SIZE is OOB') | ||
} | ||
@@ -417,3 +417,3 @@ | ||
return this.error(constants.error.PROTOCOL_ERROR, | ||
'SETTINGS_MAX_FRAME_SIZE is OOB') | ||
'SETTINGS_MAX_FRAME_SIZE is OOB') | ||
} | ||
@@ -425,7 +425,7 @@ | ||
Parser.prototype.onSettingsFrame = function onSettingsFrame (header, | ||
body, | ||
callback) { | ||
body, | ||
callback) { | ||
if (header.id !== 0) { | ||
return callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'Invalid stream id for SETTINGS')) | ||
'Invalid stream id for SETTINGS')) | ||
} | ||
@@ -436,3 +436,3 @@ | ||
return callback(this.error(constants.error.FRAME_SIZE_ERROR, | ||
'SETTINGS with ACK and non-zero length')) | ||
'SETTINGS with ACK and non-zero length')) | ||
} | ||
@@ -446,3 +446,3 @@ | ||
return callback(this.error(constants.error.FRAME_SIZE_ERROR, | ||
'SETTINGS length not multiple of 6')) | ||
'SETTINGS length not multiple of 6')) | ||
} | ||
@@ -473,7 +473,7 @@ | ||
Parser.prototype.onPushPromiseFrame = function onPushPromiseFrame (header, | ||
body, | ||
callback) { | ||
body, | ||
callback) { | ||
if (header.id === 0) { | ||
return callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'Invalid stream id for PUSH_PROMISE')) | ||
'Invalid stream id for PUSH_PROMISE')) | ||
} | ||
@@ -489,3 +489,3 @@ | ||
return callback(self.error(constants.error.FRAME_SIZE_ERROR, | ||
'PUSH_PROMISE length less than 4')) | ||
'PUSH_PROMISE length less than 4')) | ||
} | ||
@@ -509,3 +509,3 @@ | ||
return callback(this.error(constants.error.FRAME_SIZE_ERROR, | ||
'PING length != 8')) | ||
'PING length != 8')) | ||
} | ||
@@ -515,3 +515,3 @@ | ||
return callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'Invalid stream id for PING')) | ||
'Invalid stream id for PING')) | ||
} | ||
@@ -524,7 +524,7 @@ | ||
Parser.prototype.onGoawayFrame = function onGoawayFrame (header, | ||
body, | ||
callback) { | ||
body, | ||
callback) { | ||
if (!body.has(8)) { | ||
return callback(this.error(constants.error.FRAME_SIZE_ERROR, | ||
'GOAWAY length < 8')) | ||
'GOAWAY length < 8')) | ||
} | ||
@@ -534,3 +534,3 @@ | ||
return callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'Invalid stream id for GOAWAY')) | ||
'Invalid stream id for GOAWAY')) | ||
} | ||
@@ -550,7 +550,7 @@ | ||
Parser.prototype.onPriorityFrame = function onPriorityFrame (header, | ||
body, | ||
callback) { | ||
body, | ||
callback) { | ||
if (body.size !== 5) { | ||
return callback(this.error(constants.error.FRAME_SIZE_ERROR, | ||
'PRIORITY length != 5')) | ||
'PRIORITY length != 5')) | ||
} | ||
@@ -560,3 +560,3 @@ | ||
return callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'Invalid stream id for PRIORITY')) | ||
'Invalid stream id for PRIORITY')) | ||
} | ||
@@ -571,3 +571,3 @@ | ||
return callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'Stream can\'t dependend on itself')) | ||
'Stream can\'t dependend on itself')) | ||
} | ||
@@ -587,7 +587,7 @@ | ||
Parser.prototype.onWindowUpdateFrame = function onWindowUpdateFrame (header, | ||
body, | ||
callback) { | ||
body, | ||
callback) { | ||
if (body.size !== 4) { | ||
return callback(this.error(constants.error.FRAME_SIZE_ERROR, | ||
'WINDOW_UPDATE length != 4')) | ||
'WINDOW_UPDATE length != 4')) | ||
} | ||
@@ -598,3 +598,3 @@ | ||
return callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'WINDOW_UPDATE delta == 0')) | ||
'WINDOW_UPDATE delta == 0')) | ||
} | ||
@@ -610,4 +610,4 @@ | ||
Parser.prototype.onXForwardedFrame = function onXForwardedFrame (header, | ||
body, | ||
callback) { | ||
body, | ||
callback) { | ||
callback(null, { | ||
@@ -614,0 +614,0 @@ type: 'X_FORWARDED_FOR', |
@@ -91,3 +91,3 @@ 'use strict' | ||
101: 'Switching Protocols', | ||
102: 'Processing', // RFC 2518, obsoleted by RFC 4918 | ||
102: 'Processing', // RFC 2518, obsoleted by RFC 4918 | ||
200: 'OK', | ||
@@ -100,3 +100,3 @@ 201: 'Created', | ||
206: 'Partial Content', | ||
207: 'Multi-Status', // RFC 4918 | ||
207: 'Multi-Status', // RFC 4918 | ||
300: 'Multiple Choices', | ||
@@ -109,3 +109,3 @@ 301: 'Moved Permanently', | ||
307: 'Temporary Redirect', | ||
308: 'Permanent Redirect', // RFC 7238 | ||
308: 'Permanent Redirect', // RFC 7238 | ||
400: 'Bad Request', | ||
@@ -129,10 +129,10 @@ 401: 'Unauthorized', | ||
417: 'Expectation Failed', | ||
418: 'I\'m a teapot', // RFC 2324 | ||
422: 'Unprocessable Entity', // RFC 4918 | ||
423: 'Locked', // RFC 4918 | ||
424: 'Failed Dependency', // RFC 4918 | ||
425: 'Unordered Collection', // RFC 4918 | ||
426: 'Upgrade Required', // RFC 2817 | ||
428: 'Precondition Required', // RFC 6585 | ||
429: 'Too Many Requests', // RFC 6585 | ||
418: 'I\'m a teapot', // RFC 2324 | ||
422: 'Unprocessable Entity', // RFC 4918 | ||
423: 'Locked', // RFC 4918 | ||
424: 'Failed Dependency', // RFC 4918 | ||
425: 'Unordered Collection', // RFC 4918 | ||
426: 'Upgrade Required', // RFC 2817 | ||
428: 'Precondition Required', // RFC 6585 | ||
429: 'Too Many Requests', // RFC 6585 | ||
431: 'Request Header Fields Too Large', // RFC 6585 | ||
@@ -145,7 +145,7 @@ 500: 'Internal Server Error', | ||
505: 'HTTP Version Not Supported', | ||
506: 'Variant Also Negotiates', // RFC 2295 | ||
507: 'Insufficient Storage', // RFC 4918 | ||
506: 'Variant Also Negotiates', // RFC 2295 | ||
507: 'Insufficient Storage', // RFC 4918 | ||
509: 'Bandwidth Limit Exceeded', | ||
510: 'Not Extended', // RFC 2774 | ||
510: 'Not Extended', // RFC 2774 | ||
511: 'Network Authentication Required' // RFC 6585 | ||
} |
'use strict' | ||
var Buffer = require('safe-buffer').Buffer | ||
var dictionary = {} | ||
@@ -25,182 +23,182 @@ module.exports = dictionary | ||
dictionary[3] = Buffer.from([ | ||
0x00, 0x00, 0x00, 0x07, 0x6f, 0x70, 0x74, 0x69, // ....opti | ||
0x6f, 0x6e, 0x73, 0x00, 0x00, 0x00, 0x04, 0x68, // ons....h | ||
0x65, 0x61, 0x64, 0x00, 0x00, 0x00, 0x04, 0x70, // ead....p | ||
0x6f, 0x73, 0x74, 0x00, 0x00, 0x00, 0x03, 0x70, // ost....p | ||
0x75, 0x74, 0x00, 0x00, 0x00, 0x06, 0x64, 0x65, // ut....de | ||
0x6c, 0x65, 0x74, 0x65, 0x00, 0x00, 0x00, 0x05, // lete.... | ||
0x74, 0x72, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00, // trace... | ||
0x06, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x00, // .accept. | ||
0x00, 0x00, 0x0e, 0x61, 0x63, 0x63, 0x65, 0x70, // ...accep | ||
0x74, 0x2d, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, // t-charse | ||
0x74, 0x00, 0x00, 0x00, 0x0f, 0x61, 0x63, 0x63, // t....acc | ||
0x65, 0x70, 0x74, 0x2d, 0x65, 0x6e, 0x63, 0x6f, // ept-enco | ||
0x64, 0x69, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x0f, // ding.... | ||
0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x6c, // accept-l | ||
0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x00, // anguage. | ||
0x00, 0x00, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x70, // ...accep | ||
0x74, 0x2d, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, // t-ranges | ||
0x00, 0x00, 0x00, 0x03, 0x61, 0x67, 0x65, 0x00, // ....age. | ||
0x00, 0x00, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, // ...allow | ||
0x00, 0x00, 0x00, 0x0d, 0x61, 0x75, 0x74, 0x68, // ....auth | ||
0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, // orizatio | ||
0x6e, 0x00, 0x00, 0x00, 0x0d, 0x63, 0x61, 0x63, // n....cac | ||
0x68, 0x65, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x72, // he-contr | ||
0x6f, 0x6c, 0x00, 0x00, 0x00, 0x0a, 0x63, 0x6f, // ol....co | ||
0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, // nnection | ||
0x00, 0x00, 0x00, 0x0c, 0x63, 0x6f, 0x6e, 0x74, // ....cont | ||
0x65, 0x6e, 0x74, 0x2d, 0x62, 0x61, 0x73, 0x65, // ent-base | ||
0x00, 0x00, 0x00, 0x10, 0x63, 0x6f, 0x6e, 0x74, // ....cont | ||
0x65, 0x6e, 0x74, 0x2d, 0x65, 0x6e, 0x63, 0x6f, // ent-enco | ||
0x64, 0x69, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x10, // ding.... | ||
0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, // content- | ||
0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, // language | ||
0x00, 0x00, 0x00, 0x0e, 0x63, 0x6f, 0x6e, 0x74, // ....cont | ||
0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x65, 0x6e, 0x67, // ent-leng | ||
0x74, 0x68, 0x00, 0x00, 0x00, 0x10, 0x63, 0x6f, // th....co | ||
0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x6f, // ntent-lo | ||
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, // cation.. | ||
0x00, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, // ..conten | ||
0x74, 0x2d, 0x6d, 0x64, 0x35, 0x00, 0x00, 0x00, // t-md5... | ||
0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, // .content | ||
0x2d, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x00, 0x00, // -range.. | ||
0x00, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, // ..conten | ||
0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x00, 0x00, // t-type.. | ||
0x00, 0x04, 0x64, 0x61, 0x74, 0x65, 0x00, 0x00, // ..date.. | ||
0x00, 0x04, 0x65, 0x74, 0x61, 0x67, 0x00, 0x00, // ..etag.. | ||
0x00, 0x06, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, // ..expect | ||
0x00, 0x00, 0x00, 0x07, 0x65, 0x78, 0x70, 0x69, // ....expi | ||
0x72, 0x65, 0x73, 0x00, 0x00, 0x00, 0x04, 0x66, // res....f | ||
0x72, 0x6f, 0x6d, 0x00, 0x00, 0x00, 0x04, 0x68, // rom....h | ||
0x6f, 0x73, 0x74, 0x00, 0x00, 0x00, 0x08, 0x69, // ost....i | ||
0x66, 0x2d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x00, // f-match. | ||
0x00, 0x00, 0x11, 0x69, 0x66, 0x2d, 0x6d, 0x6f, // ...if-mo | ||
0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2d, 0x73, // dified-s | ||
0x69, 0x6e, 0x63, 0x65, 0x00, 0x00, 0x00, 0x0d, // ince.... | ||
0x69, 0x66, 0x2d, 0x6e, 0x6f, 0x6e, 0x65, 0x2d, // if-none- | ||
0x6d, 0x61, 0x74, 0x63, 0x68, 0x00, 0x00, 0x00, // match... | ||
0x08, 0x69, 0x66, 0x2d, 0x72, 0x61, 0x6e, 0x67, // .if-rang | ||
0x65, 0x00, 0x00, 0x00, 0x13, 0x69, 0x66, 0x2d, // e....if- | ||
0x75, 0x6e, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, // unmodifi | ||
0x65, 0x64, 0x2d, 0x73, 0x69, 0x6e, 0x63, 0x65, // ed-since | ||
0x00, 0x00, 0x00, 0x0d, 0x6c, 0x61, 0x73, 0x74, // ....last | ||
0x2d, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, // -modifie | ||
0x64, 0x00, 0x00, 0x00, 0x08, 0x6c, 0x6f, 0x63, // d....loc | ||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, // ation... | ||
0x0c, 0x6d, 0x61, 0x78, 0x2d, 0x66, 0x6f, 0x72, // .max-for | ||
0x77, 0x61, 0x72, 0x64, 0x73, 0x00, 0x00, 0x00, // wards... | ||
0x06, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x00, // .pragma. | ||
0x00, 0x00, 0x12, 0x70, 0x72, 0x6f, 0x78, 0x79, // ...proxy | ||
0x2d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, // -authent | ||
0x69, 0x63, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, // icate... | ||
0x13, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2d, 0x61, // .proxy-a | ||
0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, // uthoriza | ||
0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, // tion.... | ||
0x72, 0x61, 0x6e, 0x67, 0x65, 0x00, 0x00, 0x00, // range... | ||
0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, // .referer | ||
0x00, 0x00, 0x00, 0x0b, 0x72, 0x65, 0x74, 0x72, // ....retr | ||
0x79, 0x2d, 0x61, 0x66, 0x74, 0x65, 0x72, 0x00, // y-after. | ||
0x00, 0x00, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, // ...serve | ||
0x72, 0x00, 0x00, 0x00, 0x02, 0x74, 0x65, 0x00, // r....te. | ||
0x00, 0x00, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6c, // ...trail | ||
0x65, 0x72, 0x00, 0x00, 0x00, 0x11, 0x74, 0x72, // er....tr | ||
0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x65, // ansfer-e | ||
0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x00, // ncoding. | ||
0x00, 0x00, 0x07, 0x75, 0x70, 0x67, 0x72, 0x61, // ...upgra | ||
0x64, 0x65, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x73, // de....us | ||
0x65, 0x72, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, // er-agent | ||
0x00, 0x00, 0x00, 0x04, 0x76, 0x61, 0x72, 0x79, // ....vary | ||
0x00, 0x00, 0x00, 0x03, 0x76, 0x69, 0x61, 0x00, // ....via. | ||
0x00, 0x00, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x69, // ...warni | ||
0x6e, 0x67, 0x00, 0x00, 0x00, 0x10, 0x77, 0x77, // ng....ww | ||
0x77, 0x2d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, // w-authen | ||
0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x00, 0x00, // ticate.. | ||
0x00, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, // ..method | ||
0x00, 0x00, 0x00, 0x03, 0x67, 0x65, 0x74, 0x00, // ....get. | ||
0x00, 0x00, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, // ...statu | ||
0x73, 0x00, 0x00, 0x00, 0x06, 0x32, 0x30, 0x30, // s....200 | ||
0x20, 0x4f, 0x4b, 0x00, 0x00, 0x00, 0x07, 0x76, // .OK....v | ||
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x00, 0x00, // ersion.. | ||
0x00, 0x08, 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, // ..HTTP.1 | ||
0x2e, 0x31, 0x00, 0x00, 0x00, 0x03, 0x75, 0x72, // .1....ur | ||
0x6c, 0x00, 0x00, 0x00, 0x06, 0x70, 0x75, 0x62, // l....pub | ||
0x6c, 0x69, 0x63, 0x00, 0x00, 0x00, 0x0a, 0x73, // lic....s | ||
0x65, 0x74, 0x2d, 0x63, 0x6f, 0x6f, 0x6b, 0x69, // et-cooki | ||
0x65, 0x00, 0x00, 0x00, 0x0a, 0x6b, 0x65, 0x65, // e....kee | ||
0x70, 0x2d, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x00, // p-alive. | ||
0x00, 0x00, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, // ...origi | ||
0x6e, 0x31, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, // n1001012 | ||
0x30, 0x31, 0x32, 0x30, 0x32, 0x32, 0x30, 0x35, // 01202205 | ||
0x32, 0x30, 0x36, 0x33, 0x30, 0x30, 0x33, 0x30, // 20630030 | ||
0x32, 0x33, 0x30, 0x33, 0x33, 0x30, 0x34, 0x33, // 23033043 | ||
0x30, 0x35, 0x33, 0x30, 0x36, 0x33, 0x30, 0x37, // 05306307 | ||
0x34, 0x30, 0x32, 0x34, 0x30, 0x35, 0x34, 0x30, // 40240540 | ||
0x36, 0x34, 0x30, 0x37, 0x34, 0x30, 0x38, 0x34, // 64074084 | ||
0x30, 0x39, 0x34, 0x31, 0x30, 0x34, 0x31, 0x31, // 09410411 | ||
0x34, 0x31, 0x32, 0x34, 0x31, 0x33, 0x34, 0x31, // 41241341 | ||
0x34, 0x34, 0x31, 0x35, 0x34, 0x31, 0x36, 0x34, // 44154164 | ||
0x31, 0x37, 0x35, 0x30, 0x32, 0x35, 0x30, 0x34, // 17502504 | ||
0x35, 0x30, 0x35, 0x32, 0x30, 0x33, 0x20, 0x4e, // 505203.N | ||
0x6f, 0x6e, 0x2d, 0x41, 0x75, 0x74, 0x68, 0x6f, // on-Autho | ||
0x72, 0x69, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, // ritative | ||
0x20, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, // .Informa | ||
0x74, 0x69, 0x6f, 0x6e, 0x32, 0x30, 0x34, 0x20, // tion204. | ||
0x4e, 0x6f, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x65, // No.Conte | ||
0x6e, 0x74, 0x33, 0x30, 0x31, 0x20, 0x4d, 0x6f, // nt301.Mo | ||
0x76, 0x65, 0x64, 0x20, 0x50, 0x65, 0x72, 0x6d, // ved.Perm | ||
0x61, 0x6e, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x34, // anently4 | ||
0x30, 0x30, 0x20, 0x42, 0x61, 0x64, 0x20, 0x52, // 00.Bad.R | ||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x34, 0x30, // equest40 | ||
0x31, 0x20, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, // 1.Unauth | ||
0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x34, 0x30, // orized40 | ||
0x33, 0x20, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, // 3.Forbid | ||
0x64, 0x65, 0x6e, 0x34, 0x30, 0x34, 0x20, 0x4e, // den404.N | ||
0x6f, 0x74, 0x20, 0x46, 0x6f, 0x75, 0x6e, 0x64, // ot.Found | ||
0x35, 0x30, 0x30, 0x20, 0x49, 0x6e, 0x74, 0x65, // 500.Inte | ||
0x72, 0x6e, 0x61, 0x6c, 0x20, 0x53, 0x65, 0x72, // rnal.Ser | ||
0x76, 0x65, 0x72, 0x20, 0x45, 0x72, 0x72, 0x6f, // ver.Erro | ||
0x72, 0x35, 0x30, 0x31, 0x20, 0x4e, 0x6f, 0x74, // r501.Not | ||
0x20, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, // .Impleme | ||
0x6e, 0x74, 0x65, 0x64, 0x35, 0x30, 0x33, 0x20, // nted503. | ||
0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, // Service. | ||
0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, // Unavaila | ||
0x62, 0x6c, 0x65, 0x4a, 0x61, 0x6e, 0x20, 0x46, // bleJan.F | ||
0x65, 0x62, 0x20, 0x4d, 0x61, 0x72, 0x20, 0x41, // eb.Mar.A | ||
0x70, 0x72, 0x20, 0x4d, 0x61, 0x79, 0x20, 0x4a, // pr.May.J | ||
0x75, 0x6e, 0x20, 0x4a, 0x75, 0x6c, 0x20, 0x41, // un.Jul.A | ||
0x75, 0x67, 0x20, 0x53, 0x65, 0x70, 0x74, 0x20, // ug.Sept. | ||
0x4f, 0x63, 0x74, 0x20, 0x4e, 0x6f, 0x76, 0x20, // Oct.Nov. | ||
0x44, 0x65, 0x63, 0x20, 0x30, 0x30, 0x3a, 0x30, // Dec.00.0 | ||
0x30, 0x3a, 0x30, 0x30, 0x20, 0x4d, 0x6f, 0x6e, // 0.00.Mon | ||
0x2c, 0x20, 0x54, 0x75, 0x65, 0x2c, 0x20, 0x57, // ..Tue..W | ||
0x65, 0x64, 0x2c, 0x20, 0x54, 0x68, 0x75, 0x2c, // ed..Thu. | ||
0x20, 0x46, 0x72, 0x69, 0x2c, 0x20, 0x53, 0x61, // .Fri..Sa | ||
0x74, 0x2c, 0x20, 0x53, 0x75, 0x6e, 0x2c, 0x20, // t..Sun.. | ||
0x47, 0x4d, 0x54, 0x63, 0x68, 0x75, 0x6e, 0x6b, // GMTchunk | ||
0x65, 0x64, 0x2c, 0x74, 0x65, 0x78, 0x74, 0x2f, // ed.text. | ||
0x68, 0x74, 0x6d, 0x6c, 0x2c, 0x69, 0x6d, 0x61, // html.ima | ||
0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0x2c, 0x69, // ge.png.i | ||
0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x67, // mage.jpg | ||
0x2c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, // .image.g | ||
0x69, 0x66, 0x2c, 0x61, 0x70, 0x70, 0x6c, 0x69, // if.appli | ||
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, // cation.x | ||
0x6d, 0x6c, 0x2c, 0x61, 0x70, 0x70, 0x6c, 0x69, // ml.appli | ||
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, // cation.x | ||
0x68, 0x74, 0x6d, 0x6c, 0x2b, 0x78, 0x6d, 0x6c, // html.xml | ||
0x2c, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, // .text.pl | ||
0x61, 0x69, 0x6e, 0x2c, 0x74, 0x65, 0x78, 0x74, // ain.text | ||
0x2f, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, // .javascr | ||
0x69, 0x70, 0x74, 0x2c, 0x70, 0x75, 0x62, 0x6c, // ipt.publ | ||
0x69, 0x63, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, // icprivat | ||
0x65, 0x6d, 0x61, 0x78, 0x2d, 0x61, 0x67, 0x65, // emax-age | ||
0x3d, 0x67, 0x7a, 0x69, 0x70, 0x2c, 0x64, 0x65, // .gzip.de | ||
0x66, 0x6c, 0x61, 0x74, 0x65, 0x2c, 0x73, 0x64, // flate.sd | ||
0x63, 0x68, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, // chcharse | ||
0x74, 0x3d, 0x75, 0x74, 0x66, 0x2d, 0x38, 0x63, // t.utf-8c | ||
0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3d, 0x69, // harset.i | ||
0x73, 0x6f, 0x2d, 0x38, 0x38, 0x35, 0x39, 0x2d, // so-8859- | ||
0x31, 0x2c, 0x75, 0x74, 0x66, 0x2d, 0x2c, 0x2a, // 1.utf-.. | ||
0x2c, 0x65, 0x6e, 0x71, 0x3d, 0x30, 0x2e // .enq.0. | ||
0x00, 0x00, 0x00, 0x07, 0x6f, 0x70, 0x74, 0x69, // ....opti | ||
0x6f, 0x6e, 0x73, 0x00, 0x00, 0x00, 0x04, 0x68, // ons....h | ||
0x65, 0x61, 0x64, 0x00, 0x00, 0x00, 0x04, 0x70, // ead....p | ||
0x6f, 0x73, 0x74, 0x00, 0x00, 0x00, 0x03, 0x70, // ost....p | ||
0x75, 0x74, 0x00, 0x00, 0x00, 0x06, 0x64, 0x65, // ut....de | ||
0x6c, 0x65, 0x74, 0x65, 0x00, 0x00, 0x00, 0x05, // lete.... | ||
0x74, 0x72, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00, // trace... | ||
0x06, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x00, // .accept. | ||
0x00, 0x00, 0x0e, 0x61, 0x63, 0x63, 0x65, 0x70, // ...accep | ||
0x74, 0x2d, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, // t-charse | ||
0x74, 0x00, 0x00, 0x00, 0x0f, 0x61, 0x63, 0x63, // t....acc | ||
0x65, 0x70, 0x74, 0x2d, 0x65, 0x6e, 0x63, 0x6f, // ept-enco | ||
0x64, 0x69, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x0f, // ding.... | ||
0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x6c, // accept-l | ||
0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x00, // anguage. | ||
0x00, 0x00, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x70, // ...accep | ||
0x74, 0x2d, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, // t-ranges | ||
0x00, 0x00, 0x00, 0x03, 0x61, 0x67, 0x65, 0x00, // ....age. | ||
0x00, 0x00, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, // ...allow | ||
0x00, 0x00, 0x00, 0x0d, 0x61, 0x75, 0x74, 0x68, // ....auth | ||
0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, // orizatio | ||
0x6e, 0x00, 0x00, 0x00, 0x0d, 0x63, 0x61, 0x63, // n....cac | ||
0x68, 0x65, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x72, // he-contr | ||
0x6f, 0x6c, 0x00, 0x00, 0x00, 0x0a, 0x63, 0x6f, // ol....co | ||
0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, // nnection | ||
0x00, 0x00, 0x00, 0x0c, 0x63, 0x6f, 0x6e, 0x74, // ....cont | ||
0x65, 0x6e, 0x74, 0x2d, 0x62, 0x61, 0x73, 0x65, // ent-base | ||
0x00, 0x00, 0x00, 0x10, 0x63, 0x6f, 0x6e, 0x74, // ....cont | ||
0x65, 0x6e, 0x74, 0x2d, 0x65, 0x6e, 0x63, 0x6f, // ent-enco | ||
0x64, 0x69, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x10, // ding.... | ||
0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, // content- | ||
0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, // language | ||
0x00, 0x00, 0x00, 0x0e, 0x63, 0x6f, 0x6e, 0x74, // ....cont | ||
0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x65, 0x6e, 0x67, // ent-leng | ||
0x74, 0x68, 0x00, 0x00, 0x00, 0x10, 0x63, 0x6f, // th....co | ||
0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x6f, // ntent-lo | ||
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, // cation.. | ||
0x00, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, // ..conten | ||
0x74, 0x2d, 0x6d, 0x64, 0x35, 0x00, 0x00, 0x00, // t-md5... | ||
0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, // .content | ||
0x2d, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x00, 0x00, // -range.. | ||
0x00, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, // ..conten | ||
0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x00, 0x00, // t-type.. | ||
0x00, 0x04, 0x64, 0x61, 0x74, 0x65, 0x00, 0x00, // ..date.. | ||
0x00, 0x04, 0x65, 0x74, 0x61, 0x67, 0x00, 0x00, // ..etag.. | ||
0x00, 0x06, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, // ..expect | ||
0x00, 0x00, 0x00, 0x07, 0x65, 0x78, 0x70, 0x69, // ....expi | ||
0x72, 0x65, 0x73, 0x00, 0x00, 0x00, 0x04, 0x66, // res....f | ||
0x72, 0x6f, 0x6d, 0x00, 0x00, 0x00, 0x04, 0x68, // rom....h | ||
0x6f, 0x73, 0x74, 0x00, 0x00, 0x00, 0x08, 0x69, // ost....i | ||
0x66, 0x2d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x00, // f-match. | ||
0x00, 0x00, 0x11, 0x69, 0x66, 0x2d, 0x6d, 0x6f, // ...if-mo | ||
0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2d, 0x73, // dified-s | ||
0x69, 0x6e, 0x63, 0x65, 0x00, 0x00, 0x00, 0x0d, // ince.... | ||
0x69, 0x66, 0x2d, 0x6e, 0x6f, 0x6e, 0x65, 0x2d, // if-none- | ||
0x6d, 0x61, 0x74, 0x63, 0x68, 0x00, 0x00, 0x00, // match... | ||
0x08, 0x69, 0x66, 0x2d, 0x72, 0x61, 0x6e, 0x67, // .if-rang | ||
0x65, 0x00, 0x00, 0x00, 0x13, 0x69, 0x66, 0x2d, // e....if- | ||
0x75, 0x6e, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, // unmodifi | ||
0x65, 0x64, 0x2d, 0x73, 0x69, 0x6e, 0x63, 0x65, // ed-since | ||
0x00, 0x00, 0x00, 0x0d, 0x6c, 0x61, 0x73, 0x74, // ....last | ||
0x2d, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, // -modifie | ||
0x64, 0x00, 0x00, 0x00, 0x08, 0x6c, 0x6f, 0x63, // d....loc | ||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, // ation... | ||
0x0c, 0x6d, 0x61, 0x78, 0x2d, 0x66, 0x6f, 0x72, // .max-for | ||
0x77, 0x61, 0x72, 0x64, 0x73, 0x00, 0x00, 0x00, // wards... | ||
0x06, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x00, // .pragma. | ||
0x00, 0x00, 0x12, 0x70, 0x72, 0x6f, 0x78, 0x79, // ...proxy | ||
0x2d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, // -authent | ||
0x69, 0x63, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, // icate... | ||
0x13, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2d, 0x61, // .proxy-a | ||
0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, // uthoriza | ||
0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, // tion.... | ||
0x72, 0x61, 0x6e, 0x67, 0x65, 0x00, 0x00, 0x00, // range... | ||
0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, // .referer | ||
0x00, 0x00, 0x00, 0x0b, 0x72, 0x65, 0x74, 0x72, // ....retr | ||
0x79, 0x2d, 0x61, 0x66, 0x74, 0x65, 0x72, 0x00, // y-after. | ||
0x00, 0x00, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, // ...serve | ||
0x72, 0x00, 0x00, 0x00, 0x02, 0x74, 0x65, 0x00, // r....te. | ||
0x00, 0x00, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6c, // ...trail | ||
0x65, 0x72, 0x00, 0x00, 0x00, 0x11, 0x74, 0x72, // er....tr | ||
0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x65, // ansfer-e | ||
0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x00, // ncoding. | ||
0x00, 0x00, 0x07, 0x75, 0x70, 0x67, 0x72, 0x61, // ...upgra | ||
0x64, 0x65, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x73, // de....us | ||
0x65, 0x72, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, // er-agent | ||
0x00, 0x00, 0x00, 0x04, 0x76, 0x61, 0x72, 0x79, // ....vary | ||
0x00, 0x00, 0x00, 0x03, 0x76, 0x69, 0x61, 0x00, // ....via. | ||
0x00, 0x00, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x69, // ...warni | ||
0x6e, 0x67, 0x00, 0x00, 0x00, 0x10, 0x77, 0x77, // ng....ww | ||
0x77, 0x2d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, // w-authen | ||
0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x00, 0x00, // ticate.. | ||
0x00, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, // ..method | ||
0x00, 0x00, 0x00, 0x03, 0x67, 0x65, 0x74, 0x00, // ....get. | ||
0x00, 0x00, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, // ...statu | ||
0x73, 0x00, 0x00, 0x00, 0x06, 0x32, 0x30, 0x30, // s....200 | ||
0x20, 0x4f, 0x4b, 0x00, 0x00, 0x00, 0x07, 0x76, // .OK....v | ||
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x00, 0x00, // ersion.. | ||
0x00, 0x08, 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, // ..HTTP.1 | ||
0x2e, 0x31, 0x00, 0x00, 0x00, 0x03, 0x75, 0x72, // .1....ur | ||
0x6c, 0x00, 0x00, 0x00, 0x06, 0x70, 0x75, 0x62, // l....pub | ||
0x6c, 0x69, 0x63, 0x00, 0x00, 0x00, 0x0a, 0x73, // lic....s | ||
0x65, 0x74, 0x2d, 0x63, 0x6f, 0x6f, 0x6b, 0x69, // et-cooki | ||
0x65, 0x00, 0x00, 0x00, 0x0a, 0x6b, 0x65, 0x65, // e....kee | ||
0x70, 0x2d, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x00, // p-alive. | ||
0x00, 0x00, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, // ...origi | ||
0x6e, 0x31, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, // n1001012 | ||
0x30, 0x31, 0x32, 0x30, 0x32, 0x32, 0x30, 0x35, // 01202205 | ||
0x32, 0x30, 0x36, 0x33, 0x30, 0x30, 0x33, 0x30, // 20630030 | ||
0x32, 0x33, 0x30, 0x33, 0x33, 0x30, 0x34, 0x33, // 23033043 | ||
0x30, 0x35, 0x33, 0x30, 0x36, 0x33, 0x30, 0x37, // 05306307 | ||
0x34, 0x30, 0x32, 0x34, 0x30, 0x35, 0x34, 0x30, // 40240540 | ||
0x36, 0x34, 0x30, 0x37, 0x34, 0x30, 0x38, 0x34, // 64074084 | ||
0x30, 0x39, 0x34, 0x31, 0x30, 0x34, 0x31, 0x31, // 09410411 | ||
0x34, 0x31, 0x32, 0x34, 0x31, 0x33, 0x34, 0x31, // 41241341 | ||
0x34, 0x34, 0x31, 0x35, 0x34, 0x31, 0x36, 0x34, // 44154164 | ||
0x31, 0x37, 0x35, 0x30, 0x32, 0x35, 0x30, 0x34, // 17502504 | ||
0x35, 0x30, 0x35, 0x32, 0x30, 0x33, 0x20, 0x4e, // 505203.N | ||
0x6f, 0x6e, 0x2d, 0x41, 0x75, 0x74, 0x68, 0x6f, // on-Autho | ||
0x72, 0x69, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, // ritative | ||
0x20, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, // .Informa | ||
0x74, 0x69, 0x6f, 0x6e, 0x32, 0x30, 0x34, 0x20, // tion204. | ||
0x4e, 0x6f, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x65, // No.Conte | ||
0x6e, 0x74, 0x33, 0x30, 0x31, 0x20, 0x4d, 0x6f, // nt301.Mo | ||
0x76, 0x65, 0x64, 0x20, 0x50, 0x65, 0x72, 0x6d, // ved.Perm | ||
0x61, 0x6e, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x34, // anently4 | ||
0x30, 0x30, 0x20, 0x42, 0x61, 0x64, 0x20, 0x52, // 00.Bad.R | ||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x34, 0x30, // equest40 | ||
0x31, 0x20, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, // 1.Unauth | ||
0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x34, 0x30, // orized40 | ||
0x33, 0x20, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, // 3.Forbid | ||
0x64, 0x65, 0x6e, 0x34, 0x30, 0x34, 0x20, 0x4e, // den404.N | ||
0x6f, 0x74, 0x20, 0x46, 0x6f, 0x75, 0x6e, 0x64, // ot.Found | ||
0x35, 0x30, 0x30, 0x20, 0x49, 0x6e, 0x74, 0x65, // 500.Inte | ||
0x72, 0x6e, 0x61, 0x6c, 0x20, 0x53, 0x65, 0x72, // rnal.Ser | ||
0x76, 0x65, 0x72, 0x20, 0x45, 0x72, 0x72, 0x6f, // ver.Erro | ||
0x72, 0x35, 0x30, 0x31, 0x20, 0x4e, 0x6f, 0x74, // r501.Not | ||
0x20, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, // .Impleme | ||
0x6e, 0x74, 0x65, 0x64, 0x35, 0x30, 0x33, 0x20, // nted503. | ||
0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, // Service. | ||
0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, // Unavaila | ||
0x62, 0x6c, 0x65, 0x4a, 0x61, 0x6e, 0x20, 0x46, // bleJan.F | ||
0x65, 0x62, 0x20, 0x4d, 0x61, 0x72, 0x20, 0x41, // eb.Mar.A | ||
0x70, 0x72, 0x20, 0x4d, 0x61, 0x79, 0x20, 0x4a, // pr.May.J | ||
0x75, 0x6e, 0x20, 0x4a, 0x75, 0x6c, 0x20, 0x41, // un.Jul.A | ||
0x75, 0x67, 0x20, 0x53, 0x65, 0x70, 0x74, 0x20, // ug.Sept. | ||
0x4f, 0x63, 0x74, 0x20, 0x4e, 0x6f, 0x76, 0x20, // Oct.Nov. | ||
0x44, 0x65, 0x63, 0x20, 0x30, 0x30, 0x3a, 0x30, // Dec.00.0 | ||
0x30, 0x3a, 0x30, 0x30, 0x20, 0x4d, 0x6f, 0x6e, // 0.00.Mon | ||
0x2c, 0x20, 0x54, 0x75, 0x65, 0x2c, 0x20, 0x57, // ..Tue..W | ||
0x65, 0x64, 0x2c, 0x20, 0x54, 0x68, 0x75, 0x2c, // ed..Thu. | ||
0x20, 0x46, 0x72, 0x69, 0x2c, 0x20, 0x53, 0x61, // .Fri..Sa | ||
0x74, 0x2c, 0x20, 0x53, 0x75, 0x6e, 0x2c, 0x20, // t..Sun.. | ||
0x47, 0x4d, 0x54, 0x63, 0x68, 0x75, 0x6e, 0x6b, // GMTchunk | ||
0x65, 0x64, 0x2c, 0x74, 0x65, 0x78, 0x74, 0x2f, // ed.text. | ||
0x68, 0x74, 0x6d, 0x6c, 0x2c, 0x69, 0x6d, 0x61, // html.ima | ||
0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0x2c, 0x69, // ge.png.i | ||
0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x67, // mage.jpg | ||
0x2c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, // .image.g | ||
0x69, 0x66, 0x2c, 0x61, 0x70, 0x70, 0x6c, 0x69, // if.appli | ||
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, // cation.x | ||
0x6d, 0x6c, 0x2c, 0x61, 0x70, 0x70, 0x6c, 0x69, // ml.appli | ||
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, // cation.x | ||
0x68, 0x74, 0x6d, 0x6c, 0x2b, 0x78, 0x6d, 0x6c, // html.xml | ||
0x2c, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, // .text.pl | ||
0x61, 0x69, 0x6e, 0x2c, 0x74, 0x65, 0x78, 0x74, // ain.text | ||
0x2f, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, // .javascr | ||
0x69, 0x70, 0x74, 0x2c, 0x70, 0x75, 0x62, 0x6c, // ipt.publ | ||
0x69, 0x63, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, // icprivat | ||
0x65, 0x6d, 0x61, 0x78, 0x2d, 0x61, 0x67, 0x65, // emax-age | ||
0x3d, 0x67, 0x7a, 0x69, 0x70, 0x2c, 0x64, 0x65, // .gzip.de | ||
0x66, 0x6c, 0x61, 0x74, 0x65, 0x2c, 0x73, 0x64, // flate.sd | ||
0x63, 0x68, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, // chcharse | ||
0x74, 0x3d, 0x75, 0x74, 0x66, 0x2d, 0x38, 0x63, // t.utf-8c | ||
0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3d, 0x69, // harset.i | ||
0x73, 0x6f, 0x2d, 0x38, 0x38, 0x35, 0x39, 0x2d, // so-8859- | ||
0x31, 0x2c, 0x75, 0x74, 0x66, 0x2d, 0x2c, 0x2a, // 1.utf-.. | ||
0x2c, 0x65, 0x6e, 0x71, 0x3d, 0x30, 0x2e // .enq.0. | ||
]) | ||
dictionary[3.1] = dictionary[3] |
@@ -30,4 +30,4 @@ 'use strict' | ||
Framer.prototype.headersToDict = function headersToDict (headers, | ||
preprocess, | ||
callback) { | ||
preprocess, | ||
callback) { | ||
function stringify (value) { | ||
@@ -473,3 +473,3 @@ if (value !== undefined) { | ||
Framer.prototype.windowUpdateFrame = function windowUpdateFrame (frame, | ||
callback) { | ||
callback) { | ||
this._frame({ | ||
@@ -476,0 +476,0 @@ type: 'WINDOW_UPDATE', |
@@ -129,3 +129,3 @@ 'use strict' | ||
return callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'Invalid stream id for DATA')) | ||
'Invalid stream id for DATA')) | ||
} | ||
@@ -179,5 +179,5 @@ | ||
Parser.prototype.onSynHeadFrame = function onSynHeadFrame (type, | ||
flags, | ||
body, | ||
callback) { | ||
flags, | ||
body, | ||
callback) { | ||
var self = this | ||
@@ -207,3 +207,3 @@ var stream = type === 0x01 | ||
return callback(self.error(constants.error.PROTOCOL_ERROR, | ||
'Invalid stream id for HEADERS')) | ||
'Invalid stream id for HEADERS')) | ||
} | ||
@@ -384,3 +384,3 @@ | ||
return callback(this.error(constants.error.PROTOCOL_ERROR, | ||
'Invalid stream id for RST')) | ||
'Invalid stream id for RST')) | ||
} | ||
@@ -464,3 +464,3 @@ | ||
Parser.prototype.onWindowUpdateFrame = function onWindowUpdateFrame (body, | ||
callback) { | ||
callback) { | ||
if (!body.has(8)) { | ||
@@ -478,3 +478,3 @@ return callback(new Error('WINDOW_UPDATE OOB')) | ||
Parser.prototype.onXForwardedFrame = function onXForwardedFrame (body, | ||
callback) { | ||
callback) { | ||
if (!body.has(4)) { | ||
@@ -481,0 +481,0 @@ return callback(new Error('X_FORWARDED OOB')) |
@@ -12,3 +12,2 @@ 'use strict' | ||
} | ||
var Buffer = require('safe-buffer').Buffer | ||
var Duplex = require('readable-stream').Duplex | ||
@@ -363,3 +362,3 @@ | ||
fin: true, | ||
data: new Buffer(0) | ||
data: Buffer.alloc(0) | ||
}) | ||
@@ -612,3 +611,3 @@ } | ||
Stream.prototype.destroy = function destroy () { | ||
Stream.prototype._destroy = function destroy () { | ||
this.abort() | ||
@@ -615,0 +614,0 @@ } |
@@ -29,5 +29,5 @@ 'use strict' | ||
this.window.debug('id=%d side=%s setMax=%d', | ||
this.window.id, | ||
this.name, | ||
max) | ||
this.window.id, | ||
this.name, | ||
max) | ||
this.max = max | ||
@@ -40,6 +40,6 @@ this.lowWaterMark = this.max / 2 | ||
this.window.debug('id=%d side=%s updateMax=%d delta=%d', | ||
this.window.id, | ||
this.name, | ||
max, | ||
delta) | ||
this.window.id, | ||
this.name, | ||
max, | ||
delta) | ||
@@ -60,7 +60,7 @@ this.max = max | ||
this.window.debug('id=%d side=%s wait for refill=%d [%d/%d]', | ||
this.window.id, | ||
this.name, | ||
-size, | ||
this.current, | ||
this.max) | ||
this.window.id, | ||
this.name, | ||
-size, | ||
this.current, | ||
this.max) | ||
this._refillQueue.push({ | ||
@@ -81,7 +81,7 @@ size: size, | ||
this.window.debug('id=%d side=%s update by=%d [%d/%d]', | ||
this.window.id, | ||
this.name, | ||
size, | ||
this.current, | ||
this.max) | ||
this.window.id, | ||
this.name, | ||
size, | ||
this.current, | ||
this.max) | ||
@@ -142,5 +142,5 @@ // Time to send WINDOW_UPDATE | ||
this.window.debug('id=%d side=%s refilled for size=%d', | ||
this.window.id, | ||
this.name, | ||
-item.size) | ||
this.window.id, | ||
this.name, | ||
-item.size) | ||
@@ -147,0 +147,0 @@ this._refillQueue.shift() |
{ | ||
"name": "spdy-transport", | ||
"version": "2.1.1", | ||
"version": "3.0.0", | ||
"main": "lib/spdy-transport", | ||
@@ -19,16 +19,15 @@ "description": "SPDY v2, v3, v3.1 and HTTP2 transport", | ||
"dependencies": { | ||
"debug": "^2.6.8", | ||
"detect-node": "^2.0.3", | ||
"debug": "^4.1.0", | ||
"detect-node": "^2.0.4", | ||
"hpack.js": "^2.1.6", | ||
"obuf": "^1.1.1", | ||
"readable-stream": "^2.2.9", | ||
"safe-buffer": "^5.0.1", | ||
"wbuf": "^1.7.2" | ||
"obuf": "^1.1.2", | ||
"readable-stream": "^3.0.6", | ||
"wbuf": "^1.7.3" | ||
}, | ||
"devDependencies": { | ||
"async": "^2.4.1", | ||
"async": "^2.6.1", | ||
"istanbul": "^0.4.5", | ||
"mocha": "^3.4.1", | ||
"mocha": "^5.2.0", | ||
"pre-commit": "^1.2.2", | ||
"standard": "^10.0.2", | ||
"standard": "^12.0.1", | ||
"stream-pair": "^1.0.3" | ||
@@ -35,0 +34,0 @@ }, |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
6
4357
136272
+ Addeddebug@4.3.7(transitive)
+ Addedms@2.1.3(transitive)
+ Addedreadable-stream@3.6.2(transitive)
- Removedsafe-buffer@^5.0.1
- Removeddebug@2.6.9(transitive)
- Removedms@2.0.0(transitive)
- Removedsafe-buffer@5.2.1(transitive)
Updateddebug@^4.1.0
Updateddetect-node@^2.0.4
Updatedobuf@^1.1.2
Updatedreadable-stream@^3.0.6
Updatedwbuf@^1.7.3