1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
| 'use strict'
|
| var transport = require('../../../spdy-transport')
| var base = transport.protocol.base
|
| exports.PREFACE_SIZE = 24
| exports.PREFACE = 'PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n'
| exports.PREFACE_BUFFER = Buffer.from(exports.PREFACE)
|
| exports.PING_OPAQUE_SIZE = 8
|
| exports.FRAME_HEADER_SIZE = 9
| exports.INITIAL_MAX_FRAME_SIZE = 16384
| exports.ABSOLUTE_MAX_FRAME_SIZE = 16777215
| exports.HEADER_TABLE_SIZE = 4096
| exports.DEFAULT_MAX_HEADER_LIST_SIZE = 80 * 1024 // as in http_parser
| exports.MAX_INITIAL_WINDOW_SIZE = 2147483647
|
| exports.DEFAULT_WEIGHT = 16
|
| exports.MAX_CONCURRENT_STREAMS = Infinity
|
| exports.frameType = {
| DATA: 0,
| HEADERS: 1,
| PRIORITY: 2,
| RST_STREAM: 3,
| SETTINGS: 4,
| PUSH_PROMISE: 5,
| PING: 6,
| GOAWAY: 7,
| WINDOW_UPDATE: 8,
| CONTINUATION: 9,
|
| // Custom
| X_FORWARDED_FOR: 0xde
| }
|
| exports.flags = {
| ACK: 0x01, // SETTINGS-only
| END_STREAM: 0x01,
| END_HEADERS: 0x04,
| PADDED: 0x08,
| PRIORITY: 0x20
| }
|
| exports.settings = {
| SETTINGS_HEADER_TABLE_SIZE: 0x01,
| SETTINGS_ENABLE_PUSH: 0x02,
| SETTINGS_MAX_CONCURRENT_STREAMS: 0x03,
| SETTINGS_INITIAL_WINDOW_SIZE: 0x04,
| SETTINGS_MAX_FRAME_SIZE: 0x05,
| SETTINGS_MAX_HEADER_LIST_SIZE: 0x06
| }
|
| exports.settingsIndex = [
| null,
| 'header_table_size',
| 'enable_push',
| 'max_concurrent_streams',
| 'initial_window_size',
| 'max_frame_size',
| 'max_header_list_size'
| ]
|
| exports.error = {
| OK: 0,
| NO_ERROR: 0,
|
| PROTOCOL_ERROR: 1,
| INTERNAL_ERROR: 2,
| FLOW_CONTROL_ERROR: 3,
| SETTINGS_TIMEOUT: 4,
|
| STREAM_CLOSED: 5,
| INVALID_STREAM: 5,
|
| FRAME_SIZE_ERROR: 6,
| REFUSED_STREAM: 7,
| CANCEL: 8,
| COMPRESSION_ERROR: 9,
| CONNECT_ERROR: 10,
| ENHANCE_YOUR_CALM: 11,
| INADEQUATE_SECURITY: 12,
| HTTP_1_1_REQUIRED: 13
| }
| exports.errorByCode = base.utils.reverse(exports.error)
|
| exports.DEFAULT_WINDOW = 64 * 1024 - 1
|
| exports.goaway = exports.error
| exports.goawayByCode = Object.assign({}, exports.errorByCode)
| exports.goawayByCode[0] = 'OK'
|
|