ab12f15c50577f99ce9b863739b8c18abda51f49d48950b6d3aa300896405b40d609cfd1dabd441e7bcb73c008ee714d20c99b7103cedbeff6d7ffbea7de00 1.9 KB

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