# all files / lib/spdy-transport/protocol/spdy/ constants.js

100% Statements 18/18
100% Branches 0/0
100% Functions 0/0
100% Lines 18/18

    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
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147

    1×
    1×

    1×

    1×

    1×
    1×

    1×

    1×

    1×

    1×

    1×

    1×

    1×

    1×
    1×

    1×

    1×

    1×

     'use strict'

    var transport = require('../../../spdy-transport')
    var base = transport.protocol.base

    exports.FRAME_HEADER_SIZE = 8

    exports.PING_OPAQUE_SIZE = 4

    exports.MAX_CONCURRENT_STREAMS = Infinity
    exports.DEFAULT_MAX_HEADER_LIST_SIZE = Infinity

    exports.DEFAULT_WEIGHT = 16

    exports.frameType = {
      SYN_STREAM: 1,
      SYN_REPLY: 2,
      RST_STREAM: 3,
      SETTINGS: 4,
      PING: 6,
      GOAWAY: 7,
      HEADERS: 8,
      WINDOW_UPDATE: 9,

      // Custom
      X_FORWARDED_FOR: 0xf000
    }

    exports.flags = {
      FLAG_FIN: 0x01,
      FLAG_COMPRESSED: 0x02,
      FLAG_UNIDIRECTIONAL: 0x02
    }

    exports.error = {
      PROTOCOL_ERROR: 1,
      INVALID_STREAM: 2,
      REFUSED_STREAM: 3,
      UNSUPPORTED_VERSION: 4,
      CANCEL: 5,
      INTERNAL_ERROR: 6,
      FLOW_CONTROL_ERROR: 7,
      STREAM_IN_USE: 8,
      // STREAM_ALREADY_CLOSED: 9
      STREAM_CLOSED: 9,
      INVALID_CREDENTIALS: 10,
      FRAME_TOO_LARGE: 11
    }
    exports.errorByCode = base.utils.reverse(exports.error)

    exports.settings = {
      FLAG_SETTINGS_PERSIST_VALUE: 1,
      FLAG_SETTINGS_PERSISTED: 2,

      SETTINGS_UPLOAD_BANDWIDTH: 1,
      SETTINGS_DOWNLOAD_BANDWIDTH: 2,
      SETTINGS_ROUND_TRIP_TIME: 3,
      SETTINGS_MAX_CONCURRENT_STREAMS: 4,
      SETTINGS_CURRENT_CWND: 5,
      SETTINGS_DOWNLOAD_RETRANS_RATE: 6,
      SETTINGS_INITIAL_WINDOW_SIZE: 7,
      SETTINGS_CLIENT_CERTIFICATE_VECTOR_SIZE: 8
    }

    exports.settingsIndex = [
      null,

      'upload_bandwidth',
      'download_bandwidth',
      'round_trip_time',
      'max_concurrent_streams',
      'current_cwnd',
      'download_retrans_rate',
      'initial_window_size',
      'client_certificate_vector_size'
    ]

    exports.DEFAULT_WINDOW = 64 * 1024
    exports.MAX_INITIAL_WINDOW_SIZE = 2147483647

    exports.goaway = {
      OK: 0,
      PROTOCOL_ERROR: 1,
      INTERNAL_ERROR: 2
    }
    exports.goawayByCode = base.utils.reverse(exports.goaway)

    exports.statusReason = {
      100: 'Continue',
      101: 'Switching Protocols',
      102: 'Processing',                 // RFC 2518, obsoleted by RFC 4918
      200: 'OK',
      201: 'Created',
      202: 'Accepted',
      203: 'Non-Authoritative Information',
      204: 'No Content',
      205: 'Reset Content',
      206: 'Partial Content',
      207: 'Multi-Status',               // RFC 4918
      300: 'Multiple Choices',
      301: 'Moved Permanently',
      302: 'Moved Temporarily',
      303: 'See Other',
      304: 'Not Modified',
      305: 'Use Proxy',
      307: 'Temporary Redirect',
      308: 'Permanent Redirect',         // RFC 7238
      400: 'Bad Request',
      401: 'Unauthorized',
      402: 'Payment Required',
      403: 'Forbidden',
      404: 'Not Found',
      405: 'Method Not Allowed',
      406: 'Not Acceptable',
      407: 'Proxy Authentication Required',
      408: 'Request Time-out',
      409: 'Conflict',
      410: 'Gone',
      411: 'Length Required',
      412: 'Precondition Failed',
      413: 'Request Entity Too Large',
      414: 'Request-URI Too Large',
      415: 'Unsupported Media Type',
      416: 'Requested Range Not Satisfiable',
      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
      431: 'Request Header Fields Too Large', // RFC 6585
      500: 'Internal Server Error',
      501: 'Not Implemented',
      502: 'Bad Gateway',
      503: 'Service Unavailable',
      504: 'Gateway Time-out',
      505: 'HTTP Version Not Supported',
      506: 'Variant Also Negotiates',    // RFC 2295
      507: 'Insufficient Storage',       // RFC 4918
      509: 'Bandwidth Limit Exceeded',
      510: 'Not Extended',               // RFC 2774
      511: 'Network Authentication Required' // RFC 6585
    }