diff --git a/sip/msg_parse.go b/sip/msg_parse.go index 88d8995..6786a04 100644 --- a/sip/msg_parse.go +++ b/sip/msg_parse.go @@ -5,10 +5,10 @@ package sip import ( - "bytes" "errors" "fmt" "github.com/jart/gosip/sdp" + "strings" ) @@ -16,12 +16,13 @@ import ( //line msg_parse.go:18 const msg_start int = 1 -const msg_first_final int = 611 +const msg_first_final int = 634 const msg_error int = 0 -const msg_en_svalue int = 34 -const msg_en_xheader int = 43 -const msg_en_header int = 50 +const msg_en_avalue int = 34 +const msg_en_svalue int = 129 +const msg_en_xheader int = 138 +const msg_en_header int = 145 const msg_en_main int = 1 @@ -41,16 +42,18 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { return nil, nil } msg = new(Msg) + fromp := &msg.From + top := &msg.To viap := &msg.Via routep := &msg.Route rroutep := &msg.RecordRoute contactp := &msg.Contact + paidp := &msg.PAssertedIdentity + rpidp := &msg.RemotePartyID cs := 0 p := 0 pe := len(data) eof := len(data) - //stack := make([]int, 2) - //top := 0 line := 1 linep := 0 buf := make([]byte, len(data)) @@ -58,17 +61,19 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { mark := 0 clen := 0 ctype := "" - var b1 string + var name string var hex byte - var dest *string + var value *string + var addr *Addr + var addrpp ***Addr -//line msg_parse.go:67 +//line msg_parse.go:72 { cs = msg_start } -//line msg_parse.go:72 +//line msg_parse.go:77 { var _widec int16 if p == pe { @@ -103,8 +108,8 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_12 case 13: goto st_case_13 - case 611: - goto st_case_611 + case 634: + goto st_case_634 case 14: goto st_case_14 case 15: @@ -161,12 +166,8 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_40 case 41: goto st_case_41 - case 612: - goto st_case_612 case 42: goto st_case_42 - case 613: - goto st_case_613 case 43: goto st_case_43 case 44: @@ -175,8 +176,6 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_45 case 46: goto st_case_46 - case 614: - goto st_case_614 case 47: goto st_case_47 case 48: @@ -187,8 +186,6 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_50 case 51: goto st_case_51 - case 615: - goto st_case_615 case 52: goto st_case_52 case 53: @@ -211,8 +208,12 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_61 case 62: goto st_case_62 + case 635: + goto st_case_635 case 63: goto st_case_63 + case 636: + goto st_case_636 case 64: goto st_case_64 case 65: @@ -223,6 +224,8 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_67 case 68: goto st_case_68 + case 637: + goto st_case_637 case 69: goto st_case_69 case 70: @@ -261,6 +264,8 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_86 case 87: goto st_case_87 + case 638: + goto st_case_638 case 88: goto st_case_88 case 89: @@ -299,8 +304,12 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_105 case 106: goto st_case_106 + case 639: + goto st_case_639 case 107: goto st_case_107 + case 640: + goto st_case_640 case 108: goto st_case_108 case 109: @@ -309,6 +318,8 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_110 case 111: goto st_case_111 + case 641: + goto st_case_641 case 112: goto st_case_112 case 113: @@ -359,8 +370,12 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_135 case 136: goto st_case_136 + case 642: + goto st_case_642 case 137: goto st_case_137 + case 643: + goto st_case_643 case 138: goto st_case_138 case 139: @@ -369,18 +384,20 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_140 case 141: goto st_case_141 + case 644: + goto st_case_644 case 142: goto st_case_142 case 143: goto st_case_143 case 144: goto st_case_144 - case 616: - goto st_case_616 case 145: goto st_case_145 case 146: goto st_case_146 + case 645: + goto st_case_645 case 147: goto st_case_147 case 148: @@ -443,8 +460,6 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_176 case 177: goto st_case_177 - case 617: - goto st_case_617 case 178: goto st_case_178 case 179: @@ -569,6 +584,8 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_238 case 239: goto st_case_239 + case 646: + goto st_case_646 case 240: goto st_case_240 case 241: @@ -643,8 +660,6 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_275 case 276: goto st_case_276 - case 618: - goto st_case_618 case 277: goto st_case_277 case 278: @@ -853,8 +868,6 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_379 case 380: goto st_case_380 - case 619: - goto st_case_619 case 381: goto st_case_381 case 382: @@ -979,8 +992,6 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_441 case 442: goto st_case_442 - case 620: - goto st_case_620 case 443: goto st_case_443 case 444: @@ -1051,8 +1062,6 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_476 case 477: goto st_case_477 - case 621: - goto st_case_621 case 478: goto st_case_478 case 479: @@ -1123,8 +1132,6 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_511 case 512: goto st_case_512 - case 622: - goto st_case_622 case 513: goto st_case_513 case 514: @@ -1187,8 +1194,6 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_542 case 543: goto st_case_543 - case 623: - goto st_case_623 case 544: goto st_case_544 case 545: @@ -1271,8 +1276,6 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_583 case 584: goto st_case_584 - case 624: - goto st_case_624 case 585: goto st_case_585 case 586: @@ -1319,12 +1322,60 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_606 case 607: goto st_case_607 + case 647: + goto st_case_647 case 608: goto st_case_608 case 609: goto st_case_609 case 610: goto st_case_610 + case 611: + goto st_case_611 + case 612: + goto st_case_612 + case 613: + goto st_case_613 + case 614: + goto st_case_614 + case 615: + goto st_case_615 + case 616: + goto st_case_616 + case 617: + goto st_case_617 + case 618: + goto st_case_618 + case 619: + goto st_case_619 + case 620: + goto st_case_620 + case 621: + goto st_case_621 + case 622: + goto st_case_622 + case 623: + goto st_case_623 + case 624: + goto st_case_624 + case 625: + goto st_case_625 + case 626: + goto st_case_626 + case 627: + goto st_case_627 + case 628: + goto st_case_628 + case 629: + goto st_case_629 + case 630: + goto st_case_630 + case 631: + goto st_case_631 + case 632: + goto st_case_632 + case 633: + goto st_case_633 } goto st_out st_case_1: @@ -1363,22 +1414,43 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto tr0 } goto st0 -tr73: -//line msg_parse.rl:136 +tr242: +//line msg_parse.rl:144 + + p-- + + {goto st138 } + +//line msg_parse.rl:138 + + p-- + + {goto st138 } + + goto st0 +tr274: +//line msg_parse.rl:138 + + p-- + + {goto st138 } + + goto st0 +tr463: +//line msg_parse.rl:144 - dest = nil; p-- - {goto st43 } + {goto st138 } goto st0 -//line msg_parse.go:1376 +//line msg_parse.go:1448 st_case_0: st0: cs = 0 goto _out tr0: -//line msg_parse.rl:55 +//line msg_parse.rl:59 mark = p @@ -1388,7 +1460,7 @@ tr0: goto _test_eof2 } st_case_2: -//line msg_parse.go:1392 +//line msg_parse.go:1464 switch data[p] { case 32: goto tr3 @@ -1425,7 +1497,7 @@ tr0: } goto st0 tr3: -//line msg_parse.rl:86 +//line msg_parse.rl:99 msg.Method = string(data[mark:p]) @@ -1435,13 +1507,13 @@ tr3: goto _test_eof3 } st_case_3: -//line msg_parse.go:1439 +//line msg_parse.go:1511 if data[p] == 32 { goto st0 } goto tr5 tr5: -//line msg_parse.rl:55 +//line msg_parse.rl:59 mark = p @@ -1451,13 +1523,13 @@ tr5: goto _test_eof4 } st_case_4: -//line msg_parse.go:1455 +//line msg_parse.go:1527 if data[p] == 32 { goto tr7 } goto st4 tr7: -//line msg_parse.rl:98 +//line msg_parse.rl:111 msg.Request, err = ParseURIBytes(data[mark:p]) if err != nil { return nil, err } @@ -1468,7 +1540,7 @@ tr7: goto _test_eof5 } st_case_5: -//line msg_parse.go:1472 +//line msg_parse.go:1544 if data[p] == 83 { goto st6 } @@ -1510,7 +1582,7 @@ tr7: } goto st0 tr12: -//line msg_parse.rl:90 +//line msg_parse.rl:103 msg.VersionMajor = msg.VersionMajor * 10 + (data[p] - 0x30) @@ -1520,7 +1592,7 @@ tr12: goto _test_eof10 } st_case_10: -//line msg_parse.go:1524 +//line msg_parse.go:1596 if data[p] == 46 { goto st11 } @@ -1538,7 +1610,7 @@ tr12: } goto st0 tr14: -//line msg_parse.rl:94 +//line msg_parse.rl:107 msg.VersionMinor = msg.VersionMinor * 10 + (data[p] - 0x30) @@ -1548,7 +1620,7 @@ tr14: goto _test_eof12 } st_case_12: -//line msg_parse.go:1552 +//line msg_parse.go:1624 if data[p] == 13 { goto st13 } @@ -1557,7 +1629,7 @@ tr14: } goto st0 tr36: -//line msg_parse.rl:107 +//line msg_parse.rl:120 msg.Phrase = string(buf[0:amt]) @@ -1567,28 +1639,28 @@ tr36: goto _test_eof13 } st_case_13: -//line msg_parse.go:1571 +//line msg_parse.go:1643 if data[p] == 10 { goto tr16 } goto st0 tr16: -//line msg_parse.rl:224 +//line msg_parse.rl:238 line++; linep = p; -//line msg_parse.rl:111 +//line msg_parse.rl:129 - {goto st50 } + {goto st145 } - goto st611 - st611: + goto st634 + st634: if p++; p == pe { - goto _test_eof611 + goto _test_eof634 } - st_case_611: -//line msg_parse.go:1589 + st_case_634: +//line msg_parse.go:1661 goto st0 tr2: -//line msg_parse.rl:55 +//line msg_parse.rl:59 mark = p @@ -1598,7 +1670,7 @@ tr2: goto _test_eof14 } st_case_14: -//line msg_parse.go:1602 +//line msg_parse.go:1674 switch data[p] { case 32: goto tr3 @@ -1725,7 +1797,7 @@ tr2: } goto st0 tr20: -//line msg_parse.rl:90 +//line msg_parse.rl:103 msg.VersionMajor = msg.VersionMajor * 10 + (data[p] - 0x30) @@ -1735,7 +1807,7 @@ tr20: goto _test_eof18 } st_case_18: -//line msg_parse.go:1739 +//line msg_parse.go:1811 if data[p] == 46 { goto st19 } @@ -1753,7 +1825,7 @@ tr20: } goto st0 tr22: -//line msg_parse.rl:94 +//line msg_parse.rl:107 msg.VersionMinor = msg.VersionMinor * 10 + (data[p] - 0x30) @@ -1763,7 +1835,7 @@ tr22: goto _test_eof20 } st_case_20: -//line msg_parse.go:1767 +//line msg_parse.go:1839 if data[p] == 32 { goto st21 } @@ -1781,7 +1853,7 @@ tr22: } goto st0 tr24: -//line msg_parse.rl:103 +//line msg_parse.rl:116 msg.Status = msg.Status * 10 + (int(data[p]) - 0x30) @@ -1791,13 +1863,13 @@ tr24: goto _test_eof22 } st_case_22: -//line msg_parse.go:1795 +//line msg_parse.go:1867 if 48 <= data[p] && data[p] <= 57 { goto tr25 } goto st0 tr25: -//line msg_parse.rl:103 +//line msg_parse.rl:116 msg.Status = msg.Status * 10 + (int(data[p]) - 0x30) @@ -1807,13 +1879,13 @@ tr25: goto _test_eof23 } st_case_23: -//line msg_parse.go:1811 +//line msg_parse.go:1883 if 48 <= data[p] && data[p] <= 57 { goto tr26 } goto st0 tr26: -//line msg_parse.rl:103 +//line msg_parse.rl:116 msg.Status = msg.Status * 10 + (int(data[p]) - 0x30) @@ -1823,7 +1895,7 @@ tr26: goto _test_eof24 } st_case_24: -//line msg_parse.go:1827 +//line msg_parse.go:1899 if data[p] == 32 { goto st25 } @@ -1887,25 +1959,25 @@ tr26: } goto st0 tr28: -//line msg_parse.rl:59 +//line msg_parse.rl:63 amt = 0 -//line msg_parse.rl:63 +//line msg_parse.rl:67 buf[amt] = data[p] amt++ goto st26 tr35: -//line msg_parse.rl:63 +//line msg_parse.rl:67 buf[amt] = data[p] amt++ goto st26 tr44: -//line msg_parse.rl:76 +//line msg_parse.rl:89 hex += unhex(data[p]) buf[amt] = hex @@ -1917,7 +1989,7 @@ tr44: goto _test_eof26 } st_case_26: -//line msg_parse.go:1921 +//line msg_parse.go:1993 switch data[p] { case 9: goto tr35 @@ -1955,26 +2027,26 @@ tr44: switch { case data[p] < 240: if 224 <= data[p] && data[p] <= 239 { - goto st30 + goto tr39 } case data[p] > 247: switch { case data[p] > 251: if 252 <= data[p] && data[p] <= 253 { - goto st33 + goto tr42 } case data[p] >= 248: - goto st32 + goto tr41 } default: - goto st31 + goto tr40 } default: - goto st29 + goto tr38 } goto st0 tr29: -//line msg_parse.rl:59 +//line msg_parse.rl:63 amt = 0 @@ -1984,7 +2056,7 @@ tr29: goto _test_eof27 } st_case_27: -//line msg_parse.go:1988 +//line msg_parse.go:2060 switch { case data[p] < 65: if 48 <= data[p] && data[p] <= 57 { @@ -1999,7 +2071,7 @@ tr29: } goto st0 tr43: -//line msg_parse.rl:72 +//line msg_parse.rl:85 hex = unhex(data[p]) * 16 @@ -2009,7 +2081,7 @@ tr43: goto _test_eof28 } st_case_28: -//line msg_parse.go:2013 +//line msg_parse.go:2085 switch { case data[p] < 65: if 48 <= data[p] && data[p] <= 57 { @@ -2024,83 +2096,143 @@ tr43: } goto st0 tr30: -//line msg_parse.rl:59 +//line msg_parse.rl:63 amt = 0 +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st29 +tr38: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + goto st29 st29: if p++; p == pe { goto _test_eof29 } st_case_29: -//line msg_parse.go:2038 +//line msg_parse.go:2122 if 128 <= data[p] && data[p] <= 191 { goto tr35 } goto st0 tr31: -//line msg_parse.rl:59 +//line msg_parse.rl:63 amt = 0 +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st30 +tr39: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + goto st30 st30: if p++; p == pe { goto _test_eof30 } st_case_30: -//line msg_parse.go:2054 +//line msg_parse.go:2150 if 128 <= data[p] && data[p] <= 191 { - goto st29 + goto tr38 } goto st0 tr32: -//line msg_parse.rl:59 +//line msg_parse.rl:63 amt = 0 +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st31 +tr40: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + goto st31 st31: if p++; p == pe { goto _test_eof31 } st_case_31: -//line msg_parse.go:2070 +//line msg_parse.go:2178 if 128 <= data[p] && data[p] <= 191 { - goto st30 + goto tr39 } goto st0 tr33: -//line msg_parse.rl:59 +//line msg_parse.rl:63 amt = 0 +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st32 +tr41: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + goto st32 st32: if p++; p == pe { goto _test_eof32 } st_case_32: -//line msg_parse.go:2086 +//line msg_parse.go:2206 if 128 <= data[p] && data[p] <= 191 { - goto st31 + goto tr40 } goto st0 tr34: -//line msg_parse.rl:59 +//line msg_parse.rl:63 amt = 0 +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st33 +tr42: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + goto st33 st33: if p++; p == pe { goto _test_eof33 } st_case_33: -//line msg_parse.go:2102 +//line msg_parse.go:2234 if 128 <= data[p] && data[p] <= 191 { - goto st32 + goto tr41 } goto st0 st34: @@ -2118,42 +2250,62 @@ tr34: switch _widec { case 9: goto tr45 - case 269: - goto tr51 + case 32: + goto tr45 + case 33: + goto tr46 + case 34: + goto tr47 + case 37: + goto tr46 + case 39: + goto tr46 + case 60: + goto tr48 + case 126: + goto tr46 case 525: - goto tr52 + goto tr50 } switch { - case _widec < 224: + case _widec < 48: switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { + case _widec > 43: + if 45 <= _widec && _widec <= 46 { goto tr46 } - case _widec >= 32: - goto tr45 + case _widec >= 42: + goto tr46 } - case _widec > 239: + case _widec > 57: switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr48 + case _widec < 95: + if 65 <= _widec && _widec <= 90 { + goto tr49 } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr50 + case _widec > 96: + if 97 <= _widec && _widec <= 122 { + goto tr49 } default: - goto tr49 + goto tr46 } default: - goto tr47 + goto tr46 } goto st0 tr45: -//line msg_parse.rl:55 +//line msg_parse.rl:174 - mark = p + addr = new(Addr) + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") goto st35 st35: @@ -2161,7 +2313,7 @@ tr45: goto _test_eof35 } st_case_35: -//line msg_parse.go:2165 +//line msg_parse.go:2317 _widec = int16(data[p]) if 13 <= data[p] && data[p] <= 13 { _widec = 256 + (int16(data[p]) - 0) @@ -2172,58 +2324,88 @@ tr45: switch _widec { case 9: goto st35 - case 269: - goto st41 + case 32: + goto st35 + case 34: + goto st36 + case 60: + goto st39 case 525: - goto st42 + goto st98 + } + goto st0 +tr47: +//line msg_parse.rl:174 + + addr = new(Addr) + + goto st36 + st36: + if p++; p == pe { + goto _test_eof36 + } + st_case_36: +//line msg_parse.go:2349 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr55 + case 34: + goto tr56 + case 92: + goto tr57 + case 525: + goto tr63 } switch { case _widec < 224: switch { - case _widec > 127: + case _widec > 126: if 192 <= _widec && _widec <= 223 { - goto st36 + goto tr58 } case _widec >= 32: - goto st35 + goto tr55 } case _widec > 239: switch { case _widec < 248: if 240 <= _widec && _widec <= 247 { - goto st38 + goto tr60 } case _widec > 251: if 252 <= _widec && _widec <= 253 { - goto st40 + goto tr62 } default: - goto st39 + goto tr61 } default: - goto st37 + goto tr59 } goto st0 -tr46: -//line msg_parse.rl:55 +tr55: +//line msg_parse.rl:63 - mark = p + amt = 0 - goto st36 - st36: - if p++; p == pe { - goto _test_eof36 - } - st_case_36: -//line msg_parse.go:2219 - if 128 <= data[p] && data[p] <= 191 { - goto st35 - } - goto st0 -tr47: -//line msg_parse.rl:55 +//line msg_parse.rl:67 - mark = p + buf[amt] = data[p] + amt++ + + goto st37 +tr64: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ goto st37 st37: @@ -2231,15 +2413,61 @@ tr47: goto _test_eof37 } st_case_37: -//line msg_parse.go:2235 - if 128 <= data[p] && data[p] <= 191 { - goto st36 +//line msg_parse.go:2417 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr64 + case 34: + goto st38 + case 92: + goto st116 + case 525: + goto st122 + } + switch { + case _widec < 224: + switch { + case _widec > 126: + if 192 <= _widec && _widec <= 223 { + goto tr67 + } + case _widec >= 32: + goto tr64 + } + case _widec > 239: + switch { + case _widec < 248: + if 240 <= _widec && _widec <= 247 { + goto tr69 + } + case _widec > 251: + if 252 <= _widec && _widec <= 253 { + goto tr71 + } + default: + goto tr70 + } + default: + goto tr68 } goto st0 -tr48: -//line msg_parse.rl:55 +tr56: +//line msg_parse.rl:63 - mark = p + amt = 0 + + goto st38 +tr73: +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") goto st38 st38: @@ -2247,15 +2475,54 @@ tr48: goto _test_eof38 } st_case_38: -//line msg_parse.go:2251 - if 128 <= data[p] && data[p] <= 191 { - goto st37 +//line msg_parse.go:2479 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr73 + case 32: + goto tr73 + case 60: + goto tr74 + case 525: + goto tr75 } goto st0 -tr49: -//line msg_parse.rl:55 +tr48: +//line msg_parse.rl:174 - mark = p + addr = new(Addr) + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st39 +tr74: +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st39 +tr94: +//line msg_parse.rl:72 + + buf[amt] = ' ' + amt++ + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") goto st39 st39: @@ -2263,13 +2530,18 @@ tr49: goto _test_eof39 } st_case_39: -//line msg_parse.go:2267 - if 128 <= data[p] && data[p] <= 191 { - goto st38 +//line msg_parse.go:2534 + switch { + case data[p] > 90: + if 97 <= data[p] && data[p] <= 122 { + goto tr76 + } + case data[p] >= 65: + goto tr76 } goto st0 -tr50: -//line msg_parse.rl:55 +tr76: +//line msg_parse.rl:59 mark = p @@ -2279,145 +2551,196 @@ tr50: goto _test_eof40 } st_case_40: -//line msg_parse.go:2283 - if 128 <= data[p] && data[p] <= 191 { - goto st39 +//line msg_parse.go:2555 + switch data[p] { + case 43: + goto st40 + case 58: + goto st41 + } + switch { + case data[p] < 48: + if 45 <= data[p] && data[p] <= 46 { + goto st40 + } + case data[p] > 57: + switch { + case data[p] > 90: + if 97 <= data[p] && data[p] <= 122 { + goto st40 + } + case data[p] >= 65: + goto st40 + } + default: + goto st40 } goto st0 -tr51: -//line msg_parse.rl:55 - - mark = p - - goto st41 st41: if p++; p == pe { goto _test_eof41 } st_case_41: -//line msg_parse.go:2299 - if data[p] == 10 { - goto tr61 + switch data[p] { + case 33: + goto st42 + case 61: + goto st42 + case 95: + goto st42 + case 126: + goto st42 } - goto st0 -tr61: -//line msg_parse.rl:224 - line++; linep = p; -//line msg_parse.rl:124 -{ - b := data[mark:p - 1] - if dest != nil { - *dest = string(b) - } else { - if msg.Headers == nil { - msg.Headers = Headers{} - } - msg.Headers[b1] = string(b) + switch { + case data[p] < 63: + if 36 <= data[p] && data[p] <= 59 { + goto st42 } + case data[p] > 90: + if 97 <= data[p] && data[p] <= 122 { + goto st42 + } + default: + goto st42 } -//line msg_parse.rl:111 - - {goto st50 } - - goto st612 - st612: - if p++; p == pe { - goto _test_eof612 - } - st_case_612: -//line msg_parse.go:2329 goto st0 -tr52: -//line msg_parse.rl:55 - - mark = p - - goto st42 st42: if p++; p == pe { goto _test_eof42 } st_case_42: -//line msg_parse.go:2342 - if data[p] == 10 { - goto tr62 + switch data[p] { + case 33: + goto st42 + case 62: + goto tr80 + case 95: + goto st42 + case 126: + goto st42 } - goto st0 -tr62: -//line msg_parse.rl:224 - line++; linep = p; -//line msg_parse.rl:124 -{ - b := data[mark:p - 1] - if dest != nil { - *dest = string(b) - } else { - if msg.Headers == nil { - msg.Headers = Headers{} - } - msg.Headers[b1] = string(b) + switch { + case data[p] < 61: + if 36 <= data[p] && data[p] <= 59 { + goto st42 + } + case data[p] > 90: + if 97 <= data[p] && data[p] <= 122 { + goto st42 } + default: + goto st42 } -//line msg_parse.rl:111 + goto st0 +tr80: +//line msg_parse.rl:182 - {goto st50 } + addr.Uri, err = ParseURIBytes(data[mark:p]) + if err != nil { return nil, err } - goto st613 - st613: - if p++; p == pe { - goto _test_eof613 - } - st_case_613: -//line msg_parse.go:2372 - switch data[p] { - case 9: - goto st35 - case 32: - goto st35 - } - goto st0 + goto st43 +tr81: +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st43 st43: if p++; p == pe { goto _test_eof43 } st_case_43: - switch data[p] { - case 33: - goto tr63 - case 37: - goto tr63 - case 39: - goto tr63 - case 126: - goto tr63 - } - switch { - case data[p] < 48: - switch { - case data[p] > 43: - if 45 <= data[p] && data[p] <= 46 { - goto tr63 - } - case data[p] >= 42: - goto tr63 - } - case data[p] > 57: - switch { - case data[p] > 90: - if 95 <= data[p] && data[p] <= 122 { - goto tr63 - } - case data[p] >= 65: - goto tr63 +//line msg_parse.go:2659 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 } - default: - goto tr63 + } + switch _widec { + case 9: + goto tr81 + case 32: + goto tr81 + case 44: + goto tr82 + case 59: + goto st57 + case 269: + goto tr84 + case 525: + goto tr85 } goto st0 -tr63: -//line msg_parse.rl:55 +tr86: +//line msg_parse.rl:174 - mark = p + addr = new(Addr) + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st44 +tr82: +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st44 +tr117: +//line msg_parse.rl:149 + + name = string(data[mark:p]) + +//line msg_parse.rl:187 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st44 +tr130: +//line msg_parse.rl:187 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } goto st44 st44: @@ -2425,50 +2748,93 @@ tr63: goto _test_eof44 } st_case_44: -//line msg_parse.go:2429 - switch data[p] { - case 9: - goto tr64 +//line msg_parse.go:2752 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr86 case 32: - goto tr64 + goto tr86 case 33: - goto st44 + goto tr46 + case 34: + goto tr47 case 37: - goto st44 + goto tr46 case 39: - goto st44 - case 58: - goto tr66 + goto tr46 + case 60: + goto tr48 case 126: - goto st44 + goto tr46 + case 525: + goto tr88 } switch { - case data[p] < 48: + case _widec < 48: switch { - case data[p] > 43: - if 45 <= data[p] && data[p] <= 46 { - goto st44 + case _widec > 43: + if 45 <= _widec && _widec <= 46 { + goto tr46 } - case data[p] >= 42: - goto st44 + case _widec >= 42: + goto tr46 } - case data[p] > 57: + case _widec > 57: switch { - case data[p] > 90: - if 95 <= data[p] && data[p] <= 122 { - goto st44 + case _widec < 95: + if 65 <= _widec && _widec <= 90 { + goto tr87 } - case data[p] >= 65: - goto st44 + case _widec > 96: + if 97 <= _widec && _widec <= 122 { + goto tr87 + } + default: + goto tr46 } default: - goto st44 + goto tr46 } goto st0 -tr64: -//line msg_parse.rl:115 +tr90: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st45 +tr46: +//line msg_parse.rl:174 + + addr = new(Addr) + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st45 +tr93: +//line msg_parse.rl:72 - b1 = string(bytes.ToLower(data[mark:p])) + buf[amt] = ' ' + amt++ + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ goto st45 st45: @@ -2476,20 +2842,62 @@ tr64: goto _test_eof45 } st_case_45: -//line msg_parse.go:2480 - switch data[p] { +//line msg_parse.go:2846 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { case 9: - goto st45 + goto st46 case 32: - goto st45 - case 58: goto st46 + case 33: + goto tr90 + case 37: + goto tr90 + case 39: + goto tr90 + case 126: + goto tr90 + case 525: + goto st47 + } + switch { + case _widec < 48: + switch { + case _widec > 43: + if 45 <= _widec && _widec <= 46 { + goto tr90 + } + case _widec >= 42: + goto tr90 + } + case _widec > 57: + switch { + case _widec > 90: + if 95 <= _widec && _widec <= 122 { + goto tr90 + } + case _widec >= 65: + goto tr90 + } + default: + goto tr90 } goto st0 -tr66: -//line msg_parse.rl:115 +tr92: +//line msg_parse.rl:72 + + buf[amt] = ' ' + amt++ + +//line msg_parse.rl:178 - b1 = string(bytes.ToLower(data[mark:p])) + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") goto st46 st46: @@ -2497,7 +2905,7 @@ tr66: goto _test_eof46 } st_case_46: -//line msg_parse.go:2501 +//line msg_parse.go:2909 _widec = int16(data[p]) if 13 <= data[p] && data[p] <= 13 { _widec = 256 + (int16(data[p]) - 0) @@ -2507,49 +2915,68 @@ tr66: } switch _widec { case 9: - goto st46 + goto tr92 case 32: - goto st46 - case 269: - goto tr69 + goto tr92 + case 33: + goto tr93 + case 37: + goto tr93 + case 39: + goto tr93 + case 60: + goto tr94 + case 126: + goto tr93 case 525: - goto st47 + goto tr95 } switch { - case _widec > 12: - if 14 <= _widec { - goto tr69 + case _widec < 48: + switch { + case _widec > 43: + if 45 <= _widec && _widec <= 46 { + goto tr93 + } + case _widec >= 42: + goto tr93 + } + case _widec > 57: + switch { + case _widec > 90: + if 95 <= _widec && _widec <= 122 { + goto tr93 + } + case _widec >= 65: + goto tr93 } default: - goto tr69 + goto tr93 } goto st0 -tr69: -//line msg_parse.rl:119 +tr95: +//line msg_parse.rl:72 - p-- + buf[amt] = ' ' + amt++ + +//line msg_parse.rl:178 - {goto st34 } + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") - goto st614 - st614: - if p++; p == pe { - goto _test_eof614 - } - st_case_614: -//line msg_parse.go:2541 - goto st0 + goto st47 st47: if p++; p == pe { goto _test_eof47 } st_case_47: +//line msg_parse.go:2974 if data[p] == 10 { - goto tr71 + goto tr96 } goto st0 -tr71: -//line msg_parse.rl:224 +tr96: +//line msg_parse.rl:238 line++; linep = p; goto st48 st48: @@ -2557,7 +2984,7 @@ tr71: goto _test_eof48 } st_case_48: -//line msg_parse.go:2561 +//line msg_parse.go:2988 switch data[p] { case 9: goto st49 @@ -2565,494 +2992,246 @@ tr71: goto st49 } goto st0 +tr98: +//line msg_parse.rl:72 + + buf[amt] = ' ' + amt++ + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st49 st49: if p++; p == pe { goto _test_eof49 } st_case_49: - switch data[p] { +//line msg_parse.go:3012 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { case 9: - goto st49 + goto tr98 case 32: - goto st49 + goto tr98 + case 33: + goto tr93 + case 37: + goto tr93 + case 39: + goto tr93 + case 60: + goto tr94 + case 126: + goto tr93 + case 525: + goto tr99 + } + switch { + case _widec < 48: + switch { + case _widec > 43: + if 45 <= _widec && _widec <= 46 { + goto tr93 + } + case _widec >= 42: + goto tr93 + } + case _widec > 57: + switch { + case _widec > 90: + if 95 <= _widec && _widec <= 122 { + goto tr93 + } + case _widec >= 65: + goto tr93 + } + default: + goto tr93 } - goto tr69 + goto st0 +tr201: +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st50 +tr99: +//line msg_parse.rl:72 + + buf[amt] = ' ' + amt++ + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st50 st50: if p++; p == pe { goto _test_eof50 } st_case_50: +//line msg_parse.go:3083 + if data[p] == 10 { + goto tr100 + } + goto st0 +tr100: +//line msg_parse.rl:238 + line++; linep = p; + goto st51 + st51: + if p++; p == pe { + goto _test_eof51 + } + st_case_51: +//line msg_parse.go:3097 switch data[p] { - case 13: - goto st51 - case 65: - goto tr75 - case 66: - goto tr76 - case 67: - goto tr77 - case 68: - goto tr78 - case 69: - goto tr79 - case 70: - goto st267 - case 73: - goto tr81 - case 75: - goto tr82 - case 76: - goto st294 - case 77: - goto tr84 - case 79: - goto tr85 - case 80: - goto tr86 - case 82: - goto tr87 - case 83: - goto tr88 - case 84: - goto tr89 - case 85: - goto tr90 - case 86: - goto st575 - case 87: - goto tr92 - case 97: - goto tr75 - case 98: - goto tr76 - case 99: - goto tr77 - case 100: - goto tr78 - case 101: - goto tr79 - case 102: - goto st267 - case 105: - goto tr81 - case 107: - goto tr82 - case 108: - goto st294 - case 109: - goto tr84 - case 111: - goto tr85 - case 112: - goto tr86 - case 114: - goto tr87 - case 115: - goto tr88 - case 116: - goto tr89 - case 117: - goto tr90 - case 118: - goto st575 - case 119: - goto tr92 + case 9: + goto st52 + case 32: + goto st52 } - goto tr73 - st51: + goto st0 + st52: if p++; p == pe { - goto _test_eof51 + goto _test_eof52 } - st_case_51: - if data[p] == 10 { - goto tr93 + st_case_52: + switch data[p] { + case 9: + goto st52 + case 32: + goto st52 + case 60: + goto st39 } goto st0 -tr216: -//line msg_parse.rl:224 - line++; linep = p; -//line msg_parse.rl:111 +tr102: +//line msg_parse.rl:67 - {goto st50 } + buf[amt] = data[p] + amt++ - goto st615 -tr101: -//line msg_parse.rl:119 + goto st53 +tr87: +//line msg_parse.rl:174 - p-- + addr = new(Addr) + +//line msg_parse.rl:59 - {goto st34 } + mark = p - goto st615 -tr93: -//line msg_parse.rl:224 - line++; linep = p; -//line msg_parse.rl:51 +//line msg_parse.rl:63 - {p++; cs = 615; goto _out } + amt = 0 - goto st615 - st615: - if p++; p == pe { - goto _test_eof615 - } - st_case_615: -//line msg_parse.go:2701 - goto st0 -tr75: -//line msg_parse.rl:55 +//line msg_parse.rl:67 - mark = p + buf[amt] = data[p] + amt++ - goto st52 - st52: - if p++; p == pe { - goto _test_eof52 - } - st_case_52: -//line msg_parse.go:2714 - switch data[p] { - case 9: - goto tr94 - case 32: - goto tr94 - case 58: - goto tr95 - case 67: - goto st58 - case 76: - goto st87 - case 85: - goto st106 - case 99: - goto st58 - case 108: - goto st87 - case 117: - goto st106 - } - goto st0 -tr94: -//line msg_parse.rl:303 -dest=&msg.AcceptContact - goto st53 -tr109: -//line msg_parse.rl:302 -dest=&msg.Accept - goto st53 -tr128: -//line msg_parse.rl:304 -dest=&msg.AcceptEncoding - goto st53 -tr137: -//line msg_parse.rl:305 -dest=&msg.AcceptLanguage - goto st53 -tr148: -//line msg_parse.rl:308 -dest=&msg.AlertInfo - goto st53 -tr152: -//line msg_parse.rl:306 -dest=&msg.Allow - goto st53 -tr161: -//line msg_parse.rl:307 -dest=&msg.AllowEvents - goto st53 -tr181: -//line msg_parse.rl:309 -dest=&msg.AuthenticationInfo - goto st53 -tr191: -//line msg_parse.rl:310 -dest=&msg.Authorization - goto st53 -tr193: -//line msg_parse.rl:327 -dest=&msg.ReferredBy - goto st53 -tr238: -//line msg_parse.rl:314 -dest=&msg.CallInfo - goto st53 -tr284: -//line msg_parse.rl:311 -dest=&msg.ContentDisposition - goto st53 -tr293: -//line msg_parse.rl:313 -dest=&msg.ContentEncoding - goto st53 -tr303: -//line msg_parse.rl:312 -dest=&msg.ContentLanguage - goto st53 -tr335: -//line msg_parse.rl:315 -dest=&msg.Date - goto st53 -tr348: -//line msg_parse.rl:316 -dest=&msg.ErrorInfo - goto st53 -tr353: -//line msg_parse.rl:317 -dest=&msg.Event - goto st53 -tr400: -//line msg_parse.rl:318 -dest=&msg.InReplyTo - goto st53 -tr402: -//line msg_parse.rl:332 -dest=&msg.Supported - goto st53 -tr439: -//line msg_parse.rl:320 -dest=&msg.MIMEVersion - goto st53 -tr466: -//line msg_parse.rl:321 -dest=&msg.Organization - goto st53 -tr515: -//line msg_parse.rl:322 -dest=&msg.Priority - goto st53 -tr534: -//line msg_parse.rl:323 -dest=&msg.ProxyAuthenticate - goto st53 -tr544: -//line msg_parse.rl:324 -dest=&msg.ProxyAuthorization - goto st53 -tr552: -//line msg_parse.rl:325 -dest=&msg.ProxyRequire - goto st53 -tr554: -//line msg_parse.rl:326 -dest=&msg.ReferTo - goto st53 -tr643: -//line msg_parse.rl:319 -dest=&msg.ReplyTo - goto st53 -tr649: -//line msg_parse.rl:328 -dest=&msg.Require - goto st53 -tr659: -//line msg_parse.rl:329 -dest=&msg.RetryAfter - goto st53 -tr685: -//line msg_parse.rl:331 -dest=&msg.Subject - goto st53 -tr693: -//line msg_parse.rl:330 -dest=&msg.Server - goto st53 -tr737: -//line msg_parse.rl:333 -dest=&msg.Timestamp - goto st53 -tr739: -//line msg_parse.rl:306 -dest=&msg.Allow -//line msg_parse.rl:307 -dest=&msg.AllowEvents - goto st53 -tr752: -//line msg_parse.rl:334 -dest=&msg.Unsupported - goto st53 -tr762: -//line msg_parse.rl:335 -dest=&msg.UserAgent - goto st53 -tr794: -//line msg_parse.rl:336 -dest=&msg.Warning - goto st53 -tr810: -//line msg_parse.rl:337 -dest=&msg.WWWAuthenticate goto st53 st53: if p++; p == pe { goto _test_eof53 } st_case_53: -//line msg_parse.go:2891 - switch data[p] { +//line msg_parse.go:3150 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { case 9: - goto st53 + goto st46 case 32: - goto st53 + goto st46 + case 33: + goto tr90 + case 37: + goto tr90 + case 39: + goto tr90 + case 42: + goto tr90 + case 43: + goto tr102 case 58: goto st54 + case 126: + goto tr90 + case 525: + goto st47 + } + switch { + case _widec < 65: + switch { + case _widec > 46: + if 48 <= _widec && _widec <= 57 { + goto tr102 + } + case _widec >= 45: + goto tr102 + } + case _widec > 90: + switch { + case _widec > 96: + if 97 <= _widec && _widec <= 122 { + goto tr102 + } + case _widec >= 95: + goto tr90 + } + default: + goto tr102 } goto st0 -tr95: -//line msg_parse.rl:303 -dest=&msg.AcceptContact - goto st54 -tr111: -//line msg_parse.rl:302 -dest=&msg.Accept - goto st54 -tr129: -//line msg_parse.rl:304 -dest=&msg.AcceptEncoding - goto st54 -tr138: -//line msg_parse.rl:305 -dest=&msg.AcceptLanguage - goto st54 -tr149: -//line msg_parse.rl:308 -dest=&msg.AlertInfo - goto st54 -tr154: -//line msg_parse.rl:306 -dest=&msg.Allow - goto st54 -tr162: -//line msg_parse.rl:307 -dest=&msg.AllowEvents - goto st54 -tr182: -//line msg_parse.rl:309 -dest=&msg.AuthenticationInfo - goto st54 -tr192: -//line msg_parse.rl:310 -dest=&msg.Authorization - goto st54 -tr194: -//line msg_parse.rl:327 -dest=&msg.ReferredBy - goto st54 -tr239: -//line msg_parse.rl:314 -dest=&msg.CallInfo - goto st54 -tr285: -//line msg_parse.rl:311 -dest=&msg.ContentDisposition - goto st54 -tr294: -//line msg_parse.rl:313 -dest=&msg.ContentEncoding - goto st54 -tr304: -//line msg_parse.rl:312 -dest=&msg.ContentLanguage - goto st54 -tr336: -//line msg_parse.rl:315 -dest=&msg.Date - goto st54 -tr349: -//line msg_parse.rl:316 -dest=&msg.ErrorInfo - goto st54 -tr354: -//line msg_parse.rl:317 -dest=&msg.Event - goto st54 -tr401: -//line msg_parse.rl:318 -dest=&msg.InReplyTo - goto st54 -tr403: -//line msg_parse.rl:332 -dest=&msg.Supported - goto st54 -tr440: -//line msg_parse.rl:320 -dest=&msg.MIMEVersion - goto st54 -tr467: -//line msg_parse.rl:321 -dest=&msg.Organization - goto st54 -tr516: -//line msg_parse.rl:322 -dest=&msg.Priority - goto st54 -tr535: -//line msg_parse.rl:323 -dest=&msg.ProxyAuthenticate - goto st54 -tr545: -//line msg_parse.rl:324 -dest=&msg.ProxyAuthorization - goto st54 -tr553: -//line msg_parse.rl:325 -dest=&msg.ProxyRequire - goto st54 -tr555: -//line msg_parse.rl:326 -dest=&msg.ReferTo - goto st54 -tr644: -//line msg_parse.rl:319 -dest=&msg.ReplyTo - goto st54 -tr650: -//line msg_parse.rl:328 -dest=&msg.Require - goto st54 -tr660: -//line msg_parse.rl:329 -dest=&msg.RetryAfter - goto st54 -tr686: -//line msg_parse.rl:331 -dest=&msg.Subject - goto st54 -tr694: -//line msg_parse.rl:330 -dest=&msg.Server - goto st54 -tr738: -//line msg_parse.rl:333 -dest=&msg.Timestamp - goto st54 -tr740: -//line msg_parse.rl:306 -dest=&msg.Allow -//line msg_parse.rl:307 -dest=&msg.AllowEvents - goto st54 -tr753: -//line msg_parse.rl:334 -dest=&msg.Unsupported - goto st54 -tr763: -//line msg_parse.rl:335 -dest=&msg.UserAgent - goto st54 -tr795: -//line msg_parse.rl:336 -dest=&msg.Warning - goto st54 -tr811: -//line msg_parse.rl:337 -dest=&msg.WWWAuthenticate - goto st54 st54: if p++; p == pe { goto _test_eof54 } st_case_54: -//line msg_parse.go:3056 + switch data[p] { + case 33: + goto st55 + case 61: + goto st55 + case 95: + goto st55 + case 126: + goto st55 + } + switch { + case data[p] < 63: + if 36 <= data[p] && data[p] <= 58 { + goto st55 + } + case data[p] > 90: + if 97 <= data[p] && data[p] <= 122 { + goto st55 + } + default: + goto st55 + } + goto st0 + st55: + if p++; p == pe { + goto _test_eof55 + } + st_case_55: _widec = int16(data[p]) if 13 <= data[p] && data[p] <= 13 { _widec = 256 + (int16(data[p]) - 0) @@ -3062,413 +3241,1219 @@ dest=&msg.WWWAuthenticate } switch _widec { case 9: - goto st54 + goto tr105 case 32: - goto st54 + goto tr105 + case 33: + goto st55 + case 44: + goto tr106 + case 59: + goto tr107 + case 61: + goto st55 + case 95: + goto st55 + case 126: + goto st55 case 269: - goto tr101 + goto tr108 case 525: - goto st55 + goto tr109 } switch { - case _widec > 12: - if 14 <= _widec { - goto tr101 + case _widec < 63: + if 36 <= _widec && _widec <= 58 { + goto st55 + } + case _widec > 90: + if 97 <= _widec && _widec <= 122 { + goto st55 } default: - goto tr101 + goto st55 } goto st0 - st55: - if p++; p == pe { - goto _test_eof55 - } - st_case_55: - if data[p] == 10 { - goto tr103 - } - goto st0 -tr103: -//line msg_parse.rl:224 - line++; linep = p; +tr105: +//line msg_parse.rl:182 + + addr.Uri, err = ParseURIBytes(data[mark:p]) + if err != nil { return nil, err } + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st56 +tr128: +//line msg_parse.rl:187 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + goto st56 st56: if p++; p == pe { goto _test_eof56 } st_case_56: -//line msg_parse.go:3101 - switch data[p] { +//line msg_parse.go:3317 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { case 9: - goto st57 + goto st56 case 32: + goto st56 + case 44: + goto st44 + case 59: goto st57 + case 525: + goto st91 } goto st0 +tr107: +//line msg_parse.rl:182 + + addr.Uri, err = ParseURIBytes(data[mark:p]) + if err != nil { return nil, err } + + goto st57 +tr118: +//line msg_parse.rl:149 + + name = string(data[mark:p]) + +//line msg_parse.rl:187 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + + goto st57 +tr131: +//line msg_parse.rl:187 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + + goto st57 st57: if p++; p == pe { goto _test_eof57 } st_case_57: - switch data[p] { +//line msg_parse.go:3372 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { case 9: goto st57 case 32: goto st57 + case 33: + goto tr113 + case 37: + goto tr113 + case 39: + goto tr113 + case 126: + goto tr113 + case 525: + goto st88 + } + switch { + case _widec < 48: + switch { + case _widec > 43: + if 45 <= _widec && _widec <= 46 { + goto tr113 + } + case _widec >= 42: + goto tr113 + } + case _widec > 57: + switch { + case _widec > 90: + if 95 <= _widec && _widec <= 122 { + goto tr113 + } + case _widec >= 65: + goto tr113 + } + default: + goto tr113 } - goto tr101 + goto st0 +tr113: +//line msg_parse.rl:59 + + mark = p + + goto st58 st58: if p++; p == pe { goto _test_eof58 } st_case_58: - switch data[p] { - case 67: - goto st59 - case 99: - goto st59 +//line msg_parse.go:3430 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr115 + case 32: + goto tr115 + case 33: + goto st58 + case 37: + goto st58 + case 39: + goto st58 + case 44: + goto tr117 + case 59: + goto tr118 + case 61: + goto tr119 + case 126: + goto st58 + case 269: + goto tr120 + case 525: + goto tr121 + } + switch { + case _widec < 48: + if 42 <= _widec && _widec <= 46 { + goto st58 + } + case _widec > 57: + switch { + case _widec > 90: + if 95 <= _widec && _widec <= 122 { + goto st58 + } + case _widec >= 65: + goto st58 + } + default: + goto st58 } - goto tr73 + goto st0 +tr115: +//line msg_parse.rl:149 + + name = string(data[mark:p]) + +//line msg_parse.rl:187 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st59 st59: if p++; p == pe { goto _test_eof59 } st_case_59: - switch data[p] { - case 69: - goto st60 - case 101: +//line msg_parse.go:3507 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto st59 + case 32: + goto st59 + case 44: + goto st44 + case 59: + goto st57 + case 61: goto st60 + case 525: + goto st84 } - goto tr73 + goto st0 +tr119: +//line msg_parse.rl:149 + + name = string(data[mark:p]) + + goto st60 st60: if p++; p == pe { goto _test_eof60 } st_case_60: - switch data[p] { - case 80: - goto st61 - case 112: - goto st61 +//line msg_parse.go:3541 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } } - goto tr73 + switch _widec { + case 9: + goto st60 + case 32: + goto st60 + case 33: + goto tr125 + case 34: + goto st65 + case 37: + goto tr125 + case 39: + goto tr125 + case 93: + goto tr125 + case 126: + goto tr125 + case 525: + goto st78 + } + switch { + case _widec < 48: + switch { + case _widec > 43: + if 45 <= _widec && _widec <= 46 { + goto tr125 + } + case _widec >= 42: + goto tr125 + } + case _widec > 58: + switch { + case _widec > 91: + if 95 <= _widec && _widec <= 122 { + goto tr125 + } + case _widec >= 65: + goto tr125 + } + default: + goto tr125 + } + goto st0 +tr125: +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st61 +tr129: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st61 st61: if p++; p == pe { goto _test_eof61 } st_case_61: - switch data[p] { - case 84: - goto st62 - case 116: - goto st62 - } - goto tr73 - st62: - if p++; p == pe { - goto _test_eof62 +//line msg_parse.go:3615 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } } - st_case_62: - switch data[p] { + switch _widec { case 9: - goto tr109 + goto tr128 case 32: - goto tr109 - case 45: - goto st63 - case 58: - goto tr111 + goto tr128 + case 33: + goto tr129 + case 37: + goto tr129 + case 39: + goto tr129 + case 44: + goto tr130 + case 59: + goto tr131 + case 93: + goto tr129 + case 126: + goto tr129 + case 269: + goto tr132 + case 525: + goto tr133 } - goto st0 - st63: - if p++; p == pe { - goto _test_eof63 + switch { + case _widec < 48: + if 42 <= _widec && _widec <= 46 { + goto tr129 + } + case _widec > 58: + switch { + case _widec > 91: + if 95 <= _widec && _widec <= 122 { + goto tr129 + } + case _widec >= 65: + goto tr129 + } + default: + goto tr129 } - st_case_63: - switch data[p] { - case 67: - goto st64 - case 69: - goto st71 - case 76: - goto st79 - case 99: + goto st0 +tr84: +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st62 +tr108: +//line msg_parse.rl:182 + + addr.Uri, err = ParseURIBytes(data[mark:p]) + if err != nil { return nil, err } + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st62 +tr120: +//line msg_parse.rl:149 + + name = string(data[mark:p]) + +//line msg_parse.rl:187 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st62 +tr132: +//line msg_parse.rl:187 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st62 + st62: + if p++; p == pe { + goto _test_eof62 + } + st_case_62: +//line msg_parse.go:3737 + if data[p] == 10 { + goto tr134 + } + goto st0 +tr134: +//line msg_parse.rl:238 + line++; linep = p; +//line msg_parse.rl:129 + + {goto st145 } + + goto st635 + st635: + if p++; p == pe { + goto _test_eof635 + } + st_case_635: +//line msg_parse.go:3755 + goto st0 +tr197: +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st63 +tr109: +//line msg_parse.rl:182 + + addr.Uri, err = ParseURIBytes(data[mark:p]) + if err != nil { return nil, err } + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st63 +tr133: +//line msg_parse.rl:187 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st63 + st63: + if p++; p == pe { + goto _test_eof63 + } + st_case_63: +//line msg_parse.go:3807 + if data[p] == 10 { + goto tr135 + } + goto st0 +tr135: +//line msg_parse.rl:238 + line++; linep = p; +//line msg_parse.rl:129 + + {goto st145 } + + goto st636 + st636: + if p++; p == pe { + goto _test_eof636 + } + st_case_636: +//line msg_parse.go:3825 + switch data[p] { + case 9: + goto st64 + case 32: goto st64 - case 101: - goto st71 - case 108: - goto st79 } - goto tr73 + goto st0 st64: if p++; p == pe { goto _test_eof64 } st_case_64: switch data[p] { - case 79: - goto st65 - case 111: - goto st65 + case 9: + goto st64 + case 32: + goto st64 + case 44: + goto st44 + case 59: + goto st57 } - goto tr73 + goto st0 st65: if p++; p == pe { goto _test_eof65 } st_case_65: - switch data[p] { - case 78: - goto st66 - case 110: - goto st66 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr137 + case 34: + goto tr138 + case 92: + goto tr139 + case 525: + goto tr145 + } + switch { + case _widec < 224: + switch { + case _widec > 126: + if 192 <= _widec && _widec <= 223 { + goto tr140 + } + case _widec >= 32: + goto tr137 + } + case _widec > 239: + switch { + case _widec < 248: + if 240 <= _widec && _widec <= 247 { + goto tr142 + } + case _widec > 251: + if 252 <= _widec && _widec <= 253 { + goto tr144 + } + default: + goto tr143 + } + default: + goto tr141 } - goto tr73 + goto st0 +tr137: +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st66 +tr146: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st66 st66: if p++; p == pe { goto _test_eof66 } st_case_66: - switch data[p] { - case 84: - goto st67 - case 116: +//line msg_parse.go:3921 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr146 + case 34: goto st67 + case 92: + goto st70 + case 525: + goto st76 + } + switch { + case _widec < 224: + switch { + case _widec > 126: + if 192 <= _widec && _widec <= 223 { + goto tr149 + } + case _widec >= 32: + goto tr146 + } + case _widec > 239: + switch { + case _widec < 248: + if 240 <= _widec && _widec <= 247 { + goto tr151 + } + case _widec > 251: + if 252 <= _widec && _widec <= 253 { + goto tr153 + } + default: + goto tr152 + } + default: + goto tr150 } - goto tr73 + goto st0 +tr138: +//line msg_parse.rl:63 + + amt = 0 + + goto st67 +tr155: +//line msg_parse.rl:187 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st67 st67: if p++; p == pe { goto _test_eof67 } st_case_67: - switch data[p] { - case 65: - goto st68 - case 97: - goto st68 +//line msg_parse.go:3995 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr155 + case 32: + goto tr155 + case 44: + goto tr130 + case 59: + goto tr131 + case 269: + goto tr132 + case 525: + goto tr156 } - goto tr73 + goto st0 +tr156: +//line msg_parse.rl:187 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st68 st68: if p++; p == pe { goto _test_eof68 } st_case_68: +//line msg_parse.go:4041 + if data[p] == 10 { + goto tr157 + } + goto st0 +tr157: +//line msg_parse.rl:238 + line++; linep = p; +//line msg_parse.rl:129 + + {goto st145 } + + goto st637 + st637: + if p++; p == pe { + goto _test_eof637 + } + st_case_637: +//line msg_parse.go:4059 switch data[p] { - case 67: + case 9: goto st69 - case 99: + case 32: goto st69 } - goto tr73 + goto st0 +tr158: +//line msg_parse.rl:187 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st69 st69: if p++; p == pe { goto _test_eof69 } st_case_69: - switch data[p] { - case 84: - goto st70 - case 116: - goto st70 +//line msg_parse.go:4090 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr158 + case 32: + goto tr158 + case 44: + goto tr130 + case 59: + goto tr131 + case 269: + goto tr132 + case 525: + goto tr133 } - goto tr73 + goto st0 +tr139: +//line msg_parse.rl:63 + + amt = 0 + + goto st70 st70: if p++; p == pe { goto _test_eof70 } st_case_70: - switch data[p] { - case 9: - goto tr94 - case 32: - goto tr94 - case 58: - goto tr95 +//line msg_parse.go:4124 + switch { + case data[p] < 11: + if data[p] <= 9 { + goto tr146 + } + case data[p] > 12: + if 14 <= data[p] && data[p] <= 127 { + goto tr146 + } + default: + goto tr146 } goto st0 - st71: +tr140: +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st71 +tr149: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st71 + st71: if p++; p == pe { goto _test_eof71 } st_case_71: - switch data[p] { - case 78: - goto st72 - case 110: - goto st72 +//line msg_parse.go:4161 + if 128 <= data[p] && data[p] <= 191 { + goto tr146 } - goto tr73 + goto st0 +tr141: +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st72 +tr150: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st72 st72: if p++; p == pe { goto _test_eof72 } st_case_72: - switch data[p] { - case 67: - goto st73 - case 99: - goto st73 +//line msg_parse.go:4189 + if 128 <= data[p] && data[p] <= 191 { + goto tr149 } - goto tr73 + goto st0 +tr142: +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st73 +tr151: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st73 st73: if p++; p == pe { goto _test_eof73 } st_case_73: - switch data[p] { - case 79: - goto st74 - case 111: - goto st74 +//line msg_parse.go:4217 + if 128 <= data[p] && data[p] <= 191 { + goto tr150 } - goto tr73 + goto st0 +tr143: +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st74 +tr152: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st74 st74: if p++; p == pe { goto _test_eof74 } st_case_74: - switch data[p] { - case 68: - goto st75 - case 100: - goto st75 +//line msg_parse.go:4245 + if 128 <= data[p] && data[p] <= 191 { + goto tr151 } - goto tr73 + goto st0 +tr144: +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st75 +tr153: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st75 st75: if p++; p == pe { goto _test_eof75 } st_case_75: - switch data[p] { - case 73: - goto st76 - case 105: - goto st76 +//line msg_parse.go:4273 + if 128 <= data[p] && data[p] <= 191 { + goto tr152 } - goto tr73 + goto st0 +tr145: +//line msg_parse.rl:63 + + amt = 0 + + goto st76 st76: if p++; p == pe { goto _test_eof76 } st_case_76: - switch data[p] { - case 78: - goto st77 - case 110: - goto st77 +//line msg_parse.go:4289 + if data[p] == 10 { + goto tr159 } - goto tr73 + goto st0 +tr159: +//line msg_parse.rl:238 + line++; linep = p; + goto st77 st77: if p++; p == pe { goto _test_eof77 } st_case_77: +//line msg_parse.go:4303 switch data[p] { - case 71: - goto st78 - case 103: - goto st78 + case 9: + goto tr146 + case 32: + goto tr146 } - goto tr73 + goto st0 st78: if p++; p == pe { goto _test_eof78 } st_case_78: - switch data[p] { - case 9: - goto tr128 - case 32: - goto tr128 - case 58: - goto tr129 + if data[p] == 10 { + goto tr160 } goto st0 +tr160: +//line msg_parse.rl:238 + line++; linep = p; + goto st79 st79: if p++; p == pe { goto _test_eof79 } st_case_79: +//line msg_parse.go:4329 switch data[p] { - case 65: + case 9: goto st80 - case 97: + case 32: goto st80 } - goto tr73 + goto st0 st80: if p++; p == pe { goto _test_eof80 } st_case_80: - switch data[p] { - case 78: - goto st81 - case 110: + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto st80 + case 32: + goto st80 + case 33: + goto tr125 + case 34: + goto st65 + case 37: + goto tr125 + case 39: + goto tr125 + case 93: + goto tr125 + case 126: + goto tr125 + case 525: goto st81 } - goto tr73 + switch { + case _widec < 48: + switch { + case _widec > 43: + if 45 <= _widec && _widec <= 46 { + goto tr125 + } + case _widec >= 42: + goto tr125 + } + case _widec > 58: + switch { + case _widec > 91: + if 95 <= _widec && _widec <= 122 { + goto tr125 + } + case _widec >= 65: + goto tr125 + } + default: + goto tr125 + } + goto st0 st81: if p++; p == pe { goto _test_eof81 } st_case_81: - switch data[p] { - case 71: - goto st82 - case 103: - goto st82 + if data[p] == 10 { + goto tr163 } - goto tr73 + goto st0 +tr163: +//line msg_parse.rl:238 + line++; linep = p; + goto st82 st82: if p++; p == pe { goto _test_eof82 } st_case_82: +//line msg_parse.go:4410 switch data[p] { - case 85: + case 9: goto st83 - case 117: + case 32: goto st83 } - goto tr73 + goto st0 st83: if p++; p == pe { goto _test_eof83 } st_case_83: switch data[p] { - case 65: - goto st84 - case 97: - goto st84 + case 9: + goto st83 + case 32: + goto st83 + case 34: + goto st65 } - goto tr73 + goto st0 st84: if p++; p == pe { goto _test_eof84 } st_case_84: - switch data[p] { - case 71: - goto st85 - case 103: - goto st85 + if data[p] == 10 { + goto tr165 } - goto tr73 + goto st0 +tr165: +//line msg_parse.rl:238 + line++; linep = p; + goto st85 st85: if p++; p == pe { goto _test_eof85 } st_case_85: +//line msg_parse.go:4450 switch data[p] { - case 69: + case 9: goto st86 - case 101: + case 32: goto st86 } - goto tr73 + goto st0 st86: if p++; p == pe { goto _test_eof86 @@ -3476,652 +4461,1615 @@ tr103: st_case_86: switch data[p] { case 9: - goto tr137 + goto st86 case 32: - goto tr137 - case 58: - goto tr138 + goto st86 + case 44: + goto st44 + case 59: + goto st57 + case 61: + goto st60 } goto st0 +tr121: +//line msg_parse.rl:149 + + name = string(data[mark:p]) + +//line msg_parse.rl:187 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st87 st87: if p++; p == pe { goto _test_eof87 } st_case_87: +//line msg_parse.go:4503 + if data[p] == 10 { + goto tr167 + } + goto st0 +tr167: +//line msg_parse.rl:238 + line++; linep = p; +//line msg_parse.rl:129 + + {goto st145 } + + goto st638 + st638: + if p++; p == pe { + goto _test_eof638 + } + st_case_638: +//line msg_parse.go:4521 switch data[p] { - case 69: - goto st88 - case 76: - goto st96 - case 101: - goto st88 - case 108: - goto st96 + case 9: + goto st86 + case 32: + goto st86 } - goto tr73 + goto st0 st88: if p++; p == pe { goto _test_eof88 } st_case_88: - switch data[p] { - case 82: - goto st89 - case 114: - goto st89 + if data[p] == 10 { + goto tr168 } - goto tr73 + goto st0 +tr168: +//line msg_parse.rl:238 + line++; linep = p; + goto st89 st89: if p++; p == pe { goto _test_eof89 } st_case_89: +//line msg_parse.go:4547 switch data[p] { - case 84: + case 9: goto st90 - case 116: + case 32: goto st90 } - goto tr73 + goto st0 st90: if p++; p == pe { goto _test_eof90 } st_case_90: - if data[p] == 45 { - goto st91 - } - goto tr73 - st91: - if p++; p == pe { - goto _test_eof91 - } - st_case_91: switch data[p] { - case 73: - goto st92 - case 105: - goto st92 - } - goto tr73 - st92: - if p++; p == pe { - goto _test_eof92 - } + case 9: + goto st90 + case 32: + goto st90 + case 33: + goto tr113 + case 37: + goto tr113 + case 39: + goto tr113 + case 126: + goto tr113 + } + switch { + case data[p] < 48: + switch { + case data[p] > 43: + if 45 <= data[p] && data[p] <= 46 { + goto tr113 + } + case data[p] >= 42: + goto tr113 + } + case data[p] > 57: + switch { + case data[p] > 90: + if 95 <= data[p] && data[p] <= 122 { + goto tr113 + } + case data[p] >= 65: + goto tr113 + } + default: + goto tr113 + } + goto st0 + st91: + if p++; p == pe { + goto _test_eof91 + } + st_case_91: + if data[p] == 10 { + goto tr170 + } + goto st0 +tr170: +//line msg_parse.rl:238 + line++; linep = p; + goto st92 + st92: + if p++; p == pe { + goto _test_eof92 + } st_case_92: +//line msg_parse.go:4615 switch data[p] { - case 78: - goto st93 - case 110: - goto st93 + case 9: + goto st64 + case 32: + goto st64 } - goto tr73 + goto st0 +tr106: +//line msg_parse.rl:182 + + addr.Uri, err = ParseURIBytes(data[mark:p]) + if err != nil { return nil, err } + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st93 st93: if p++; p == pe { goto _test_eof93 } st_case_93: - switch data[p] { - case 70: - goto st94 - case 102: - goto st94 +//line msg_parse.go:4644 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr171 + case 32: + goto tr171 + case 33: + goto tr172 + case 34: + goto tr47 + case 37: + goto tr172 + case 39: + goto tr172 + case 44: + goto tr106 + case 47: + goto st55 + case 59: + goto tr107 + case 60: + goto tr48 + case 95: + goto tr172 + case 96: + goto tr46 + case 126: + goto tr172 + case 269: + goto tr108 + case 525: + goto tr174 + } + switch { + case _widec < 58: + switch { + case _widec > 41: + if 42 <= _widec && _widec <= 57 { + goto tr172 + } + case _widec >= 36: + goto st55 + } + case _widec > 61: + switch { + case _widec < 65: + if 63 <= _widec && _widec <= 64 { + goto st55 + } + case _widec > 90: + if 97 <= _widec && _widec <= 122 { + goto tr173 + } + default: + goto tr173 + } + default: + goto st55 } - goto tr73 + goto st0 +tr175: +//line msg_parse.rl:174 + + addr = new(Addr) + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st94 +tr171: +//line msg_parse.rl:174 + + addr = new(Addr) + +//line msg_parse.rl:182 + + addr.Uri, err = ParseURIBytes(data[mark:p]) + if err != nil { return nil, err } + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st94 +tr207: +//line msg_parse.rl:182 + + addr.Uri, err = ParseURIBytes(data[mark:p]) + if err != nil { return nil, err } + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + +//line msg_parse.rl:174 + + addr = new(Addr) + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st94 st94: if p++; p == pe { goto _test_eof94 } st_case_94: - switch data[p] { - case 79: - goto st95 - case 111: - goto st95 +//line msg_parse.go:4786 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr175 + case 32: + goto tr175 + case 33: + goto tr46 + case 34: + goto tr47 + case 37: + goto tr46 + case 39: + goto tr46 + case 44: + goto st44 + case 59: + goto st57 + case 60: + goto tr48 + case 126: + goto tr46 + case 525: + goto tr176 + } + switch { + case _widec < 65: + switch { + case _widec > 46: + if 48 <= _widec && _widec <= 57 { + goto tr46 + } + case _widec >= 42: + goto tr46 + } + case _widec > 90: + switch { + case _widec > 96: + if 97 <= _widec && _widec <= 122 { + goto tr87 + } + case _widec >= 95: + goto tr46 + } + default: + goto tr87 } - goto tr73 + goto st0 +tr176: +//line msg_parse.rl:174 + + addr = new(Addr) + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st95 st95: if p++; p == pe { goto _test_eof95 } st_case_95: - switch data[p] { - case 9: - goto tr148 - case 32: - goto tr148 - case 58: - goto tr149 +//line msg_parse.go:4860 + if data[p] == 10 { + goto tr177 } goto st0 +tr177: +//line msg_parse.rl:238 + line++; linep = p; + goto st96 st96: if p++; p == pe { goto _test_eof96 } st_case_96: +//line msg_parse.go:4874 switch data[p] { - case 79: + case 9: goto st97 - case 111: + case 32: goto st97 } - goto tr73 + goto st0 +tr179: +//line msg_parse.rl:174 + + addr = new(Addr) + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st97 st97: if p++; p == pe { goto _test_eof97 } st_case_97: - switch data[p] { - case 87: - goto st98 - case 119: - goto st98 +//line msg_parse.go:4901 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr179 + case 32: + goto tr179 + case 33: + goto tr46 + case 34: + goto tr47 + case 37: + goto tr46 + case 39: + goto tr46 + case 44: + goto st44 + case 59: + goto st57 + case 60: + goto tr48 + case 126: + goto tr46 + case 525: + goto tr50 + } + switch { + case _widec < 65: + switch { + case _widec > 46: + if 48 <= _widec && _widec <= 57 { + goto tr46 + } + case _widec >= 42: + goto tr46 + } + case _widec > 90: + switch { + case _widec > 96: + if 97 <= _widec && _widec <= 122 { + goto tr87 + } + case _widec >= 95: + goto tr46 + } + default: + goto tr87 } - goto tr73 + goto st0 +tr50: +//line msg_parse.rl:174 + + addr = new(Addr) + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st98 st98: if p++; p == pe { goto _test_eof98 } st_case_98: - switch data[p] { - case 9: - goto tr152 - case 32: - goto tr152 - case 45: - goto st99 - case 58: - goto tr154 +//line msg_parse.go:4975 + if data[p] == 10 { + goto tr180 } goto st0 +tr180: +//line msg_parse.rl:238 + line++; linep = p; + goto st99 st99: if p++; p == pe { goto _test_eof99 } st_case_99: +//line msg_parse.go:4989 switch data[p] { - case 69: + case 9: goto st100 - case 101: + case 32: goto st100 } - goto tr73 + goto st0 st100: if p++; p == pe { goto _test_eof100 } st_case_100: switch data[p] { - case 86: - goto st101 - case 118: - goto st101 - } - goto tr73 - st101: - if p++; p == pe { - goto _test_eof101 + case 9: + goto st100 + case 32: + goto st100 + case 34: + goto st36 + case 60: + goto st39 + } + goto st0 +tr183: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st101 +tr172: +//line msg_parse.rl:174 + + addr = new(Addr) + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st101 +tr173: +//line msg_parse.rl:174 + + addr = new(Addr) + +//line msg_parse.rl:59 + + mark = p + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st101 + st101: + if p++; p == pe { + goto _test_eof101 } st_case_101: - switch data[p] { - case 69: - goto st102 - case 101: - goto st102 +//line msg_parse.go:5059 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr182 + case 32: + goto tr182 + case 33: + goto tr183 + case 37: + goto tr183 + case 39: + goto tr183 + case 44: + goto tr106 + case 47: + goto st55 + case 58: + goto st55 + case 59: + goto tr107 + case 61: + goto st55 + case 96: + goto tr90 + case 126: + goto tr183 + case 269: + goto tr108 + case 525: + goto tr184 + } + switch { + case _widec < 63: + switch { + case _widec > 41: + if 42 <= _widec && _widec <= 57 { + goto tr183 + } + case _widec >= 36: + goto st55 + } + case _widec > 64: + switch { + case _widec > 90: + if 95 <= _widec && _widec <= 122 { + goto tr183 + } + case _widec >= 65: + goto tr183 + } + default: + goto st55 } - goto tr73 + goto st0 +tr185: +//line msg_parse.rl:72 + + buf[amt] = ' ' + amt++ + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st102 +tr182: +//line msg_parse.rl:182 + + addr.Uri, err = ParseURIBytes(data[mark:p]) + if err != nil { return nil, err } + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st102 st102: if p++; p == pe { goto _test_eof102 } st_case_102: - switch data[p] { - case 78: - goto st103 - case 110: - goto st103 +//line msg_parse.go:5152 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr185 + case 32: + goto tr185 + case 33: + goto tr93 + case 37: + goto tr93 + case 39: + goto tr93 + case 44: + goto st44 + case 59: + goto st57 + case 60: + goto tr94 + case 126: + goto tr93 + case 525: + goto tr186 + } + switch { + case _widec < 48: + if 42 <= _widec && _widec <= 46 { + goto tr93 + } + case _widec > 57: + switch { + case _widec > 90: + if 95 <= _widec && _widec <= 122 { + goto tr93 + } + case _widec >= 65: + goto tr93 + } + default: + goto tr93 } - goto tr73 + goto st0 +tr186: +//line msg_parse.rl:72 + + buf[amt] = ' ' + amt++ + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st103 st103: if p++; p == pe { goto _test_eof103 } st_case_103: - switch data[p] { - case 84: - goto st104 - case 116: - goto st104 +//line msg_parse.go:5216 + if data[p] == 10 { + goto tr187 } - goto tr73 + goto st0 +tr187: +//line msg_parse.rl:238 + line++; linep = p; + goto st104 st104: if p++; p == pe { goto _test_eof104 } st_case_104: +//line msg_parse.go:5230 switch data[p] { - case 83: + case 9: goto st105 - case 115: + case 32: goto st105 } - goto tr73 + goto st0 +tr189: +//line msg_parse.rl:72 + + buf[amt] = ' ' + amt++ + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st105 st105: if p++; p == pe { goto _test_eof105 } st_case_105: - switch data[p] { +//line msg_parse.go:5254 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { case 9: - goto tr161 + goto tr189 case 32: - goto tr161 - case 58: - goto tr162 + goto tr189 + case 33: + goto tr93 + case 37: + goto tr93 + case 39: + goto tr93 + case 44: + goto st44 + case 59: + goto st57 + case 60: + goto tr94 + case 126: + goto tr93 + case 525: + goto tr99 + } + switch { + case _widec < 48: + if 42 <= _widec && _widec <= 46 { + goto tr93 + } + case _widec > 57: + switch { + case _widec > 90: + if 95 <= _widec && _widec <= 122 { + goto tr93 + } + case _widec >= 65: + goto tr93 + } + default: + goto tr93 } goto st0 +tr184: +//line msg_parse.rl:182 + + addr.Uri, err = ParseURIBytes(data[mark:p]) + if err != nil { return nil, err } + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st106 st106: if p++; p == pe { goto _test_eof106 } st_case_106: +//line msg_parse.go:5323 + if data[p] == 10 { + goto tr190 + } + goto st0 +tr190: +//line msg_parse.rl:238 + line++; linep = p; +//line msg_parse.rl:129 + + {goto st145 } + + goto st639 + st639: + if p++; p == pe { + goto _test_eof639 + } + st_case_639: +//line msg_parse.go:5341 switch data[p] { - case 84: - goto st107 - case 116: - goto st107 + case 9: + goto st105 + case 32: + goto st105 } - goto tr73 + goto st0 +tr174: +//line msg_parse.rl:174 + + addr = new(Addr) + +//line msg_parse.rl:182 + + addr.Uri, err = ParseURIBytes(data[mark:p]) + if err != nil { return nil, err } + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st107 +tr210: +//line msg_parse.rl:182 + + addr.Uri, err = ParseURIBytes(data[mark:p]) + if err != nil { return nil, err } + +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + +//line msg_parse.rl:174 + + addr = new(Addr) + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st107 st107: if p++; p == pe { goto _test_eof107 } st_case_107: - switch data[p] { - case 72: - goto st108 - case 104: - goto st108 +//line msg_parse.go:5410 + if data[p] == 10 { + goto tr191 } - goto tr73 - st108: + goto st0 +tr191: +//line msg_parse.rl:238 + line++; linep = p; +//line msg_parse.rl:129 + + {goto st145 } + + goto st640 + st640: if p++; p == pe { - goto _test_eof108 + goto _test_eof640 } - st_case_108: + st_case_640: +//line msg_parse.go:5428 switch data[p] { - case 69: - goto st109 - case 79: - goto st124 - case 101: - goto st109 - case 111: - goto st124 + case 9: + goto st97 + case 32: + goto st97 + } + goto st0 +tr88: +//line msg_parse.rl:174 + + addr = new(Addr) + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st108 + st108: + if p++; p == pe { + goto _test_eof108 + } + st_case_108: +//line msg_parse.go:5455 + if data[p] == 10 { + goto tr192 } - goto tr73 + goto st0 +tr192: +//line msg_parse.rl:238 + line++; linep = p; + goto st109 st109: if p++; p == pe { goto _test_eof109 } st_case_109: +//line msg_parse.go:5469 switch data[p] { - case 78: + case 9: goto st110 - case 110: + case 32: goto st110 } - goto tr73 + goto st0 +tr194: +//line msg_parse.rl:174 + + addr = new(Addr) + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st110 st110: if p++; p == pe { goto _test_eof110 } st_case_110: - switch data[p] { - case 84: - goto st111 - case 116: - goto st111 +//line msg_parse.go:5496 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr194 + case 32: + goto tr194 + case 33: + goto tr46 + case 34: + goto tr47 + case 37: + goto tr46 + case 39: + goto tr46 + case 60: + goto tr48 + case 126: + goto tr46 + case 525: + goto tr50 + } + switch { + case _widec < 48: + switch { + case _widec > 43: + if 45 <= _widec && _widec <= 46 { + goto tr46 + } + case _widec >= 42: + goto tr46 + } + case _widec > 57: + switch { + case _widec < 95: + if 65 <= _widec && _widec <= 90 { + goto tr87 + } + case _widec > 96: + if 97 <= _widec && _widec <= 122 { + goto tr87 + } + default: + goto tr46 + } + default: + goto tr46 } - goto tr73 + goto st0 +tr85: +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st111 st111: if p++; p == pe { goto _test_eof111 } st_case_111: +//line msg_parse.go:5567 + if data[p] == 10 { + goto tr195 + } + goto st0 +tr195: +//line msg_parse.rl:238 + line++; linep = p; +//line msg_parse.rl:129 + + {goto st145 } + + goto st641 + st641: + if p++; p == pe { + goto _test_eof641 + } + st_case_641: +//line msg_parse.go:5585 switch data[p] { - case 73: + case 9: goto st112 - case 105: + case 32: goto st112 } - goto tr73 + goto st0 +tr196: +//line msg_parse.rl:165 + + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } + + goto st112 st112: if p++; p == pe { goto _test_eof112 } st_case_112: - switch data[p] { - case 67: - goto st113 - case 99: - goto st113 +//line msg_parse.go:5609 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr196 + case 32: + goto tr196 + case 44: + goto tr82 + case 59: + goto st57 + case 269: + goto tr84 + case 525: + goto tr197 } - goto tr73 + goto st0 +tr75: +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st113 st113: if p++; p == pe { goto _test_eof113 } st_case_113: - switch data[p] { - case 65: - goto st114 - case 97: - goto st114 +//line msg_parse.go:5643 + if data[p] == 10 { + goto tr198 } - goto tr73 + goto st0 +tr198: +//line msg_parse.rl:238 + line++; linep = p; + goto st114 st114: if p++; p == pe { goto _test_eof114 } st_case_114: +//line msg_parse.go:5657 switch data[p] { - case 84: + case 9: goto st115 - case 116: + case 32: goto st115 } - goto tr73 + goto st0 +tr200: +//line msg_parse.rl:178 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st115 st115: if p++; p == pe { goto _test_eof115 } st_case_115: - switch data[p] { - case 73: - goto st116 - case 105: - goto st116 +//line msg_parse.go:5676 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr200 + case 32: + goto tr200 + case 60: + goto tr74 + case 525: + goto tr201 } - goto tr73 + goto st0 +tr57: +//line msg_parse.rl:63 + + amt = 0 + + goto st116 st116: if p++; p == pe { goto _test_eof116 } st_case_116: - switch data[p] { - case 79: - goto st117 - case 111: - goto st117 +//line msg_parse.go:5706 + switch { + case data[p] < 11: + if data[p] <= 9 { + goto tr64 + } + case data[p] > 12: + if 14 <= data[p] && data[p] <= 127 { + goto tr64 + } + default: + goto tr64 } - goto tr73 + goto st0 +tr58: +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st117 +tr67: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st117 st117: if p++; p == pe { goto _test_eof117 } st_case_117: - switch data[p] { - case 78: - goto st118 - case 110: - goto st118 +//line msg_parse.go:5743 + if 128 <= data[p] && data[p] <= 191 { + goto tr64 } - goto tr73 + goto st0 +tr59: +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st118 +tr68: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st118 st118: if p++; p == pe { goto _test_eof118 } st_case_118: - if data[p] == 45 { - goto st119 +//line msg_parse.go:5771 + if 128 <= data[p] && data[p] <= 191 { + goto tr67 } - goto tr73 + goto st0 +tr60: +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st119 +tr69: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st119 st119: if p++; p == pe { goto _test_eof119 } st_case_119: - switch data[p] { - case 73: - goto st120 - case 105: - goto st120 +//line msg_parse.go:5799 + if 128 <= data[p] && data[p] <= 191 { + goto tr68 } - goto tr73 + goto st0 +tr61: +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st120 +tr70: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st120 st120: if p++; p == pe { goto _test_eof120 } st_case_120: - switch data[p] { - case 78: - goto st121 - case 110: - goto st121 +//line msg_parse.go:5827 + if 128 <= data[p] && data[p] <= 191 { + goto tr69 } - goto tr73 + goto st0 +tr62: +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st121 +tr71: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st121 st121: if p++; p == pe { goto _test_eof121 } st_case_121: - switch data[p] { - case 70: - goto st122 - case 102: - goto st122 +//line msg_parse.go:5855 + if 128 <= data[p] && data[p] <= 191 { + goto tr70 } - goto tr73 + goto st0 +tr63: +//line msg_parse.rl:63 + + amt = 0 + + goto st122 st122: if p++; p == pe { goto _test_eof122 } st_case_122: - switch data[p] { - case 79: - goto st123 - case 111: - goto st123 +//line msg_parse.go:5871 + if data[p] == 10 { + goto tr202 } - goto tr73 + goto st0 +tr202: +//line msg_parse.rl:238 + line++; linep = p; + goto st123 st123: if p++; p == pe { goto _test_eof123 } st_case_123: +//line msg_parse.go:5885 switch data[p] { case 9: - goto tr181 + goto tr64 case 32: - goto tr181 - case 58: - goto tr182 + goto tr64 } goto st0 +tr203: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st124 +tr49: +//line msg_parse.rl:174 + + addr = new(Addr) + +//line msg_parse.rl:59 + + mark = p + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st124 st124: if p++; p == pe { goto _test_eof124 } st_case_124: - switch data[p] { - case 82: - goto st125 - case 114: +//line msg_parse.go:5924 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto st46 + case 32: + goto st46 + case 33: + goto tr90 + case 37: + goto tr90 + case 39: + goto tr90 + case 42: + goto tr90 + case 43: + goto tr203 + case 58: goto st125 + case 126: + goto tr90 + case 525: + goto st47 + } + switch { + case _widec < 65: + switch { + case _widec > 46: + if 48 <= _widec && _widec <= 57 { + goto tr203 + } + case _widec >= 45: + goto tr203 + } + case _widec > 90: + switch { + case _widec > 96: + if 97 <= _widec && _widec <= 122 { + goto tr203 + } + case _widec >= 95: + goto tr90 + } + default: + goto tr203 } - goto tr73 + goto st0 st125: if p++; p == pe { goto _test_eof125 } st_case_125: switch data[p] { - case 73: + case 33: goto st126 - case 105: + case 61: + goto st126 + case 95: + goto st126 + case 126: + goto st126 + } + switch { + case data[p] < 63: + if 36 <= data[p] && data[p] <= 58 { + goto st126 + } + case data[p] > 90: + if 97 <= data[p] && data[p] <= 122 { + goto st126 + } + default: goto st126 } - goto tr73 + goto st0 st126: if p++; p == pe { goto _test_eof126 } st_case_126: - switch data[p] { - case 90: - goto st127 - case 122: - goto st127 - } - goto tr73 - st127: - if p++; p == pe { - goto _test_eof127 - } - st_case_127: - switch data[p] { - case 65: - goto st128 - case 97: - goto st128 - } - goto tr73 - st128: - if p++; p == pe { - goto _test_eof128 - } - st_case_128: - switch data[p] { - case 84: - goto st129 - case 116: - goto st129 - } - goto tr73 - st129: - if p++; p == pe { - goto _test_eof129 - } - st_case_129: - switch data[p] { - case 73: - goto st130 - case 105: - goto st130 - } - goto tr73 - st130: - if p++; p == pe { - goto _test_eof130 - } - st_case_130: - switch data[p] { - case 79: - goto st131 - case 111: - goto st131 - } - goto tr73 - st131: - if p++; p == pe { - goto _test_eof131 - } - st_case_131: - switch data[p] { - case 78: - goto st132 - case 110: - goto st132 - } - goto tr73 - st132: - if p++; p == pe { - goto _test_eof132 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } } - st_case_132: - switch data[p] { + switch _widec { case 9: - goto tr191 + goto tr105 case 32: - goto tr191 - case 58: - goto tr192 + goto tr105 + case 33: + goto st126 + case 44: + goto tr206 + case 59: + goto tr107 + case 61: + goto st126 + case 95: + goto st126 + case 126: + goto st126 + case 269: + goto tr108 + case 525: + goto tr109 + } + switch { + case _widec < 63: + if 36 <= _widec && _widec <= 58 { + goto st126 + } + case _widec > 90: + if 97 <= _widec && _widec <= 122 { + goto st126 + } + default: + goto st126 } goto st0 -tr76: -//line msg_parse.rl:55 +tr206: +//line msg_parse.rl:182 - mark = p + addr.Uri, err = ParseURIBytes(data[mark:p]) + if err != nil { return nil, err } - goto st133 - st133: - if p++; p == pe { - goto _test_eof133 - } - st_case_133: -//line msg_parse.go:4064 - switch data[p] { - case 9: - goto tr193 - case 32: - goto tr193 - case 58: - goto tr194 - } - goto st0 -tr77: -//line msg_parse.rl:55 +//line msg_parse.rl:165 - mark = p + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } - goto st134 - st134: - if p++; p == pe { - goto _test_eof134 - } - st_case_134: -//line msg_parse.go:4085 - switch data[p] { - case 9: - goto st135 - case 32: - goto st135 - case 58: - goto st136 - case 65: - goto st148 - case 79: - goto st164 - case 83: - goto st225 - case 97: - goto st148 - case 111: - goto st164 - case 115: - goto st225 - } - goto tr73 - st135: - if p++; p == pe { - goto _test_eof135 - } - st_case_135: - switch data[p] { - case 9: - goto st135 - case 32: - goto st135 - case 58: - goto st136 - } - goto st0 - st136: + goto st127 + st127: if p++; p == pe { - goto _test_eof136 + goto _test_eof127 } - st_case_136: + st_case_127: +//line msg_parse.go:6073 _widec = int16(data[p]) if 13 <= data[p] && data[p] <= 13 { _widec = 256 + (int16(data[p]) - 0) @@ -4131,53 +6079,249 @@ tr77: } switch _widec { case 9: - goto st136 + goto tr207 case 32: - goto st136 - case 269: + goto tr207 + case 33: + goto tr208 + case 34: + goto tr47 + case 37: + goto tr208 + case 39: + goto tr208 + case 44: goto tr206 - case 525: - goto st145 - } - switch { + case 47: + goto st126 + case 59: + goto tr107 + case 60: + goto tr48 + case 95: + goto tr208 + case 96: + goto tr46 + case 126: + goto tr208 + case 269: + goto tr108 + case 525: + goto tr210 + } + switch { + case _widec < 58: + switch { + case _widec > 41: + if 42 <= _widec && _widec <= 57 { + goto tr208 + } + case _widec >= 36: + goto st126 + } + case _widec > 61: + switch { + case _widec < 65: + if 63 <= _widec && _widec <= 64 { + goto st126 + } + case _widec > 90: + if 97 <= _widec && _widec <= 122 { + goto tr209 + } + default: + goto tr209 + } + default: + goto st126 + } + goto st0 +tr211: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st128 +tr208: +//line msg_parse.rl:174 + + addr = new(Addr) + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st128 +tr209: +//line msg_parse.rl:174 + + addr = new(Addr) + +//line msg_parse.rl:59 + + mark = p + +//line msg_parse.rl:63 + + amt = 0 + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st128 + st128: + if p++; p == pe { + goto _test_eof128 + } + st_case_128: +//line msg_parse.go:6186 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr182 + case 32: + goto tr182 + case 33: + goto tr211 + case 37: + goto tr211 + case 39: + goto tr211 + case 44: + goto tr206 + case 47: + goto st126 + case 58: + goto st126 + case 59: + goto tr107 + case 61: + goto st126 + case 96: + goto tr90 + case 126: + goto tr211 + case 269: + goto tr108 + case 525: + goto tr184 + } + switch { + case _widec < 63: + switch { + case _widec > 41: + if 42 <= _widec && _widec <= 57 { + goto tr211 + } + case _widec >= 36: + goto st126 + } + case _widec > 64: + switch { + case _widec > 90: + if 95 <= _widec && _widec <= 122 { + goto tr211 + } + case _widec >= 65: + goto tr211 + } + default: + goto st126 + } + goto st0 + st129: + if p++; p == pe { + goto _test_eof129 + } + st_case_129: + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto tr212 + case 32: + goto tr212 + case 269: + goto tr219 + case 525: + goto tr220 + } + switch { case _widec < 224: switch { case _widec > 127: if 192 <= _widec && _widec <= 223 { - goto tr201 + goto tr214 } case _widec >= 33: - goto tr200 + goto tr213 } case _widec > 239: switch { case _widec < 248: if 240 <= _widec && _widec <= 247 { - goto tr203 + goto tr216 } case _widec > 251: if 252 <= _widec && _widec <= 253 { - goto tr205 + goto tr218 } default: - goto tr204 + goto tr217 } default: - goto tr202 + goto tr215 } goto st0 -tr200: -//line msg_parse.rl:55 +tr212: +//line msg_parse.rl:59 mark = p - goto st137 - st137: + goto st130 +tr222: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st130 +tr213: +//line msg_parse.rl:59 + + mark = p + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st130 + st130: if p++; p == pe { - goto _test_eof137 + goto _test_eof130 } - st_case_137: -//line msg_parse.go:4181 + st_case_130: +//line msg_parse.go:6325 _widec = int16(data[p]) if 13 <= data[p] && data[p] <= 13 { _widec = 256 + (int16(data[p]) - 0) @@ -4187,511 +6331,395 @@ tr200: } switch _widec { case 9: - goto st137 + goto st130 + case 32: + goto st130 case 269: - goto tr214 + goto st136 case 525: - goto tr215 + goto st137 } switch { case _widec < 224: switch { case _widec > 127: if 192 <= _widec && _widec <= 223 { - goto st138 + goto tr223 } - case _widec >= 32: - goto st137 + case _widec >= 33: + goto tr222 } case _widec > 239: switch { case _widec < 248: if 240 <= _widec && _widec <= 247 { - goto st140 + goto tr225 } case _widec > 251: if 252 <= _widec && _widec <= 253 { - goto st142 + goto tr227 } default: - goto st141 + goto tr226 } default: - goto st139 + goto tr224 } goto st0 -tr201: -//line msg_parse.rl:55 +tr223: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st131 +tr214: +//line msg_parse.rl:59 mark = p - goto st138 - st138: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st131 + st131: if p++; p == pe { - goto _test_eof138 + goto _test_eof131 } - st_case_138: -//line msg_parse.go:4235 + st_case_131: +//line msg_parse.go:6393 if 128 <= data[p] && data[p] <= 191 { - goto st137 + goto tr222 } goto st0 -tr202: -//line msg_parse.rl:55 +tr224: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st132 +tr215: +//line msg_parse.rl:59 mark = p - goto st139 - st139: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st132 + st132: if p++; p == pe { - goto _test_eof139 + goto _test_eof132 } - st_case_139: -//line msg_parse.go:4251 + st_case_132: +//line msg_parse.go:6421 if 128 <= data[p] && data[p] <= 191 { - goto st138 + goto tr223 } goto st0 -tr203: -//line msg_parse.rl:55 +tr225: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st133 +tr216: +//line msg_parse.rl:59 mark = p - goto st140 - st140: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st133 + st133: if p++; p == pe { - goto _test_eof140 + goto _test_eof133 } - st_case_140: -//line msg_parse.go:4267 + st_case_133: +//line msg_parse.go:6449 if 128 <= data[p] && data[p] <= 191 { - goto st139 + goto tr224 } goto st0 -tr204: -//line msg_parse.rl:55 +tr226: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st134 +tr217: +//line msg_parse.rl:59 mark = p - goto st141 - st141: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st134 + st134: if p++; p == pe { - goto _test_eof141 + goto _test_eof134 } - st_case_141: -//line msg_parse.go:4283 + st_case_134: +//line msg_parse.go:6477 if 128 <= data[p] && data[p] <= 191 { - goto st140 + goto tr225 } goto st0 -tr205: -//line msg_parse.rl:55 +tr227: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st135 +tr218: +//line msg_parse.rl:59 mark = p - goto st142 - st142: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st135 + st135: if p++; p == pe { - goto _test_eof142 + goto _test_eof135 } - st_case_142: -//line msg_parse.go:4299 + st_case_135: +//line msg_parse.go:6505 if 128 <= data[p] && data[p] <= 191 { - goto st141 + goto tr226 } goto st0 -tr206: -//line msg_parse.rl:55 +tr219: +//line msg_parse.rl:59 mark = p -//line msg_parse.rl:156 - - ctype = string(data[mark:p]) - - goto st143 -tr214: -//line msg_parse.rl:156 - - ctype = string(data[mark:p]) - - goto st143 + goto st136 + st136: + if p++; p == pe { + goto _test_eof136 + } + st_case_136: +//line msg_parse.go:6521 + if data[p] == 10 { + goto tr230 + } + goto st0 tr230: -//line msg_parse.rl:142 - - msg.CallID = string(data[mark:p]) - - goto st143 -tr253: -//line msg_parse.rl:55 - - mark = p - -//line msg_parse.rl:146 - - *contactp, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - for *contactp != nil { contactp = &(*contactp).Next } - - goto st143 -tr261: -//line msg_parse.rl:146 - - *contactp, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - for *contactp != nil { contactp = &(*contactp).Next } - - goto st143 -tr326: -//line msg_parse.rl:164 - - msg.CSeqMethod = string(data[mark:p]) - - goto st143 -tr375: -//line msg_parse.rl:55 - - mark = p - -//line msg_parse.rl:172 - - msg.From, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - - goto st143 -tr383: -//line msg_parse.rl:172 - - msg.From, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - - goto st143 -tr494: -//line msg_parse.rl:55 - - mark = p - -//line msg_parse.rl:185 - - msg.PAssertedIdentity, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - - goto st143 -tr502: -//line msg_parse.rl:185 - - msg.PAssertedIdentity, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - - goto st143 -tr580: -//line msg_parse.rl:55 - - mark = p - -//line msg_parse.rl:190 - - *rroutep, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - for *rroutep != nil { rroutep = &(*rroutep).Next } - - goto st143 -tr588: -//line msg_parse.rl:190 - - *rroutep, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - for *rroutep != nil { rroutep = &(*rroutep).Next } - - goto st143 -tr624: -//line msg_parse.rl:55 - - mark = p - -//line msg_parse.rl:196 - - msg.RemotePartyID, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - - goto st143 -tr632: -//line msg_parse.rl:196 - - msg.RemotePartyID, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - - goto st143 -tr671: -//line msg_parse.rl:55 - - mark = p - -//line msg_parse.rl:201 - - *routep, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - for *routep != nil { routep = &(*routep).Next } - - goto st143 -tr679: -//line msg_parse.rl:201 - - *routep, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - for *routep != nil { routep = &(*routep).Next } - - goto st143 -tr716: -//line msg_parse.rl:55 - - mark = p - -//line msg_parse.rl:207 - - msg.To, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - - goto st143 -tr724: -//line msg_parse.rl:207 - - msg.To, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - - goto st143 -tr773: -//line msg_parse.rl:55 - - mark = p - -//line msg_parse.rl:212 - - *viap, err = ParseVia(string(data[mark:p])) - if err != nil { return nil, err } - for *viap != nil { viap = &(*viap).Next } - - goto st143 -tr781: -//line msg_parse.rl:212 +//line msg_parse.rl:238 + line++; linep = p; +//line msg_parse.rl:153 +{ + b := data[mark:p - 1] + if value != nil { + *value = string(b) + } else { + if msg.Headers == nil { + msg.Headers = Headers{} + } + msg.Headers[name] = string(b) + } + } +//line msg_parse.rl:129 - *viap, err = ParseVia(string(data[mark:p])) - if err != nil { return nil, err } - for *viap != nil { viap = &(*viap).Next } + {goto st145 } - goto st143 - st143: + goto st642 + st642: if p++; p == pe { - goto _test_eof143 - } - st_case_143: -//line msg_parse.go:4489 - if data[p] == 10 { - goto tr216 + goto _test_eof642 } + st_case_642: +//line msg_parse.go:6551 goto st0 tr220: -//line msg_parse.rl:55 +//line msg_parse.rl:59 mark = p -//line msg_parse.rl:156 - - ctype = string(data[mark:p]) - - goto st144 -tr215: -//line msg_parse.rl:156 - - ctype = string(data[mark:p]) - - goto st144 - st144: + goto st137 + st137: if p++; p == pe { - goto _test_eof144 + goto _test_eof137 } - st_case_144: -//line msg_parse.go:4515 + st_case_137: +//line msg_parse.go:6564 if data[p] == 10 { - goto tr217 + goto tr231 } goto st0 -tr217: -//line msg_parse.rl:224 +tr231: +//line msg_parse.rl:238 line++; linep = p; -//line msg_parse.rl:111 +//line msg_parse.rl:153 +{ + b := data[mark:p - 1] + if value != nil { + *value = string(b) + } else { + if msg.Headers == nil { + msg.Headers = Headers{} + } + msg.Headers[name] = string(b) + } + } +//line msg_parse.rl:129 - {goto st50 } + {goto st145 } - goto st616 - st616: + goto st643 + st643: if p++; p == pe { - goto _test_eof616 + goto _test_eof643 } - st_case_616: -//line msg_parse.go:4533 + st_case_643: +//line msg_parse.go:6594 switch data[p] { case 9: - goto st137 + goto st130 case 32: - goto st137 - } - goto st0 - st145: - if p++; p == pe { - goto _test_eof145 - } - st_case_145: - if data[p] == 10 { - goto tr218 + goto st130 } goto st0 -tr218: -//line msg_parse.rl:224 - line++; linep = p; - goto st146 - st146: + st138: if p++; p == pe { - goto _test_eof146 + goto _test_eof138 } - st_case_146: -//line msg_parse.go:4559 + st_case_138: switch data[p] { - case 9: - goto st147 - case 32: - goto st147 - } - goto st0 - st147: - if p++; p == pe { - goto _test_eof147 - } - st_case_147: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st147 - case 32: - goto st147 - case 269: - goto tr206 - case 525: - goto tr220 + case 33: + goto tr232 + case 37: + goto tr232 + case 39: + goto tr232 + case 126: + goto tr232 } switch { - case _widec < 224: + case data[p] < 48: switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto tr201 + case data[p] > 43: + if 45 <= data[p] && data[p] <= 46 { + goto tr232 } - case _widec >= 33: - goto tr200 + case data[p] >= 42: + goto tr232 } - case _widec > 239: + case data[p] > 57: switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr203 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr205 + case data[p] > 90: + if 95 <= data[p] && data[p] <= 122 { + goto tr232 } - default: - goto tr204 + case data[p] >= 65: + goto tr232 } default: - goto tr202 + goto tr232 } goto st0 - st148: +tr232: +//line msg_parse.rl:59 + + mark = p + + goto st139 + st139: if p++; p == pe { - goto _test_eof148 + goto _test_eof139 } - st_case_148: + st_case_139: +//line msg_parse.go:6651 switch data[p] { - case 76: - goto st149 - case 108: - goto st149 - } - goto tr73 - st149: - if p++; p == pe { - goto _test_eof149 - } - st_case_149: - switch data[p] { - case 76: - goto st150 - case 108: - goto st150 - } - goto tr73 - st150: - if p++; p == pe { - goto _test_eof150 - } - st_case_150: - if data[p] == 45 { - goto st151 - } - goto tr73 - st151: - if p++; p == pe { - goto _test_eof151 - } - st_case_151: - switch data[p] { - case 73: - goto st152 - case 105: - goto st152 - } - goto tr73 - st152: - if p++; p == pe { - goto _test_eof152 + case 9: + goto tr233 + case 32: + goto tr233 + case 33: + goto st139 + case 37: + goto st139 + case 39: + goto st139 + case 58: + goto tr235 + case 126: + goto st139 } - st_case_152: - switch data[p] { - case 68: - goto st153 - case 78: - goto st161 - case 100: - goto st153 - case 110: - goto st161 + switch { + case data[p] < 48: + switch { + case data[p] > 43: + if 45 <= data[p] && data[p] <= 46 { + goto st139 + } + case data[p] >= 42: + goto st139 + } + case data[p] > 57: + switch { + case data[p] > 90: + if 95 <= data[p] && data[p] <= 122 { + goto st139 + } + case data[p] >= 65: + goto st139 + } + default: + goto st139 } - goto tr73 - st153: + goto st0 +tr233: +//line msg_parse.rl:149 + + name = string(data[mark:p]) + + goto st140 + st140: if p++; p == pe { - goto _test_eof153 + goto _test_eof140 } - st_case_153: + st_case_140: +//line msg_parse.go:6702 switch data[p] { case 9: - goto st153 + goto st140 case 32: - goto st153 + goto st140 case 58: - goto st154 + goto st141 } goto st0 - st154: +tr235: +//line msg_parse.rl:149 + + name = string(data[mark:p]) + + goto st141 + st141: if p++; p == pe { - goto _test_eof154 + goto _test_eof141 } - st_case_154: + st_case_141: +//line msg_parse.go:6723 _widec = int16(data[p]) if 13 <= data[p] && data[p] <= 13 { _widec = 256 + (int16(data[p]) - 0) @@ -4701,375 +6729,562 @@ tr218: } switch _widec { case 9: - goto st154 + goto st141 case 32: - goto st154 - case 37: - goto tr228 - case 60: - goto tr228 + goto st141 + case 269: + goto tr238 case 525: - goto st158 + goto st142 } switch { - case _widec < 62: - switch { - case _widec < 39: - if 33 <= _widec && _widec <= 34 { - goto tr228 - } - case _widec > 43: - if 45 <= _widec && _widec <= 58 { - goto tr228 - } - default: - goto tr228 - } - case _widec > 63: - switch { - case _widec < 95: - if 65 <= _widec && _widec <= 93 { - goto tr228 - } - case _widec > 123: - if 125 <= _widec && _widec <= 126 { - goto tr228 - } - default: - goto tr228 + case _widec > 12: + if 14 <= _widec { + goto tr238 } default: - goto tr228 + goto tr238 } goto st0 -tr228: -//line msg_parse.rl:55 +tr238: +//line msg_parse.rl:373 +value=nil +//line msg_parse.rl:133 - mark = p + p-- + + {goto st129 } - goto st155 - st155: - if p++; p == pe { - goto _test_eof155 - } - st_case_155: -//line msg_parse.go:4757 - switch data[p] { - case 13: - goto tr230 - case 37: - goto st155 - case 60: - goto st155 - case 64: - goto st156 - } - switch { - case data[p] < 45: - switch { - case data[p] > 34: - if 39 <= data[p] && data[p] <= 43 { - goto st155 - } - case data[p] >= 33: - goto st155 - } - case data[p] > 58: - switch { - case data[p] < 95: - if 62 <= data[p] && data[p] <= 93 { - goto st155 - } - case data[p] > 123: - if 125 <= data[p] && data[p] <= 126 { - goto st155 - } - default: - goto st155 - } - default: - goto st155 - } - goto st0 - st156: - if p++; p == pe { - goto _test_eof156 - } - st_case_156: - switch data[p] { - case 37: - goto st157 - case 60: - goto st157 - } - switch { - case data[p] < 62: - switch { - case data[p] < 39: - if 33 <= data[p] && data[p] <= 34 { - goto st157 - } - case data[p] > 43: - if 45 <= data[p] && data[p] <= 58 { - goto st157 - } - default: - goto st157 - } - case data[p] > 63: - switch { - case data[p] < 95: - if 65 <= data[p] && data[p] <= 93 { - goto st157 - } - case data[p] > 123: - if 125 <= data[p] && data[p] <= 126 { - goto st157 - } - default: - goto st157 - } - default: - goto st157 - } - goto st0 - st157: + goto st644 + st644: if p++; p == pe { - goto _test_eof157 - } - st_case_157: - switch data[p] { - case 13: - goto tr230 - case 37: - goto st157 - case 60: - goto st157 - } - switch { - case data[p] < 62: - switch { - case data[p] < 39: - if 33 <= data[p] && data[p] <= 34 { - goto st157 - } - case data[p] > 43: - if 45 <= data[p] && data[p] <= 58 { - goto st157 - } - default: - goto st157 - } - case data[p] > 63: - switch { - case data[p] < 95: - if 65 <= data[p] && data[p] <= 93 { - goto st157 - } - case data[p] > 123: - if 125 <= data[p] && data[p] <= 126 { - goto st157 - } - default: - goto st157 - } - default: - goto st157 + goto _test_eof644 } + st_case_644: +//line msg_parse.go:6765 goto st0 - st158: + st142: if p++; p == pe { - goto _test_eof158 + goto _test_eof142 } - st_case_158: + st_case_142: if data[p] == 10 { - goto tr234 + goto tr240 } goto st0 -tr234: -//line msg_parse.rl:224 +tr240: +//line msg_parse.rl:238 line++; linep = p; - goto st159 - st159: + goto st143 + st143: if p++; p == pe { - goto _test_eof159 + goto _test_eof143 } - st_case_159: -//line msg_parse.go:4899 + st_case_143: +//line msg_parse.go:6785 switch data[p] { case 9: - goto st160 + goto st144 case 32: - goto st160 + goto st144 } goto st0 - st160: + st144: if p++; p == pe { - goto _test_eof160 + goto _test_eof144 } - st_case_160: + st_case_144: switch data[p] { case 9: - goto st160 + goto st144 case 32: - goto st160 - case 37: - goto tr228 - case 60: - goto tr228 - } - switch { - case data[p] < 62: - switch { - case data[p] < 39: - if 33 <= data[p] && data[p] <= 34 { - goto tr228 - } - case data[p] > 43: - if 45 <= data[p] && data[p] <= 58 { - goto tr228 - } - default: - goto tr228 - } - case data[p] > 63: - switch { - case data[p] < 95: - if 65 <= data[p] && data[p] <= 93 { - goto tr228 - } - case data[p] > 123: - if 125 <= data[p] && data[p] <= 126 { - goto tr228 - } - default: - goto tr228 - } - default: - goto tr228 + goto st144 } - goto st0 - st161: + goto tr238 + st145: if p++; p == pe { - goto _test_eof161 + goto _test_eof145 } - st_case_161: + st_case_145: switch data[p] { + case 13: + goto st146 + case 65: + goto tr244 + case 66: + goto tr245 + case 67: + goto tr246 + case 68: + goto tr247 + case 69: + goto tr248 case 70: - goto st162 - case 102: - goto st162 - } - goto tr73 - st162: - if p++; p == pe { - goto _test_eof162 - } - st_case_162: - switch data[p] { + goto tr249 + case 73: + goto tr250 + case 75: + goto tr251 + case 76: + goto st372 + case 77: + goto tr253 case 79: - goto st163 + goto tr254 + case 80: + goto tr255 + case 82: + goto tr256 + case 83: + goto tr257 + case 84: + goto tr258 + case 85: + goto tr259 + case 86: + goto st598 + case 87: + goto tr261 + case 97: + goto tr244 + case 98: + goto tr245 + case 99: + goto tr246 + case 100: + goto tr247 + case 101: + goto tr248 + case 102: + goto tr249 + case 105: + goto tr250 + case 107: + goto tr251 + case 108: + goto st372 + case 109: + goto tr253 case 111: - goto st163 + goto tr254 + case 112: + goto tr255 + case 114: + goto tr256 + case 115: + goto tr257 + case 116: + goto tr258 + case 117: + goto tr259 + case 118: + goto st598 + case 119: + goto tr261 } - goto tr73 - st163: + goto tr242 + st146: if p++; p == pe { - goto _test_eof163 + goto _test_eof146 } - st_case_163: - switch data[p] { - case 9: - goto tr238 - case 32: - goto tr238 - case 58: - goto tr239 + st_case_146: + if data[p] == 10 { + goto tr262 } goto st0 - st164: - if p++; p == pe { - goto _test_eof164 - } - st_case_164: - switch data[p] { - case 78: - goto st165 - case 110: - goto st165 - } - goto tr73 - st165: - if p++; p == pe { - goto _test_eof165 - } - st_case_165: - switch data[p] { - case 84: - goto st166 - case 116: - goto st166 - } - goto tr73 - st166: +tr387: +//line msg_parse.rl:238 + line++; linep = p; +//line msg_parse.rl:129 + + {goto st145 } + + goto st645 +tr262: +//line msg_parse.rl:238 + line++; linep = p; +//line msg_parse.rl:55 + + {p++; cs = 645; goto _out } + + goto st645 +tr270: +//line msg_parse.rl:133 + + p-- + + {goto st129 } + + goto st645 +tr421: +//line msg_parse.rl:124 + + p-- + + {goto st34 } + + goto st645 + st645: if p++; p == pe { - goto _test_eof166 - } - st_case_166: - switch data[p] { - case 65: - goto st167 - case 69: - goto st181 - case 97: - goto st167 - case 101: - goto st181 + goto _test_eof645 } - goto tr73 - st167: + st_case_645: +//line msg_parse.go:6933 + goto st0 +tr244: +//line msg_parse.rl:59 + + mark = p + + goto st147 + st147: if p++; p == pe { - goto _test_eof167 + goto _test_eof147 } - st_case_167: + st_case_147: +//line msg_parse.go:6946 switch data[p] { + case 9: + goto tr263 + case 32: + goto tr263 + case 58: + goto tr264 case 67: - goto st168 + goto st153 + case 76: + goto st182 + case 85: + goto st201 case 99: - goto st168 - } - goto st0 - st168: - if p++; p == pe { - goto _test_eof168 - } - st_case_168: - switch data[p] { - case 84: - goto st169 - case 116: - goto st169 + goto st153 + case 108: + goto st182 + case 117: + goto st201 } goto st0 - st169: +tr263: +//line msg_parse.rl:334 +value=&msg.AcceptContact + goto st148 +tr279: +//line msg_parse.rl:333 +value=&msg.Accept + goto st148 +tr298: +//line msg_parse.rl:335 +value=&msg.AcceptEncoding + goto st148 +tr307: +//line msg_parse.rl:336 +value=&msg.AcceptLanguage + goto st148 +tr318: +//line msg_parse.rl:339 +value=&msg.AlertInfo + goto st148 +tr322: +//line msg_parse.rl:337 +value=&msg.Allow + goto st148 +tr331: +//line msg_parse.rl:338 +value=&msg.AllowEvents + goto st148 +tr351: +//line msg_parse.rl:340 +value=&msg.AuthenticationInfo + goto st148 +tr361: +//line msg_parse.rl:341 +value=&msg.Authorization + goto st148 +tr363: +//line msg_parse.rl:358 +value=&msg.ReferredBy + goto st148 +tr409: +//line msg_parse.rl:345 +value=&msg.CallInfo + goto st148 +tr442: +//line msg_parse.rl:342 +value=&msg.ContentDisposition + goto st148 +tr451: +//line msg_parse.rl:344 +value=&msg.ContentEncoding + goto st148 +tr461: +//line msg_parse.rl:343 +value=&msg.ContentLanguage + goto st148 +tr494: +//line msg_parse.rl:346 +value=&msg.Date + goto st148 +tr507: +//line msg_parse.rl:347 +value=&msg.ErrorInfo + goto st148 +tr512: +//line msg_parse.rl:348 +value=&msg.Event + goto st148 +tr540: +//line msg_parse.rl:349 +value=&msg.InReplyTo + goto st148 +tr542: +//line msg_parse.rl:363 +value=&msg.Supported + goto st148 +tr579: +//line msg_parse.rl:351 +value=&msg.MIMEVersion + goto st148 +tr606: +//line msg_parse.rl:352 +value=&msg.Organization + goto st148 +tr636: +//line msg_parse.rl:353 +value=&msg.Priority + goto st148 +tr655: +//line msg_parse.rl:354 +value=&msg.ProxyAuthenticate + goto st148 +tr665: +//line msg_parse.rl:355 +value=&msg.ProxyAuthorization + goto st148 +tr673: +//line msg_parse.rl:356 +value=&msg.ProxyRequire + goto st148 +tr675: +//line msg_parse.rl:357 +value=&msg.ReferTo + goto st148 +tr726: +//line msg_parse.rl:350 +value=&msg.ReplyTo + goto st148 +tr732: +//line msg_parse.rl:359 +value=&msg.Require + goto st148 +tr742: +//line msg_parse.rl:360 +value=&msg.RetryAfter + goto st148 +tr749: +//line msg_parse.rl:362 +value=&msg.Subject + goto st148 +tr757: +//line msg_parse.rl:361 +value=&msg.Server + goto st148 +tr782: +//line msg_parse.rl:364 +value=&msg.Timestamp + goto st148 +tr784: +//line msg_parse.rl:337 +value=&msg.Allow +//line msg_parse.rl:338 +value=&msg.AllowEvents + goto st148 +tr797: +//line msg_parse.rl:365 +value=&msg.Unsupported + goto st148 +tr807: +//line msg_parse.rl:366 +value=&msg.UserAgent + goto st148 +tr840: +//line msg_parse.rl:367 +value=&msg.Warning + goto st148 +tr856: +//line msg_parse.rl:368 +value=&msg.WWWAuthenticate + goto st148 + st148: if p++; p == pe { - goto _test_eof169 + goto _test_eof148 } - st_case_169: + st_case_148: +//line msg_parse.go:7123 switch data[p] { case 9: - goto st169 + goto st148 case 32: - goto st169 + goto st148 case 58: - goto st170 + goto st149 } goto st0 - st170: +tr264: +//line msg_parse.rl:334 +value=&msg.AcceptContact + goto st149 +tr281: +//line msg_parse.rl:333 +value=&msg.Accept + goto st149 +tr299: +//line msg_parse.rl:335 +value=&msg.AcceptEncoding + goto st149 +tr308: +//line msg_parse.rl:336 +value=&msg.AcceptLanguage + goto st149 +tr319: +//line msg_parse.rl:339 +value=&msg.AlertInfo + goto st149 +tr324: +//line msg_parse.rl:337 +value=&msg.Allow + goto st149 +tr332: +//line msg_parse.rl:338 +value=&msg.AllowEvents + goto st149 +tr352: +//line msg_parse.rl:340 +value=&msg.AuthenticationInfo + goto st149 +tr362: +//line msg_parse.rl:341 +value=&msg.Authorization + goto st149 +tr364: +//line msg_parse.rl:358 +value=&msg.ReferredBy + goto st149 +tr410: +//line msg_parse.rl:345 +value=&msg.CallInfo + goto st149 +tr443: +//line msg_parse.rl:342 +value=&msg.ContentDisposition + goto st149 +tr452: +//line msg_parse.rl:344 +value=&msg.ContentEncoding + goto st149 +tr462: +//line msg_parse.rl:343 +value=&msg.ContentLanguage + goto st149 +tr495: +//line msg_parse.rl:346 +value=&msg.Date + goto st149 +tr508: +//line msg_parse.rl:347 +value=&msg.ErrorInfo + goto st149 +tr513: +//line msg_parse.rl:348 +value=&msg.Event + goto st149 +tr541: +//line msg_parse.rl:349 +value=&msg.InReplyTo + goto st149 +tr543: +//line msg_parse.rl:363 +value=&msg.Supported + goto st149 +tr580: +//line msg_parse.rl:351 +value=&msg.MIMEVersion + goto st149 +tr607: +//line msg_parse.rl:352 +value=&msg.Organization + goto st149 +tr637: +//line msg_parse.rl:353 +value=&msg.Priority + goto st149 +tr656: +//line msg_parse.rl:354 +value=&msg.ProxyAuthenticate + goto st149 +tr666: +//line msg_parse.rl:355 +value=&msg.ProxyAuthorization + goto st149 +tr674: +//line msg_parse.rl:356 +value=&msg.ProxyRequire + goto st149 +tr676: +//line msg_parse.rl:357 +value=&msg.ReferTo + goto st149 +tr727: +//line msg_parse.rl:350 +value=&msg.ReplyTo + goto st149 +tr733: +//line msg_parse.rl:359 +value=&msg.Require + goto st149 +tr743: +//line msg_parse.rl:360 +value=&msg.RetryAfter + goto st149 +tr750: +//line msg_parse.rl:362 +value=&msg.Subject + goto st149 +tr758: +//line msg_parse.rl:361 +value=&msg.Server + goto st149 +tr783: +//line msg_parse.rl:364 +value=&msg.Timestamp + goto st149 +tr785: +//line msg_parse.rl:337 +value=&msg.Allow +//line msg_parse.rl:338 +value=&msg.AllowEvents + goto st149 +tr798: +//line msg_parse.rl:365 +value=&msg.Unsupported + goto st149 +tr808: +//line msg_parse.rl:366 +value=&msg.UserAgent + goto st149 +tr841: +//line msg_parse.rl:367 +value=&msg.Warning + goto st149 +tr857: +//line msg_parse.rl:368 +value=&msg.WWWAuthenticate + goto st149 + st149: if p++; p == pe { - goto _test_eof170 + goto _test_eof149 } - st_case_170: + st_case_149: +//line msg_parse.go:7288 _widec = int16(data[p]) if 13 <= data[p] && data[p] <= 13 { _widec = 256 + (int16(data[p]) - 0) @@ -5079,1427 +7294,1833 @@ tr234: } switch _widec { case 9: - goto st170 + goto st149 case 32: - goto st170 + goto st149 case 269: - goto tr253 + goto tr270 case 525: - goto st178 + goto st150 } switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto tr248 - } - case _widec >= 33: - goto tr247 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr250 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr252 - } - default: - goto tr251 + case _widec > 12: + if 14 <= _widec { + goto tr270 } default: - goto tr249 + goto tr270 } goto st0 -tr247: -//line msg_parse.rl:55 - - mark = p - - goto st171 - st171: + st150: if p++; p == pe { - goto _test_eof171 - } - st_case_171: -//line msg_parse.go:5129 - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st171 - case 269: - goto tr261 - case 525: - goto tr262 + goto _test_eof150 } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto st172 - } - case _widec >= 32: - goto st171 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto st174 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto st176 - } - default: - goto st175 - } - default: - goto st173 + st_case_150: + if data[p] == 10 { + goto tr272 } goto st0 -tr248: -//line msg_parse.rl:55 - - mark = p - - goto st172 - st172: +tr272: +//line msg_parse.rl:238 + line++; linep = p; + goto st151 + st151: if p++; p == pe { - goto _test_eof172 + goto _test_eof151 } - st_case_172: -//line msg_parse.go:5183 - if 128 <= data[p] && data[p] <= 191 { - goto st171 + st_case_151: +//line msg_parse.go:7333 + switch data[p] { + case 9: + goto st152 + case 32: + goto st152 } goto st0 -tr249: -//line msg_parse.rl:55 - - mark = p - - goto st173 - st173: + st152: if p++; p == pe { - goto _test_eof173 + goto _test_eof152 } - st_case_173: -//line msg_parse.go:5199 - if 128 <= data[p] && data[p] <= 191 { - goto st172 + st_case_152: + switch data[p] { + case 9: + goto st152 + case 32: + goto st152 } - goto st0 -tr250: -//line msg_parse.rl:55 - - mark = p - - goto st174 - st174: + goto tr270 + st153: if p++; p == pe { - goto _test_eof174 + goto _test_eof153 } - st_case_174: -//line msg_parse.go:5215 - if 128 <= data[p] && data[p] <= 191 { - goto st173 + st_case_153: + switch data[p] { + case 67: + goto st154 + case 99: + goto st154 } - goto st0 -tr251: -//line msg_parse.rl:55 - - mark = p - - goto st175 - st175: + goto tr274 + st154: if p++; p == pe { - goto _test_eof175 + goto _test_eof154 } - st_case_175: -//line msg_parse.go:5231 - if 128 <= data[p] && data[p] <= 191 { - goto st174 + st_case_154: + switch data[p] { + case 69: + goto st155 + case 101: + goto st155 } - goto st0 -tr252: -//line msg_parse.rl:55 - - mark = p - - goto st176 - st176: + goto tr274 + st155: if p++; p == pe { - goto _test_eof176 + goto _test_eof155 } - st_case_176: -//line msg_parse.go:5247 - if 128 <= data[p] && data[p] <= 191 { - goto st175 + st_case_155: + switch data[p] { + case 80: + goto st156 + case 112: + goto st156 } - goto st0 -tr266: -//line msg_parse.rl:55 - - mark = p - -//line msg_parse.rl:146 - - *contactp, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - for *contactp != nil { contactp = &(*contactp).Next } - - goto st177 -tr262: -//line msg_parse.rl:146 - - *contactp, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - for *contactp != nil { contactp = &(*contactp).Next } - - goto st177 - st177: + goto tr274 + st156: if p++; p == pe { - goto _test_eof177 + goto _test_eof156 } - st_case_177: -//line msg_parse.go:5277 - if data[p] == 10 { - goto tr263 + st_case_156: + switch data[p] { + case 84: + goto st157 + case 116: + goto st157 } - goto st0 -tr263: -//line msg_parse.rl:224 - line++; linep = p; -//line msg_parse.rl:111 - - {goto st50 } - - goto st617 - st617: + goto tr274 + st157: if p++; p == pe { - goto _test_eof617 + goto _test_eof157 } - st_case_617: -//line msg_parse.go:5295 + st_case_157: switch data[p] { case 9: - goto st171 + goto tr279 case 32: - goto st171 + goto tr279 + case 45: + goto st158 + case 58: + goto tr281 } goto st0 - st178: + st158: if p++; p == pe { - goto _test_eof178 + goto _test_eof158 } - st_case_178: - if data[p] == 10 { - goto tr264 + st_case_158: + switch data[p] { + case 67: + goto st159 + case 69: + goto st166 + case 76: + goto st174 + case 99: + goto st159 + case 101: + goto st166 + case 108: + goto st174 } - goto st0 -tr264: -//line msg_parse.rl:224 - line++; linep = p; - goto st179 - st179: + goto tr274 + st159: if p++; p == pe { - goto _test_eof179 + goto _test_eof159 } - st_case_179: -//line msg_parse.go:5321 + st_case_159: switch data[p] { - case 9: - goto st180 - case 32: - goto st180 + case 79: + goto st160 + case 111: + goto st160 } - goto st0 - st180: + goto tr274 + st160: if p++; p == pe { - goto _test_eof180 + goto _test_eof160 } - st_case_180: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } + st_case_160: + switch data[p] { + case 78: + goto st161 + case 110: + goto st161 } - switch _widec { - case 9: - goto st180 - case 32: - goto st180 - case 269: - goto tr253 - case 525: - goto tr266 - } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto tr248 - } - case _widec >= 33: - goto tr247 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr250 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr252 - } - default: - goto tr251 - } - default: - goto tr249 - } - goto st0 - st181: + goto tr274 + st161: if p++; p == pe { - goto _test_eof181 + goto _test_eof161 } - st_case_181: + st_case_161: switch data[p] { - case 78: - goto st182 - case 110: - goto st182 + case 84: + goto st162 + case 116: + goto st162 } - goto tr73 - st182: + goto tr274 + st162: if p++; p == pe { - goto _test_eof182 + goto _test_eof162 } - st_case_182: + st_case_162: switch data[p] { - case 84: - goto st183 - case 116: - goto st183 + case 65: + goto st163 + case 97: + goto st163 } - goto tr73 - st183: + goto tr274 + st163: if p++; p == pe { - goto _test_eof183 + goto _test_eof163 } - st_case_183: - if data[p] == 45 { - goto st184 + st_case_163: + switch data[p] { + case 67: + goto st164 + case 99: + goto st164 } - goto tr73 - st184: + goto tr274 + st164: if p++; p == pe { - goto _test_eof184 + goto _test_eof164 } - st_case_184: + st_case_164: switch data[p] { - case 68: - goto st185 - case 69: - goto st196 - case 76: - goto st204 case 84: - goto st222 - case 100: - goto st185 - case 101: - goto st196 - case 108: - goto st204 + goto st165 case 116: - goto st222 + goto st165 } - goto tr73 - st185: + goto tr274 + st165: if p++; p == pe { - goto _test_eof185 + goto _test_eof165 } - st_case_185: + st_case_165: switch data[p] { - case 73: - goto st186 - case 105: - goto st186 + case 9: + goto tr263 + case 32: + goto tr263 + case 58: + goto tr264 } - goto tr73 - st186: + goto st0 + st166: if p++; p == pe { - goto _test_eof186 + goto _test_eof166 } - st_case_186: + st_case_166: switch data[p] { - case 83: - goto st187 - case 115: - goto st187 + case 78: + goto st167 + case 110: + goto st167 } - goto tr73 - st187: + goto tr274 + st167: if p++; p == pe { - goto _test_eof187 + goto _test_eof167 } - st_case_187: + st_case_167: switch data[p] { - case 80: - goto st188 - case 112: - goto st188 + case 67: + goto st168 + case 99: + goto st168 } - goto tr73 - st188: + goto tr274 + st168: if p++; p == pe { - goto _test_eof188 + goto _test_eof168 } - st_case_188: + st_case_168: switch data[p] { case 79: - goto st189 + goto st169 case 111: - goto st189 - } - goto tr73 - st189: - if p++; p == pe { - goto _test_eof189 - } - st_case_189: - switch data[p] { - case 83: - goto st190 - case 115: - goto st190 - } - goto tr73 - st190: - if p++; p == pe { - goto _test_eof190 - } - st_case_190: - switch data[p] { - case 73: - goto st191 - case 105: - goto st191 + goto st169 } - goto tr73 - st191: + goto tr274 + st169: if p++; p == pe { - goto _test_eof191 + goto _test_eof169 } - st_case_191: + st_case_169: switch data[p] { - case 84: - goto st192 - case 116: - goto st192 + case 68: + goto st170 + case 100: + goto st170 } - goto tr73 - st192: + goto tr274 + st170: if p++; p == pe { - goto _test_eof192 + goto _test_eof170 } - st_case_192: + st_case_170: switch data[p] { case 73: - goto st193 + goto st171 case 105: - goto st193 + goto st171 } - goto tr73 - st193: + goto tr274 + st171: if p++; p == pe { - goto _test_eof193 + goto _test_eof171 } - st_case_193: + st_case_171: switch data[p] { - case 79: - goto st194 - case 111: - goto st194 + case 78: + goto st172 + case 110: + goto st172 } - goto tr73 - st194: + goto tr274 + st172: if p++; p == pe { - goto _test_eof194 + goto _test_eof172 } - st_case_194: + st_case_172: switch data[p] { - case 78: - goto st195 - case 110: - goto st195 + case 71: + goto st173 + case 103: + goto st173 } - goto tr73 - st195: + goto tr274 + st173: if p++; p == pe { - goto _test_eof195 + goto _test_eof173 } - st_case_195: + st_case_173: switch data[p] { case 9: - goto tr284 + goto tr298 case 32: - goto tr284 + goto tr298 case 58: - goto tr285 + goto tr299 } goto st0 - st196: + st174: if p++; p == pe { - goto _test_eof196 + goto _test_eof174 } - st_case_196: + st_case_174: + switch data[p] { + case 65: + goto st175 + case 97: + goto st175 + } + goto tr274 + st175: + if p++; p == pe { + goto _test_eof175 + } + st_case_175: switch data[p] { case 78: - goto st197 + goto st176 case 110: - goto st197 + goto st176 } - goto tr73 - st197: + goto tr274 + st176: if p++; p == pe { - goto _test_eof197 + goto _test_eof176 } - st_case_197: + st_case_176: switch data[p] { - case 67: - goto st198 - case 99: - goto st198 - } - goto tr73 - st198: - if p++; p == pe { - goto _test_eof198 - } - st_case_198: - switch data[p] { - case 79: - goto st199 - case 111: - goto st199 + case 71: + goto st177 + case 103: + goto st177 } - goto tr73 - st199: + goto tr274 + st177: if p++; p == pe { - goto _test_eof199 + goto _test_eof177 } - st_case_199: + st_case_177: switch data[p] { - case 68: - goto st200 - case 100: - goto st200 + case 85: + goto st178 + case 117: + goto st178 } - goto tr73 - st200: + goto tr274 + st178: if p++; p == pe { - goto _test_eof200 + goto _test_eof178 } - st_case_200: + st_case_178: switch data[p] { - case 73: - goto st201 - case 105: - goto st201 + case 65: + goto st179 + case 97: + goto st179 } - goto tr73 - st201: + goto tr274 + st179: if p++; p == pe { - goto _test_eof201 + goto _test_eof179 } - st_case_201: + st_case_179: switch data[p] { - case 78: - goto st202 - case 110: - goto st202 + case 71: + goto st180 + case 103: + goto st180 } - goto tr73 - st202: + goto tr274 + st180: if p++; p == pe { - goto _test_eof202 + goto _test_eof180 } - st_case_202: + st_case_180: switch data[p] { - case 71: - goto st203 - case 103: - goto st203 + case 69: + goto st181 + case 101: + goto st181 } - goto tr73 - st203: + goto tr274 + st181: if p++; p == pe { - goto _test_eof203 + goto _test_eof181 } - st_case_203: + st_case_181: switch data[p] { case 9: - goto tr293 + goto tr307 case 32: - goto tr293 + goto tr307 case 58: - goto tr294 + goto tr308 } goto st0 - st204: + st182: if p++; p == pe { - goto _test_eof204 + goto _test_eof182 } - st_case_204: + st_case_182: switch data[p] { - case 65: - goto st205 case 69: - goto st212 - case 97: - goto st205 + goto st183 + case 76: + goto st191 case 101: - goto st212 + goto st183 + case 108: + goto st191 } - goto tr73 - st205: + goto tr274 + st183: if p++; p == pe { - goto _test_eof205 + goto _test_eof183 } - st_case_205: + st_case_183: switch data[p] { - case 78: - goto st206 - case 110: - goto st206 + case 82: + goto st184 + case 114: + goto st184 } - goto tr73 - st206: + goto tr274 + st184: if p++; p == pe { - goto _test_eof206 + goto _test_eof184 } - st_case_206: + st_case_184: switch data[p] { - case 71: - goto st207 - case 103: - goto st207 + case 84: + goto st185 + case 116: + goto st185 } - goto tr73 - st207: + goto tr274 + st185: if p++; p == pe { - goto _test_eof207 + goto _test_eof185 } - st_case_207: + st_case_185: + if data[p] == 45 { + goto st186 + } + goto tr274 + st186: + if p++; p == pe { + goto _test_eof186 + } + st_case_186: switch data[p] { - case 85: - goto st208 - case 117: - goto st208 + case 73: + goto st187 + case 105: + goto st187 } - goto tr73 - st208: + goto tr274 + st187: if p++; p == pe { - goto _test_eof208 + goto _test_eof187 } - st_case_208: + st_case_187: switch data[p] { - case 65: - goto st209 - case 97: - goto st209 + case 78: + goto st188 + case 110: + goto st188 } - goto tr73 - st209: + goto tr274 + st188: if p++; p == pe { - goto _test_eof209 + goto _test_eof188 } - st_case_209: + st_case_188: switch data[p] { - case 71: - goto st210 - case 103: - goto st210 + case 70: + goto st189 + case 102: + goto st189 } - goto tr73 - st210: + goto tr274 + st189: if p++; p == pe { - goto _test_eof210 + goto _test_eof189 } - st_case_210: + st_case_189: switch data[p] { - case 69: - goto st211 - case 101: - goto st211 + case 79: + goto st190 + case 111: + goto st190 } - goto tr73 - st211: + goto tr274 + st190: if p++; p == pe { - goto _test_eof211 + goto _test_eof190 } - st_case_211: + st_case_190: switch data[p] { case 9: - goto tr303 + goto tr318 case 32: - goto tr303 + goto tr318 case 58: - goto tr304 + goto tr319 } goto st0 - st212: + st191: if p++; p == pe { - goto _test_eof212 + goto _test_eof191 } - st_case_212: + st_case_191: switch data[p] { - case 78: - goto st213 - case 110: - goto st213 + case 79: + goto st192 + case 111: + goto st192 } - goto st0 - st213: + goto tr274 + st192: if p++; p == pe { - goto _test_eof213 + goto _test_eof192 } - st_case_213: + st_case_192: switch data[p] { - case 71: - goto st214 - case 103: - goto st214 + case 87: + goto st193 + case 119: + goto st193 } - goto st0 - st214: + goto tr274 + st193: if p++; p == pe { - goto _test_eof214 + goto _test_eof193 } - st_case_214: + st_case_193: switch data[p] { - case 84: - goto st215 - case 116: - goto st215 + case 9: + goto tr322 + case 32: + goto tr322 + case 45: + goto st194 + case 58: + goto tr324 } goto st0 - st215: + st194: if p++; p == pe { - goto _test_eof215 + goto _test_eof194 } - st_case_215: + st_case_194: switch data[p] { - case 72: - goto st216 - case 104: - goto st216 + case 69: + goto st195 + case 101: + goto st195 } - goto st0 - st216: + goto tr274 + st195: if p++; p == pe { - goto _test_eof216 + goto _test_eof195 } - st_case_216: + st_case_195: switch data[p] { - case 9: - goto st216 - case 32: - goto st216 - case 58: - goto st217 + case 86: + goto st196 + case 118: + goto st196 } - goto st0 - st217: + goto tr274 + st196: if p++; p == pe { - goto _test_eof217 - } - st_case_217: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st217 - case 32: - goto st217 - case 525: - goto st219 + goto _test_eof196 } - if 48 <= _widec && _widec <= 57 { - goto tr310 + st_case_196: + switch data[p] { + case 69: + goto st197 + case 101: + goto st197 } - goto st0 -tr310: -//line msg_parse.rl:287 -clen=0 -//line msg_parse.rl:152 - - clen = clen * 10 + (int(data[p]) - 0x30) - - goto st218 -tr313: -//line msg_parse.rl:152 - - clen = clen * 10 + (int(data[p]) - 0x30) - - goto st218 - st218: + goto tr274 + st197: if p++; p == pe { - goto _test_eof218 - } - st_case_218: -//line msg_parse.go:5874 - if data[p] == 13 { - goto st143 + goto _test_eof197 } - if 48 <= data[p] && data[p] <= 57 { - goto tr313 + st_case_197: + switch data[p] { + case 78: + goto st198 + case 110: + goto st198 } - goto st0 - st219: + goto tr274 + st198: if p++; p == pe { - goto _test_eof219 + goto _test_eof198 } - st_case_219: - if data[p] == 10 { - goto tr314 + st_case_198: + switch data[p] { + case 84: + goto st199 + case 116: + goto st199 } - goto st0 -tr314: -//line msg_parse.rl:224 - line++; linep = p; - goto st220 - st220: + goto tr274 + st199: if p++; p == pe { - goto _test_eof220 + goto _test_eof199 } - st_case_220: -//line msg_parse.go:5900 + st_case_199: switch data[p] { - case 9: - goto st221 - case 32: - goto st221 + case 83: + goto st200 + case 115: + goto st200 } - goto st0 - st221: + goto tr274 + st200: if p++; p == pe { - goto _test_eof221 + goto _test_eof200 } - st_case_221: + st_case_200: switch data[p] { case 9: - goto st221 + goto tr331 case 32: - goto st221 - } - if 48 <= data[p] && data[p] <= 57 { - goto tr310 + goto tr331 + case 58: + goto tr332 } goto st0 - st222: + st201: if p++; p == pe { - goto _test_eof222 + goto _test_eof201 } - st_case_222: + st_case_201: switch data[p] { - case 89: - goto st223 - case 121: - goto st223 + case 84: + goto st202 + case 116: + goto st202 } - goto st0 - st223: + goto tr274 + st202: if p++; p == pe { - goto _test_eof223 + goto _test_eof202 } - st_case_223: + st_case_202: switch data[p] { - case 80: - goto st224 - case 112: - goto st224 + case 72: + goto st203 + case 104: + goto st203 } - goto st0 - st224: + goto tr274 + st203: if p++; p == pe { - goto _test_eof224 + goto _test_eof203 } - st_case_224: + st_case_203: switch data[p] { case 69: - goto st135 + goto st204 + case 79: + goto st219 case 101: - goto st135 + goto st204 + case 111: + goto st219 } - goto st0 - st225: + goto tr274 + st204: if p++; p == pe { - goto _test_eof225 + goto _test_eof204 } - st_case_225: + st_case_204: switch data[p] { - case 69: - goto st226 - case 101: - goto st226 + case 78: + goto st205 + case 110: + goto st205 } - goto st0 - st226: + goto tr274 + st205: if p++; p == pe { - goto _test_eof226 + goto _test_eof205 } - st_case_226: + st_case_205: switch data[p] { - case 81: - goto st227 - case 113: - goto st227 + case 84: + goto st206 + case 116: + goto st206 } - goto st0 - st227: + goto tr274 + st206: if p++; p == pe { - goto _test_eof227 + goto _test_eof206 } - st_case_227: + st_case_206: switch data[p] { - case 9: - goto st227 - case 32: - goto st227 - case 58: - goto st228 + case 73: + goto st207 + case 105: + goto st207 } - goto st0 - st228: + goto tr274 + st207: if p++; p == pe { - goto _test_eof228 - } - st_case_228: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st228 - case 32: - goto st228 - case 525: - goto st235 + goto _test_eof207 } - if 48 <= _widec && _widec <= 57 { - goto tr321 + st_case_207: + switch data[p] { + case 67: + goto st208 + case 99: + goto st208 } - goto st0 -tr321: -//line msg_parse.rl:160 - - msg.CSeq = msg.CSeq * 10 + (int(data[p]) - 0x30) - - goto st229 - st229: + goto tr274 + st208: if p++; p == pe { - goto _test_eof229 - } - st_case_229: -//line msg_parse.go:6032 - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st230 - case 32: - goto st230 - case 525: - goto st232 + goto _test_eof208 } - if 48 <= _widec && _widec <= 57 { - goto tr321 + st_case_208: + switch data[p] { + case 65: + goto st209 + case 97: + goto st209 } - goto st0 - st230: + goto tr274 + st209: if p++; p == pe { - goto _test_eof230 + goto _test_eof209 } - st_case_230: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } + st_case_209: + switch data[p] { + case 84: + goto st210 + case 116: + goto st210 } - switch _widec { - case 9: - goto st230 - case 32: - goto st230 - case 33: - goto tr325 - case 37: - goto tr325 - case 39: - goto tr325 - case 126: - goto tr325 - case 525: - goto st232 + goto tr274 + st210: + if p++; p == pe { + goto _test_eof210 } - switch { - case _widec < 48: - switch { - case _widec > 43: - if 45 <= _widec && _widec <= 46 { - goto tr325 - } - case _widec >= 42: - goto tr325 - } - case _widec > 57: - switch { - case _widec > 90: - if 95 <= _widec && _widec <= 122 { - goto tr325 - } - case _widec >= 65: - goto tr325 - } - default: - goto tr325 + st_case_210: + switch data[p] { + case 73: + goto st211 + case 105: + goto st211 } - goto st0 -tr325: -//line msg_parse.rl:55 - - mark = p - - goto st231 - st231: + goto tr274 + st211: if p++; p == pe { - goto _test_eof231 + goto _test_eof211 } - st_case_231: -//line msg_parse.go:6114 + st_case_211: switch data[p] { - case 13: - goto tr326 - case 33: - goto st231 - case 37: - goto st231 - case 39: - goto st231 - case 126: - goto st231 + case 79: + goto st212 + case 111: + goto st212 } - switch { - case data[p] < 48: - switch { - case data[p] > 43: - if 45 <= data[p] && data[p] <= 46 { - goto st231 - } - case data[p] >= 42: - goto st231 - } - case data[p] > 57: - switch { - case data[p] > 90: - if 95 <= data[p] && data[p] <= 122 { - goto st231 - } - case data[p] >= 65: - goto st231 - } - default: - goto st231 + goto tr274 + st212: + if p++; p == pe { + goto _test_eof212 } - goto st0 - st232: + st_case_212: + switch data[p] { + case 78: + goto st213 + case 110: + goto st213 + } + goto tr274 + st213: if p++; p == pe { - goto _test_eof232 + goto _test_eof213 } - st_case_232: - if data[p] == 10 { - goto tr328 + st_case_213: + if data[p] == 45 { + goto st214 } - goto st0 -tr328: -//line msg_parse.rl:224 - line++; linep = p; - goto st233 - st233: + goto tr274 + st214: if p++; p == pe { - goto _test_eof233 + goto _test_eof214 } - st_case_233: -//line msg_parse.go:6168 + st_case_214: switch data[p] { - case 9: - goto st234 - case 32: - goto st234 + case 73: + goto st215 + case 105: + goto st215 } - goto st0 - st234: + goto tr274 + st215: if p++; p == pe { - goto _test_eof234 + goto _test_eof215 } - st_case_234: + st_case_215: switch data[p] { - case 9: - goto st234 - case 32: - goto st234 - case 33: - goto tr325 - case 37: - goto tr325 - case 39: - goto tr325 - case 126: - goto tr325 + case 78: + goto st216 + case 110: + goto st216 } - switch { - case data[p] < 48: - switch { - case data[p] > 43: - if 45 <= data[p] && data[p] <= 46 { - goto tr325 - } - case data[p] >= 42: - goto tr325 - } - case data[p] > 57: - switch { - case data[p] > 90: - if 95 <= data[p] && data[p] <= 122 { - goto tr325 - } - case data[p] >= 65: - goto tr325 - } - default: - goto tr325 + goto tr274 + st216: + if p++; p == pe { + goto _test_eof216 } - goto st0 - st235: + st_case_216: + switch data[p] { + case 70: + goto st217 + case 102: + goto st217 + } + goto tr274 + st217: if p++; p == pe { - goto _test_eof235 + goto _test_eof217 } - st_case_235: - if data[p] == 10 { - goto tr330 + st_case_217: + switch data[p] { + case 79: + goto st218 + case 111: + goto st218 } - goto st0 -tr330: -//line msg_parse.rl:224 - line++; linep = p; - goto st236 - st236: + goto tr274 + st218: if p++; p == pe { - goto _test_eof236 + goto _test_eof218 } - st_case_236: -//line msg_parse.go:6236 + st_case_218: switch data[p] { case 9: - goto st237 + goto tr351 case 32: - goto st237 + goto tr351 + case 58: + goto tr352 } goto st0 - st237: + st219: if p++; p == pe { - goto _test_eof237 + goto _test_eof219 } - st_case_237: + st_case_219: switch data[p] { - case 9: - goto st237 - case 32: - goto st237 + case 82: + goto st220 + case 114: + goto st220 } - if 48 <= data[p] && data[p] <= 57 { - goto tr321 + goto tr274 + st220: + if p++; p == pe { + goto _test_eof220 } - goto st0 -tr78: -//line msg_parse.rl:55 - - mark = p - - goto st238 - st238: + st_case_220: + switch data[p] { + case 73: + goto st221 + case 105: + goto st221 + } + goto tr274 + st221: if p++; p == pe { - goto _test_eof238 + goto _test_eof221 } - st_case_238: -//line msg_parse.go:6270 + st_case_221: + switch data[p] { + case 90: + goto st222 + case 122: + goto st222 + } + goto tr274 + st222: + if p++; p == pe { + goto _test_eof222 + } + st_case_222: switch data[p] { case 65: - goto st239 + goto st223 case 97: - goto st239 + goto st223 } - goto tr73 - st239: + goto tr274 + st223: if p++; p == pe { - goto _test_eof239 + goto _test_eof223 } - st_case_239: + st_case_223: switch data[p] { case 84: - goto st240 + goto st224 case 116: - goto st240 + goto st224 } - goto tr73 - st240: + goto tr274 + st224: if p++; p == pe { - goto _test_eof240 + goto _test_eof224 } - st_case_240: + st_case_224: switch data[p] { - case 69: - goto st241 - case 101: - goto st241 + case 73: + goto st225 + case 105: + goto st225 } - goto tr73 - st241: + goto tr274 + st225: if p++; p == pe { - goto _test_eof241 + goto _test_eof225 } - st_case_241: + st_case_225: + switch data[p] { + case 79: + goto st226 + case 111: + goto st226 + } + goto tr274 + st226: + if p++; p == pe { + goto _test_eof226 + } + st_case_226: + switch data[p] { + case 78: + goto st227 + case 110: + goto st227 + } + goto tr274 + st227: + if p++; p == pe { + goto _test_eof227 + } + st_case_227: switch data[p] { case 9: - goto tr335 + goto tr361 case 32: - goto tr335 + goto tr361 case 58: - goto tr336 + goto tr362 } goto st0 -tr79: -//line msg_parse.rl:55 +tr245: +//line msg_parse.rl:59 mark = p - goto st242 - st242: + goto st228 + st228: if p++; p == pe { - goto _test_eof242 + goto _test_eof228 } - st_case_242: -//line msg_parse.go:6327 + st_case_228: +//line msg_parse.go:8296 switch data[p] { case 9: - goto tr293 + goto tr363 case 32: - goto tr293 + goto tr363 case 58: - goto tr294 - case 82: - goto st243 - case 86: - goto st252 - case 88: - goto st256 - case 114: - goto st243 - case 118: - goto st252 - case 120: - goto st256 + goto tr364 } goto st0 - st243: - if p++; p == pe { - goto _test_eof243 - } - st_case_243: - switch data[p] { - case 82: - goto st244 - case 114: - goto st244 - } - goto tr73 - st244: - if p++; p == pe { - goto _test_eof244 - } - st_case_244: - switch data[p] { - case 79: - goto st245 - case 111: - goto st245 - } - goto tr73 - st245: - if p++; p == pe { - goto _test_eof245 - } - st_case_245: - switch data[p] { - case 82: - goto st246 - case 114: - goto st246 - } - goto tr73 - st246: - if p++; p == pe { - goto _test_eof246 - } - st_case_246: - if data[p] == 45 { - goto st247 - } - goto tr73 - st247: - if p++; p == pe { - goto _test_eof247 - } - st_case_247: - switch data[p] { - case 73: - goto st248 - case 105: - goto st248 - } - goto tr73 - st248: - if p++; p == pe { - goto _test_eof248 - } - st_case_248: - switch data[p] { - case 78: - goto st249 - case 110: - goto st249 - } - goto tr73 - st249: - if p++; p == pe { - goto _test_eof249 - } - st_case_249: - switch data[p] { - case 70: - goto st250 - case 102: - goto st250 - } - goto tr73 - st250: +tr246: +//line msg_parse.rl:59 + + mark = p + + goto st229 + st229: if p++; p == pe { - goto _test_eof250 + goto _test_eof229 } - st_case_250: + st_case_229: +//line msg_parse.go:8317 switch data[p] { + case 9: + goto st230 + case 32: + goto st230 + case 58: + goto st231 + case 65: + goto st243 case 79: - goto st251 + goto st259 + case 83: + goto st314 + case 97: + goto st243 case 111: - goto st251 + goto st259 + case 115: + goto st314 } - goto tr73 - st251: + goto tr242 + st230: if p++; p == pe { - goto _test_eof251 + goto _test_eof230 } - st_case_251: + st_case_230: switch data[p] { case 9: - goto tr348 + goto st230 case 32: - goto tr348 + goto st230 case 58: - goto tr349 + goto st231 } goto st0 - st252: + st231: if p++; p == pe { - goto _test_eof252 + goto _test_eof231 } - st_case_252: - switch data[p] { - case 69: - goto st253 - case 101: - goto st253 + st_case_231: + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } } - goto tr73 - st253: - if p++; p == pe { - goto _test_eof253 + switch _widec { + case 9: + goto st231 + case 32: + goto st231 + case 269: + goto tr376 + case 525: + goto st240 } - st_case_253: - switch data[p] { - case 78: - goto st254 - case 110: - goto st254 + switch { + case _widec < 224: + switch { + case _widec > 127: + if 192 <= _widec && _widec <= 223 { + goto tr371 + } + case _widec >= 33: + goto tr370 + } + case _widec > 239: + switch { + case _widec < 248: + if 240 <= _widec && _widec <= 247 { + goto tr373 + } + case _widec > 251: + if 252 <= _widec && _widec <= 253 { + goto tr375 + } + default: + goto tr374 + } + default: + goto tr372 } - goto tr73 - st254: + goto st0 +tr379: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st232 +tr370: +//line msg_parse.rl:59 + + mark = p + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st232 + st232: if p++; p == pe { - goto _test_eof254 - } - st_case_254: - switch data[p] { - case 84: - goto st255 - case 116: - goto st255 + goto _test_eof232 } - goto tr73 - st255: - if p++; p == pe { - goto _test_eof255 + st_case_232: +//line msg_parse.go:8425 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } } - st_case_255: - switch data[p] { + switch _widec { case 9: - goto tr353 + goto st232 case 32: - goto tr353 - case 58: - goto tr354 + goto st232 + case 269: + goto tr385 + case 525: + goto tr386 + } + switch { + case _widec < 224: + switch { + case _widec > 127: + if 192 <= _widec && _widec <= 223 { + goto tr380 + } + case _widec >= 33: + goto tr379 + } + case _widec > 239: + switch { + case _widec < 248: + if 240 <= _widec && _widec <= 247 { + goto tr382 + } + case _widec > 251: + if 252 <= _widec && _widec <= 253 { + goto tr384 + } + default: + goto tr383 + } + default: + goto tr381 + } + goto st0 +tr380: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st233 +tr371: +//line msg_parse.rl:59 + + mark = p + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st233 + st233: + if p++; p == pe { + goto _test_eof233 + } + st_case_233: +//line msg_parse.go:8493 + if 128 <= data[p] && data[p] <= 191 { + goto tr379 + } + goto st0 +tr381: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st234 +tr372: +//line msg_parse.rl:59 + + mark = p + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st234 + st234: + if p++; p == pe { + goto _test_eof234 + } + st_case_234: +//line msg_parse.go:8521 + if 128 <= data[p] && data[p] <= 191 { + goto tr380 + } + goto st0 +tr382: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st235 +tr373: +//line msg_parse.rl:59 + + mark = p + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st235 + st235: + if p++; p == pe { + goto _test_eof235 + } + st_case_235: +//line msg_parse.go:8549 + if 128 <= data[p] && data[p] <= 191 { + goto tr381 + } + goto st0 +tr383: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st236 +tr374: +//line msg_parse.rl:59 + + mark = p + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st236 + st236: + if p++; p == pe { + goto _test_eof236 + } + st_case_236: +//line msg_parse.go:8577 + if 128 <= data[p] && data[p] <= 191 { + goto tr382 + } + goto st0 +tr384: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st237 +tr375: +//line msg_parse.rl:59 + + mark = p + +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st237 + st237: + if p++; p == pe { + goto _test_eof237 + } + st_case_237: +//line msg_parse.go:8605 + if 128 <= data[p] && data[p] <= 191 { + goto tr383 + } + goto st0 +tr376: +//line msg_parse.rl:59 + + mark = p + +//line msg_parse.rl:202 + + ctype = string(data[mark:p]) + + goto st238 +tr385: +//line msg_parse.rl:202 + + ctype = string(data[mark:p]) + + goto st238 +tr401: +//line msg_parse.rl:194 + + msg.CallID = string(data[mark:p]) + + goto st238 +tr485: +//line msg_parse.rl:210 + + msg.CSeqMethod = string(data[mark:p]) + + goto st238 +tr818: +//line msg_parse.rl:59 + + mark = p + +//line msg_parse.rl:226 + + *viap, err = ParseVia(string(data[mark:p])) + if err != nil { return nil, err } + for *viap != nil { viap = &(*viap).Next } + + goto st238 +tr827: +//line msg_parse.rl:226 + + *viap, err = ParseVia(string(data[mark:p])) + if err != nil { return nil, err } + for *viap != nil { viap = &(*viap).Next } + + goto st238 + st238: + if p++; p == pe { + goto _test_eof238 + } + st_case_238: +//line msg_parse.go:8663 + if data[p] == 10 { + goto tr387 + } + goto st0 +tr391: +//line msg_parse.rl:59 + + mark = p + +//line msg_parse.rl:202 + + ctype = string(data[mark:p]) + + goto st239 +tr386: +//line msg_parse.rl:202 + + ctype = string(data[mark:p]) + + goto st239 + st239: + if p++; p == pe { + goto _test_eof239 + } + st_case_239: +//line msg_parse.go:8689 + if data[p] == 10 { + goto tr388 + } + goto st0 +tr388: +//line msg_parse.rl:238 + line++; linep = p; +//line msg_parse.rl:129 + + {goto st145 } + + goto st646 + st646: + if p++; p == pe { + goto _test_eof646 + } + st_case_646: +//line msg_parse.go:8707 + switch data[p] { + case 9: + goto st232 + case 32: + goto st232 + } + goto st0 + st240: + if p++; p == pe { + goto _test_eof240 + } + st_case_240: + if data[p] == 10 { + goto tr389 + } + goto st0 +tr389: +//line msg_parse.rl:238 + line++; linep = p; + goto st241 + st241: + if p++; p == pe { + goto _test_eof241 + } + st_case_241: +//line msg_parse.go:8733 + switch data[p] { + case 9: + goto st242 + case 32: + goto st242 + } + goto st0 + st242: + if p++; p == pe { + goto _test_eof242 + } + st_case_242: + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto st242 + case 32: + goto st242 + case 269: + goto tr376 + case 525: + goto tr391 + } + switch { + case _widec < 224: + switch { + case _widec > 127: + if 192 <= _widec && _widec <= 223 { + goto tr371 + } + case _widec >= 33: + goto tr370 + } + case _widec > 239: + switch { + case _widec < 248: + if 240 <= _widec && _widec <= 247 { + goto tr373 + } + case _widec > 251: + if 252 <= _widec && _widec <= 253 { + goto tr375 + } + default: + goto tr374 + } + default: + goto tr372 + } + goto st0 + st243: + if p++; p == pe { + goto _test_eof243 + } + st_case_243: + switch data[p] { + case 76: + goto st244 + case 108: + goto st244 + } + goto tr242 + st244: + if p++; p == pe { + goto _test_eof244 + } + st_case_244: + switch data[p] { + case 76: + goto st245 + case 108: + goto st245 + } + goto tr242 + st245: + if p++; p == pe { + goto _test_eof245 + } + st_case_245: + if data[p] == 45 { + goto st246 + } + goto tr242 + st246: + if p++; p == pe { + goto _test_eof246 + } + st_case_246: + switch data[p] { + case 73: + goto st247 + case 105: + goto st247 + } + goto tr242 + st247: + if p++; p == pe { + goto _test_eof247 + } + st_case_247: + switch data[p] { + case 68: + goto st248 + case 78: + goto st256 + case 100: + goto st248 + case 110: + goto st256 + } + goto tr242 + st248: + if p++; p == pe { + goto _test_eof248 + } + st_case_248: + switch data[p] { + case 9: + goto st248 + case 32: + goto st248 + case 58: + goto st249 + } + goto st0 + st249: + if p++; p == pe { + goto _test_eof249 + } + st_case_249: + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto st249 + case 32: + goto st249 + case 37: + goto tr399 + case 60: + goto tr399 + case 525: + goto st253 + } + switch { + case _widec < 62: + switch { + case _widec < 39: + if 33 <= _widec && _widec <= 34 { + goto tr399 + } + case _widec > 43: + if 45 <= _widec && _widec <= 58 { + goto tr399 + } + default: + goto tr399 + } + case _widec > 63: + switch { + case _widec < 95: + if 65 <= _widec && _widec <= 93 { + goto tr399 + } + case _widec > 123: + if 125 <= _widec && _widec <= 126 { + goto tr399 + } + default: + goto tr399 + } + default: + goto tr399 + } + goto st0 +tr399: +//line msg_parse.rl:59 + + mark = p + + goto st250 + st250: + if p++; p == pe { + goto _test_eof250 + } + st_case_250: +//line msg_parse.go:8931 + switch data[p] { + case 13: + goto tr401 + case 37: + goto st250 + case 60: + goto st250 + case 64: + goto st251 + } + switch { + case data[p] < 45: + switch { + case data[p] > 34: + if 39 <= data[p] && data[p] <= 43 { + goto st250 + } + case data[p] >= 33: + goto st250 + } + case data[p] > 58: + switch { + case data[p] < 95: + if 62 <= data[p] && data[p] <= 93 { + goto st250 + } + case data[p] > 123: + if 125 <= data[p] && data[p] <= 126 { + goto st250 + } + default: + goto st250 + } + default: + goto st250 + } + goto st0 + st251: + if p++; p == pe { + goto _test_eof251 + } + st_case_251: + switch data[p] { + case 37: + goto st252 + case 60: + goto st252 + } + switch { + case data[p] < 62: + switch { + case data[p] < 39: + if 33 <= data[p] && data[p] <= 34 { + goto st252 + } + case data[p] > 43: + if 45 <= data[p] && data[p] <= 58 { + goto st252 + } + default: + goto st252 + } + case data[p] > 63: + switch { + case data[p] < 95: + if 65 <= data[p] && data[p] <= 93 { + goto st252 + } + case data[p] > 123: + if 125 <= data[p] && data[p] <= 126 { + goto st252 + } + default: + goto st252 + } + default: + goto st252 + } + goto st0 + st252: + if p++; p == pe { + goto _test_eof252 + } + st_case_252: + switch data[p] { + case 13: + goto tr401 + case 37: + goto st252 + case 60: + goto st252 + } + switch { + case data[p] < 62: + switch { + case data[p] < 39: + if 33 <= data[p] && data[p] <= 34 { + goto st252 + } + case data[p] > 43: + if 45 <= data[p] && data[p] <= 58 { + goto st252 + } + default: + goto st252 + } + case data[p] > 63: + switch { + case data[p] < 95: + if 65 <= data[p] && data[p] <= 93 { + goto st252 + } + case data[p] > 123: + if 125 <= data[p] && data[p] <= 126 { + goto st252 + } + default: + goto st252 + } + default: + goto st252 + } + goto st0 + st253: + if p++; p == pe { + goto _test_eof253 + } + st_case_253: + if data[p] == 10 { + goto tr405 + } + goto st0 +tr405: +//line msg_parse.rl:238 + line++; linep = p; + goto st254 + st254: + if p++; p == pe { + goto _test_eof254 + } + st_case_254: +//line msg_parse.go:9073 + switch data[p] { + case 9: + goto st255 + case 32: + goto st255 + } + goto st0 + st255: + if p++; p == pe { + goto _test_eof255 + } + st_case_255: + switch data[p] { + case 9: + goto st255 + case 32: + goto st255 + case 37: + goto tr399 + case 60: + goto tr399 + } + switch { + case data[p] < 62: + switch { + case data[p] < 39: + if 33 <= data[p] && data[p] <= 34 { + goto tr399 + } + case data[p] > 43: + if 45 <= data[p] && data[p] <= 58 { + goto tr399 + } + default: + goto tr399 + } + case data[p] > 63: + switch { + case data[p] < 95: + if 65 <= data[p] && data[p] <= 93 { + goto tr399 + } + case data[p] > 123: + if 125 <= data[p] && data[p] <= 126 { + goto tr399 + } + default: + goto tr399 + } + default: + goto tr399 } goto st0 st256: @@ -6508,34 +9129,36 @@ tr79: } st_case_256: switch data[p] { - case 80: + case 70: goto st257 - case 112: + case 102: goto st257 } - goto st0 + goto tr274 st257: if p++; p == pe { goto _test_eof257 } st_case_257: switch data[p] { - case 73: + case 79: goto st258 - case 105: + case 111: goto st258 } - goto st0 + goto tr274 st258: if p++; p == pe { goto _test_eof258 } st_case_258: switch data[p] { - case 82: - goto st259 - case 114: - goto st259 + case 9: + goto tr409 + case 32: + goto tr409 + case 58: + goto tr410 } goto st0 st259: @@ -6544,128 +9167,179 @@ tr79: } st_case_259: switch data[p] { - case 69: + case 78: goto st260 - case 101: + case 110: goto st260 } - goto st0 + goto tr242 st260: if p++; p == pe { goto _test_eof260 } st_case_260: switch data[p] { - case 83: + case 84: goto st261 - case 115: + case 116: goto st261 } - goto st0 + goto tr242 st261: if p++; p == pe { goto _test_eof261 } st_case_261: switch data[p] { - case 9: - goto st261 - case 32: - goto st261 - case 58: + case 65: + goto st262 + case 69: + goto st270 + case 97: goto st262 + case 101: + goto st270 } - goto st0 + goto tr242 st262: if p++; p == pe { goto _test_eof262 } st_case_262: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st262 - case 32: - goto st262 - case 525: - goto st264 - } - if 48 <= _widec && _widec <= 57 { - goto tr361 + switch data[p] { + case 67: + goto st263 + case 99: + goto st263 } - goto st0 -tr361: -//line msg_parse.rl:290 -msg.Expires=0 -//line msg_parse.rl:168 - - msg.Expires = msg.Expires * 10 + (int(data[p]) - 0x30) - - goto st263 -tr363: -//line msg_parse.rl:168 - - msg.Expires = msg.Expires * 10 + (int(data[p]) - 0x30) - - goto st263 + goto tr274 st263: if p++; p == pe { goto _test_eof263 } st_case_263: -//line msg_parse.go:6623 - if data[p] == 13 { - goto st143 - } - if 48 <= data[p] && data[p] <= 57 { - goto tr363 + switch data[p] { + case 84: + goto st264 + case 116: + goto st264 } - goto st0 + goto tr274 st264: if p++; p == pe { goto _test_eof264 } st_case_264: - if data[p] == 10 { - goto tr364 + switch data[p] { + case 9: + goto tr417 + case 32: + goto tr417 + case 58: + goto tr418 } goto st0 -tr364: -//line msg_parse.rl:224 - line++; linep = p; +tr417: +//line msg_parse.rl:314 +addrpp=&contactp + goto st265 +tr525: +//line msg_parse.rl:315 +addrpp=&fromp + goto st265 +tr627: +//line msg_parse.rl:316 +addrpp=&paidp + goto st265 +tr694: +//line msg_parse.rl:317 +addrpp=&rroutep + goto st265 +tr719: +//line msg_parse.rl:318 +addrpp=&rpidp + goto st265 +tr747: +//line msg_parse.rl:319 +addrpp=&routep + goto st265 +tr771: +//line msg_parse.rl:320 +addrpp=&top goto st265 st265: if p++; p == pe { goto _test_eof265 } st_case_265: -//line msg_parse.go:6649 +//line msg_parse.go:9276 switch data[p] { case 9: - goto st266 + goto st265 case 32: + goto st265 + case 58: goto st266 } goto st0 +tr418: +//line msg_parse.rl:314 +addrpp=&contactp + goto st266 +tr526: +//line msg_parse.rl:315 +addrpp=&fromp + goto st266 +tr628: +//line msg_parse.rl:316 +addrpp=&paidp + goto st266 +tr695: +//line msg_parse.rl:317 +addrpp=&rroutep + goto st266 +tr720: +//line msg_parse.rl:318 +addrpp=&rpidp + goto st266 +tr748: +//line msg_parse.rl:319 +addrpp=&routep + goto st266 +tr772: +//line msg_parse.rl:320 +addrpp=&top + goto st266 st266: if p++; p == pe { goto _test_eof266 } st_case_266: - switch data[p] { +//line msg_parse.go:9319 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { case 9: goto st266 case 32: goto st266 + case 269: + goto tr421 + case 525: + goto st267 } - if 48 <= data[p] && data[p] <= 57 { - goto tr361 + switch { + case _widec > 12: + if 14 <= _widec { + goto tr421 + } + default: + goto tr421 } goto st0 st267: @@ -6673,30 +9347,24 @@ tr364: goto _test_eof267 } st_case_267: - switch data[p] { - case 9: - goto st268 - case 32: - goto st268 - case 58: - goto st269 - case 82: - goto st280 - case 114: - goto st280 + if data[p] == 10 { + goto tr423 } goto st0 +tr423: +//line msg_parse.rl:238 + line++; linep = p; + goto st268 st268: if p++; p == pe { goto _test_eof268 } st_case_268: +//line msg_parse.go:9364 switch data[p] { case 9: - goto st268 + goto st269 case 32: - goto st268 - case 58: goto st269 } goto st0 @@ -6705,459 +9373,288 @@ tr364: goto _test_eof269 } st_case_269: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { + switch data[p] { case 9: goto st269 case 32: goto st269 - case 269: - goto tr375 - case 525: - goto st277 - } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto tr370 - } - case _widec >= 33: - goto tr369 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr372 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr374 - } - default: - goto tr373 - } - default: - goto tr371 } - goto st0 -tr369: -//line msg_parse.rl:55 - - mark = p - - goto st270 + goto tr421 st270: if p++; p == pe { goto _test_eof270 } st_case_270: -//line msg_parse.go:6764 - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st270 - case 269: - goto tr383 - case 525: - goto tr384 - } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto st271 - } - case _widec >= 32: - goto st270 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto st273 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto st275 - } - default: - goto st274 - } - default: - goto st272 + switch data[p] { + case 78: + goto st271 + case 110: + goto st271 } - goto st0 -tr370: -//line msg_parse.rl:55 - - mark = p - - goto st271 + goto tr242 st271: if p++; p == pe { goto _test_eof271 } st_case_271: -//line msg_parse.go:6818 - if 128 <= data[p] && data[p] <= 191 { - goto st270 + switch data[p] { + case 84: + goto st272 + case 116: + goto st272 } - goto st0 -tr371: -//line msg_parse.rl:55 - - mark = p - - goto st272 + goto tr242 st272: if p++; p == pe { goto _test_eof272 } st_case_272: -//line msg_parse.go:6834 - if 128 <= data[p] && data[p] <= 191 { - goto st271 + if data[p] == 45 { + goto st273 } - goto st0 -tr372: -//line msg_parse.rl:55 - - mark = p - - goto st273 + goto tr242 st273: if p++; p == pe { goto _test_eof273 } st_case_273: -//line msg_parse.go:6850 - if 128 <= data[p] && data[p] <= 191 { - goto st272 - } - goto st0 -tr373: -//line msg_parse.rl:55 - - mark = p - - goto st274 + switch data[p] { + case 68: + goto st274 + case 69: + goto st285 + case 76: + goto st293 + case 84: + goto st311 + case 100: + goto st274 + case 101: + goto st285 + case 108: + goto st293 + case 116: + goto st311 + } + goto tr242 st274: if p++; p == pe { goto _test_eof274 } st_case_274: -//line msg_parse.go:6866 - if 128 <= data[p] && data[p] <= 191 { - goto st273 + switch data[p] { + case 73: + goto st275 + case 105: + goto st275 } - goto st0 -tr374: -//line msg_parse.rl:55 - - mark = p - - goto st275 + goto tr274 st275: if p++; p == pe { goto _test_eof275 } st_case_275: -//line msg_parse.go:6882 - if 128 <= data[p] && data[p] <= 191 { - goto st274 + switch data[p] { + case 83: + goto st276 + case 115: + goto st276 } - goto st0 -tr388: -//line msg_parse.rl:55 - - mark = p - -//line msg_parse.rl:172 - - msg.From, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - - goto st276 -tr384: -//line msg_parse.rl:172 - - msg.From, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - - goto st276 + goto tr274 st276: if p++; p == pe { goto _test_eof276 } st_case_276: -//line msg_parse.go:6910 - if data[p] == 10 { - goto tr385 - } - goto st0 -tr385: -//line msg_parse.rl:224 - line++; linep = p; -//line msg_parse.rl:111 - - {goto st50 } - - goto st618 - st618: - if p++; p == pe { - goto _test_eof618 - } - st_case_618: -//line msg_parse.go:6928 switch data[p] { - case 9: - goto st270 - case 32: - goto st270 + case 80: + goto st277 + case 112: + goto st277 } - goto st0 + goto tr274 st277: if p++; p == pe { goto _test_eof277 } st_case_277: - if data[p] == 10 { - goto tr386 + switch data[p] { + case 79: + goto st278 + case 111: + goto st278 } - goto st0 -tr386: -//line msg_parse.rl:224 - line++; linep = p; - goto st278 + goto tr274 st278: if p++; p == pe { goto _test_eof278 } st_case_278: -//line msg_parse.go:6954 switch data[p] { - case 9: + case 83: goto st279 - case 32: + case 115: goto st279 } - goto st0 + goto tr274 st279: if p++; p == pe { goto _test_eof279 } st_case_279: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st279 - case 32: - goto st279 - case 269: - goto tr375 - case 525: - goto tr388 - } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto tr370 - } - case _widec >= 33: - goto tr369 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr372 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr374 - } - default: - goto tr373 - } - default: - goto tr371 + switch data[p] { + case 73: + goto st280 + case 105: + goto st280 } - goto st0 + goto tr274 st280: if p++; p == pe { goto _test_eof280 } st_case_280: switch data[p] { - case 79: + case 84: goto st281 - case 111: + case 116: goto st281 } - goto st0 + goto tr274 st281: if p++; p == pe { goto _test_eof281 } st_case_281: switch data[p] { - case 77: - goto st268 - case 109: - goto st268 + case 73: + goto st282 + case 105: + goto st282 } - goto st0 -tr81: -//line msg_parse.rl:55 - - mark = p - - goto st282 + goto tr274 st282: if p++; p == pe { goto _test_eof282 } st_case_282: -//line msg_parse.go:7046 switch data[p] { - case 9: - goto st153 - case 32: - goto st153 - case 58: - goto st154 - case 78: + case 79: goto st283 - case 110: + case 111: goto st283 } - goto tr73 + goto tr274 st283: if p++; p == pe { goto _test_eof283 } st_case_283: - if data[p] == 45 { + switch data[p] { + case 78: + goto st284 + case 110: goto st284 } - goto tr73 + goto tr274 st284: if p++; p == pe { goto _test_eof284 } st_case_284: switch data[p] { - case 82: - goto st285 - case 114: - goto st285 + case 9: + goto tr442 + case 32: + goto tr442 + case 58: + goto tr443 } - goto tr73 + goto st0 st285: if p++; p == pe { goto _test_eof285 } st_case_285: switch data[p] { - case 69: + case 78: goto st286 - case 101: + case 110: goto st286 } - goto tr73 + goto tr274 st286: if p++; p == pe { goto _test_eof286 } st_case_286: switch data[p] { - case 80: + case 67: goto st287 - case 112: + case 99: goto st287 } - goto tr73 + goto tr274 st287: if p++; p == pe { goto _test_eof287 } st_case_287: switch data[p] { - case 76: + case 79: goto st288 - case 108: + case 111: goto st288 } - goto tr73 + goto tr274 st288: if p++; p == pe { goto _test_eof288 } st_case_288: switch data[p] { - case 89: + case 68: goto st289 - case 121: + case 100: goto st289 } - goto tr73 + goto tr274 st289: if p++; p == pe { goto _test_eof289 } st_case_289: - if data[p] == 45 { + switch data[p] { + case 73: + goto st290 + case 105: goto st290 } - goto tr73 + goto tr274 st290: if p++; p == pe { goto _test_eof290 } st_case_290: switch data[p] { - case 84: + case 78: goto st291 - case 116: + case 110: goto st291 } - goto tr73 + goto tr274 st291: if p++; p == pe { goto _test_eof291 } st_case_291: switch data[p] { - case 79: + case 71: goto st292 - case 111: + case 103: goto st292 } - goto tr73 + goto tr274 st292: if p++; p == pe { goto _test_eof292 @@ -7165,253 +9662,174 @@ tr81: st_case_292: switch data[p] { case 9: - goto tr400 + goto tr451 case 32: - goto tr400 + goto tr451 case 58: - goto tr401 + goto tr452 } goto st0 -tr82: -//line msg_parse.rl:55 - - mark = p - - goto st293 st293: if p++; p == pe { goto _test_eof293 } st_case_293: -//line msg_parse.go:7187 switch data[p] { - case 9: - goto tr402 - case 32: - goto tr402 - case 58: - goto tr403 + case 65: + goto st294 + case 69: + goto st301 + case 97: + goto st294 + case 101: + goto st301 } - goto st0 + goto tr242 st294: if p++; p == pe { goto _test_eof294 } st_case_294: switch data[p] { - case 9: - goto st294 - case 32: - goto st294 - case 58: + case 78: + goto st295 + case 110: goto st295 } - goto st0 + goto tr274 st295: if p++; p == pe { goto _test_eof295 } st_case_295: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st295 - case 32: - goto st295 - case 525: - goto st297 - } - if 48 <= _widec && _widec <= 57 { - goto tr405 + switch data[p] { + case 71: + goto st296 + case 103: + goto st296 } - goto st0 -tr405: -//line msg_parse.rl:287 -clen=0 -//line msg_parse.rl:152 - - clen = clen * 10 + (int(data[p]) - 0x30) - -//line msg_parse.rl:290 -msg.Expires=0 -//line msg_parse.rl:168 - - msg.Expires = msg.Expires * 10 + (int(data[p]) - 0x30) - -//line msg_parse.rl:292 -msg.MaxForwards=0 -//line msg_parse.rl:177 - - msg.MaxForwards = msg.MaxForwards * 10 + (int(data[p]) - 0x30) - -//line msg_parse.rl:293 -msg.MinExpires=0 -//line msg_parse.rl:181 - - msg.MinExpires = msg.MinExpires * 10 + (int(data[p]) - 0x30) - - goto st296 -tr407: -//line msg_parse.rl:152 - - clen = clen * 10 + (int(data[p]) - 0x30) - -//line msg_parse.rl:168 - - msg.Expires = msg.Expires * 10 + (int(data[p]) - 0x30) - -//line msg_parse.rl:177 - - msg.MaxForwards = msg.MaxForwards * 10 + (int(data[p]) - 0x30) - -//line msg_parse.rl:181 - - msg.MinExpires = msg.MinExpires * 10 + (int(data[p]) - 0x30) - - goto st296 + goto tr274 st296: if p++; p == pe { goto _test_eof296 } st_case_296: -//line msg_parse.go:7284 - if data[p] == 13 { - goto st143 - } - if 48 <= data[p] && data[p] <= 57 { - goto tr407 + switch data[p] { + case 85: + goto st297 + case 117: + goto st297 } - goto st0 + goto tr274 st297: if p++; p == pe { goto _test_eof297 } st_case_297: - if data[p] == 10 { - goto tr408 + switch data[p] { + case 65: + goto st298 + case 97: + goto st298 } - goto st0 -tr408: -//line msg_parse.rl:224 - line++; linep = p; - goto st298 + goto tr274 st298: if p++; p == pe { goto _test_eof298 } st_case_298: -//line msg_parse.go:7310 switch data[p] { - case 9: + case 71: goto st299 - case 32: + case 103: goto st299 } - goto st0 + goto tr274 st299: if p++; p == pe { goto _test_eof299 } st_case_299: switch data[p] { - case 9: - goto st299 - case 32: - goto st299 - } - if 48 <= data[p] && data[p] <= 57 { - goto tr405 + case 69: + goto st300 + case 101: + goto st300 } - goto st0 -tr84: -//line msg_parse.rl:55 - - mark = p - - goto st300 + goto tr274 st300: if p++; p == pe { goto _test_eof300 } st_case_300: -//line msg_parse.go:7344 switch data[p] { case 9: - goto st169 + goto tr461 case 32: - goto st169 + goto tr461 case 58: - goto st170 - case 65: - goto st301 - case 73: - goto st317 - case 97: - goto st301 - case 105: - goto st317 + goto tr462 } - goto tr73 + goto st0 st301: if p++; p == pe { goto _test_eof301 } st_case_301: switch data[p] { - case 88: + case 78: goto st302 - case 120: + case 110: goto st302 } - goto st0 + goto tr463 st302: if p++; p == pe { goto _test_eof302 } st_case_302: - if data[p] == 45 { + switch data[p] { + case 71: + goto st303 + case 103: goto st303 } - goto st0 + goto tr463 st303: if p++; p == pe { goto _test_eof303 } st_case_303: switch data[p] { - case 70: + case 84: goto st304 - case 102: + case 116: goto st304 } - goto st0 + goto tr463 st304: if p++; p == pe { goto _test_eof304 } st_case_304: switch data[p] { - case 79: + case 72: goto st305 - case 111: + case 104: goto st305 } - goto st0 + goto tr463 st305: if p++; p == pe { goto _test_eof305 } st_case_305: switch data[p] { - case 82: - goto st306 - case 114: + case 9: + goto st305 + case 32: + goto st305 + case 58: goto st306 } goto st0 @@ -7420,23 +9838,50 @@ tr84: goto _test_eof306 } st_case_306: - switch data[p] { - case 87: - goto st307 - case 119: - goto st307 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto st306 + case 32: + goto st306 + case 525: + goto st308 + } + if 48 <= _widec && _widec <= 57 { + goto tr469 } goto st0 +tr469: +//line msg_parse.rl:324 +clen=0 +//line msg_parse.rl:198 + + clen = clen * 10 + (int(data[p]) - 0x30) + + goto st307 +tr472: +//line msg_parse.rl:198 + + clen = clen * 10 + (int(data[p]) - 0x30) + + goto st307 st307: if p++; p == pe { goto _test_eof307 } st_case_307: - switch data[p] { - case 65: - goto st308 - case 97: - goto st308 +//line msg_parse.go:9880 + if data[p] == 13 { + goto st238 + } + if 48 <= data[p] && data[p] <= 57 { + goto tr472 } goto st0 st308: @@ -7444,22 +9889,24 @@ tr84: goto _test_eof308 } st_case_308: - switch data[p] { - case 82: - goto st309 - case 114: - goto st309 + if data[p] == 10 { + goto tr473 } goto st0 +tr473: +//line msg_parse.rl:238 + line++; linep = p; + goto st309 st309: if p++; p == pe { goto _test_eof309 } st_case_309: +//line msg_parse.go:9906 switch data[p] { - case 68: + case 9: goto st310 - case 100: + case 32: goto st310 } goto st0 @@ -7469,10 +9916,13 @@ tr84: } st_case_310: switch data[p] { - case 83: - goto st311 - case 115: - goto st311 + case 9: + goto st310 + case 32: + goto st310 + } + if 48 <= data[p] && data[p] <= 57 { + goto tr469 } goto st0 st311: @@ -7481,91 +9931,60 @@ tr84: } st_case_311: switch data[p] { - case 9: - goto st311 - case 32: - goto st311 - case 58: + case 89: + goto st312 + case 121: goto st312 } - goto st0 + goto tr463 st312: if p++; p == pe { goto _test_eof312 } st_case_312: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st312 - case 32: - goto st312 - case 525: - goto st314 - } - if 48 <= _widec && _widec <= 57 { - goto tr423 + switch data[p] { + case 80: + goto st313 + case 112: + goto st313 } - goto st0 -tr423: -//line msg_parse.rl:292 -msg.MaxForwards=0 -//line msg_parse.rl:177 - - msg.MaxForwards = msg.MaxForwards * 10 + (int(data[p]) - 0x30) - - goto st313 -tr425: -//line msg_parse.rl:177 - - msg.MaxForwards = msg.MaxForwards * 10 + (int(data[p]) - 0x30) - - goto st313 + goto tr463 st313: if p++; p == pe { goto _test_eof313 } st_case_313: -//line msg_parse.go:7536 - if data[p] == 13 { - goto st143 - } - if 48 <= data[p] && data[p] <= 57 { - goto tr425 + switch data[p] { + case 69: + goto st230 + case 101: + goto st230 } - goto st0 + goto tr463 st314: if p++; p == pe { goto _test_eof314 } st_case_314: - if data[p] == 10 { - goto tr426 + switch data[p] { + case 69: + goto st315 + case 101: + goto st315 } - goto st0 -tr426: -//line msg_parse.rl:224 - line++; linep = p; - goto st315 + goto tr463 st315: if p++; p == pe { goto _test_eof315 } st_case_315: -//line msg_parse.go:7562 switch data[p] { - case 9: + case 81: goto st316 - case 32: + case 113: goto st316 } - goto st0 + goto tr463 st316: if p++; p == pe { goto _test_eof316 @@ -7576,9 +9995,8 @@ tr426: goto st316 case 32: goto st316 - } - if 48 <= data[p] && data[p] <= 57 { - goto tr423 + case 58: + goto st317 } goto st0 st317: @@ -7586,145 +10004,294 @@ tr426: goto _test_eof317 } st_case_317: - switch data[p] { - case 77: - goto st318 - case 78: - goto st328 - case 109: - goto st318 - case 110: - goto st328 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto st317 + case 32: + goto st317 + case 525: + goto st324 + } + if 48 <= _widec && _widec <= 57 { + goto tr480 } - goto tr73 + goto st0 +tr480: +//line msg_parse.rl:206 + + msg.CSeq = msg.CSeq * 10 + (int(data[p]) - 0x30) + + goto st318 st318: if p++; p == pe { goto _test_eof318 } st_case_318: - switch data[p] { - case 69: +//line msg_parse.go:10038 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: goto st319 - case 101: + case 32: goto st319 + case 525: + goto st321 + } + if 48 <= _widec && _widec <= 57 { + goto tr480 } - goto tr73 + goto st0 st319: if p++; p == pe { goto _test_eof319 } - st_case_319: - if data[p] == 45 { - goto st320 + st_case_319: + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto st319 + case 32: + goto st319 + case 33: + goto tr484 + case 37: + goto tr484 + case 39: + goto tr484 + case 126: + goto tr484 + case 525: + goto st321 + } + switch { + case _widec < 48: + switch { + case _widec > 43: + if 45 <= _widec && _widec <= 46 { + goto tr484 + } + case _widec >= 42: + goto tr484 + } + case _widec > 57: + switch { + case _widec > 90: + if 95 <= _widec && _widec <= 122 { + goto tr484 + } + case _widec >= 65: + goto tr484 + } + default: + goto tr484 } - goto tr73 + goto st0 +tr484: +//line msg_parse.rl:59 + + mark = p + + goto st320 st320: if p++; p == pe { goto _test_eof320 } st_case_320: +//line msg_parse.go:10120 switch data[p] { - case 86: - goto st321 - case 118: - goto st321 + case 13: + goto tr485 + case 33: + goto st320 + case 37: + goto st320 + case 39: + goto st320 + case 126: + goto st320 + } + switch { + case data[p] < 48: + switch { + case data[p] > 43: + if 45 <= data[p] && data[p] <= 46 { + goto st320 + } + case data[p] >= 42: + goto st320 + } + case data[p] > 57: + switch { + case data[p] > 90: + if 95 <= data[p] && data[p] <= 122 { + goto st320 + } + case data[p] >= 65: + goto st320 + } + default: + goto st320 } - goto tr73 + goto st0 st321: if p++; p == pe { goto _test_eof321 } st_case_321: - switch data[p] { - case 69: - goto st322 - case 101: - goto st322 + if data[p] == 10 { + goto tr487 } - goto tr73 + goto st0 +tr487: +//line msg_parse.rl:238 + line++; linep = p; + goto st322 st322: if p++; p == pe { goto _test_eof322 } st_case_322: +//line msg_parse.go:10174 switch data[p] { - case 82: + case 9: goto st323 - case 114: + case 32: goto st323 } - goto tr73 + goto st0 st323: if p++; p == pe { goto _test_eof323 } st_case_323: switch data[p] { - case 83: - goto st324 - case 115: - goto st324 + case 9: + goto st323 + case 32: + goto st323 + case 33: + goto tr484 + case 37: + goto tr484 + case 39: + goto tr484 + case 126: + goto tr484 + } + switch { + case data[p] < 48: + switch { + case data[p] > 43: + if 45 <= data[p] && data[p] <= 46 { + goto tr484 + } + case data[p] >= 42: + goto tr484 + } + case data[p] > 57: + switch { + case data[p] > 90: + if 95 <= data[p] && data[p] <= 122 { + goto tr484 + } + case data[p] >= 65: + goto tr484 + } + default: + goto tr484 } - goto tr73 + goto st0 st324: if p++; p == pe { goto _test_eof324 } st_case_324: - switch data[p] { - case 73: - goto st325 - case 105: - goto st325 + if data[p] == 10 { + goto tr489 } - goto tr73 + goto st0 +tr489: +//line msg_parse.rl:238 + line++; linep = p; + goto st325 st325: if p++; p == pe { goto _test_eof325 } st_case_325: +//line msg_parse.go:10242 switch data[p] { - case 79: + case 9: goto st326 - case 111: + case 32: goto st326 } - goto tr73 + goto st0 st326: if p++; p == pe { goto _test_eof326 } st_case_326: switch data[p] { - case 78: - goto st327 - case 110: - goto st327 + case 9: + goto st326 + case 32: + goto st326 + } + if 48 <= data[p] && data[p] <= 57 { + goto tr480 } - goto tr73 + goto st0 +tr247: +//line msg_parse.rl:59 + + mark = p + + goto st327 st327: if p++; p == pe { goto _test_eof327 } st_case_327: +//line msg_parse.go:10276 switch data[p] { - case 9: - goto tr439 - case 32: - goto tr439 - case 58: - goto tr440 + case 65: + goto st328 + case 97: + goto st328 } - goto st0 + goto tr274 st328: if p++; p == pe { goto _test_eof328 } st_case_328: - if data[p] == 45 { + switch data[p] { + case 84: + goto st329 + case 116: goto st329 } - goto st0 + goto tr274 st329: if p++; p == pe { goto _test_eof329 @@ -7736,168 +10303,159 @@ tr426: case 101: goto st330 } - goto st0 + goto tr274 st330: if p++; p == pe { goto _test_eof330 } st_case_330: switch data[p] { - case 88: - goto st331 - case 120: - goto st331 + case 9: + goto tr494 + case 32: + goto tr494 + case 58: + goto tr495 } goto st0 +tr248: +//line msg_parse.rl:59 + + mark = p + + goto st331 st331: if p++; p == pe { goto _test_eof331 } st_case_331: +//line msg_parse.go:10333 switch data[p] { - case 80: + case 9: + goto tr451 + case 32: + goto tr451 + case 58: + goto tr452 + case 82: goto st332 - case 112: + case 86: + goto st341 + case 88: + goto st345 + case 114: goto st332 + case 118: + goto st341 + case 120: + goto st345 } - goto st0 + goto tr463 st332: if p++; p == pe { goto _test_eof332 } st_case_332: switch data[p] { - case 73: + case 82: goto st333 - case 105: + case 114: goto st333 } - goto st0 + goto tr274 st333: if p++; p == pe { goto _test_eof333 } st_case_333: switch data[p] { - case 82: + case 79: goto st334 - case 114: + case 111: goto st334 } - goto st0 + goto tr274 st334: if p++; p == pe { goto _test_eof334 } st_case_334: switch data[p] { - case 69: + case 82: goto st335 - case 101: + case 114: goto st335 } - goto st0 + goto tr274 st335: if p++; p == pe { goto _test_eof335 } st_case_335: - switch data[p] { - case 83: - goto st336 - case 115: + if data[p] == 45 { goto st336 } - goto st0 + goto tr274 st336: if p++; p == pe { goto _test_eof336 } st_case_336: switch data[p] { - case 9: - goto st336 - case 32: - goto st336 - case 58: + case 73: + goto st337 + case 105: goto st337 } - goto st0 + goto tr274 st337: if p++; p == pe { goto _test_eof337 } st_case_337: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st337 - case 32: - goto st337 - case 525: - goto st339 - } - if 48 <= _widec && _widec <= 57 { - goto tr450 + switch data[p] { + case 78: + goto st338 + case 110: + goto st338 } - goto st0 -tr450: -//line msg_parse.rl:293 -msg.MinExpires=0 -//line msg_parse.rl:181 - - msg.MinExpires = msg.MinExpires * 10 + (int(data[p]) - 0x30) - - goto st338 -tr452: -//line msg_parse.rl:181 - - msg.MinExpires = msg.MinExpires * 10 + (int(data[p]) - 0x30) - - goto st338 + goto tr274 st338: if p++; p == pe { goto _test_eof338 } st_case_338: -//line msg_parse.go:7870 - if data[p] == 13 { - goto st143 - } - if 48 <= data[p] && data[p] <= 57 { - goto tr452 + switch data[p] { + case 70: + goto st339 + case 102: + goto st339 } - goto st0 + goto tr274 st339: if p++; p == pe { goto _test_eof339 } st_case_339: - if data[p] == 10 { - goto tr453 + switch data[p] { + case 79: + goto st340 + case 111: + goto st340 } - goto st0 -tr453: -//line msg_parse.rl:224 - line++; linep = p; - goto st340 + goto tr274 st340: if p++; p == pe { goto _test_eof340 } st_case_340: -//line msg_parse.go:7896 switch data[p] { case 9: - goto st341 + goto tr507 case 32: - goto st341 + goto tr507 + case 58: + goto tr508 } goto st0 st341: @@ -7906,76 +10464,62 @@ tr453: } st_case_341: switch data[p] { - case 9: - goto st341 - case 32: - goto st341 - } - if 48 <= data[p] && data[p] <= 57 { - goto tr450 + case 69: + goto st342 + case 101: + goto st342 } - goto st0 -tr85: -//line msg_parse.rl:55 - - mark = p - - goto st342 + goto tr274 st342: if p++; p == pe { goto _test_eof342 } st_case_342: -//line msg_parse.go:7930 switch data[p] { - case 9: - goto tr353 - case 32: - goto tr353 - case 58: - goto tr354 - case 82: + case 78: goto st343 - case 114: + case 110: goto st343 } - goto st0 + goto tr274 st343: if p++; p == pe { goto _test_eof343 } st_case_343: switch data[p] { - case 71: + case 84: goto st344 - case 103: + case 116: goto st344 } - goto tr73 + goto tr274 st344: if p++; p == pe { goto _test_eof344 } st_case_344: switch data[p] { - case 65: - goto st345 - case 97: - goto st345 + case 9: + goto tr512 + case 32: + goto tr512 + case 58: + goto tr513 } - goto tr73 + goto st0 st345: if p++; p == pe { goto _test_eof345 } st_case_345: switch data[p] { - case 78: + case 80: goto st346 - case 110: + case 112: goto st346 } - goto tr73 + goto tr463 st346: if p++; p == pe { goto _test_eof346 @@ -7987,135 +10531,171 @@ tr85: case 105: goto st347 } - goto tr73 + goto tr463 st347: if p++; p == pe { goto _test_eof347 } st_case_347: switch data[p] { - case 90: + case 82: goto st348 - case 122: + case 114: goto st348 } - goto tr73 + goto tr463 st348: if p++; p == pe { goto _test_eof348 } st_case_348: switch data[p] { - case 65: + case 69: goto st349 - case 97: + case 101: goto st349 } - goto tr73 + goto tr463 st349: if p++; p == pe { goto _test_eof349 } st_case_349: switch data[p] { - case 84: + case 83: goto st350 - case 116: + case 115: goto st350 } - goto tr73 + goto tr463 st350: if p++; p == pe { goto _test_eof350 } st_case_350: switch data[p] { - case 73: - goto st351 - case 105: + case 9: + goto st350 + case 32: + goto st350 + case 58: goto st351 } - goto tr73 + goto st0 st351: if p++; p == pe { goto _test_eof351 } st_case_351: - switch data[p] { - case 79: - goto st352 - case 111: - goto st352 + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { + case 9: + goto st351 + case 32: + goto st351 + case 525: + goto st353 } - goto tr73 + if 48 <= _widec && _widec <= 57 { + goto tr520 + } + goto st0 +tr520: +//line msg_parse.rl:327 +msg.Expires=0 +//line msg_parse.rl:214 + + msg.Expires = msg.Expires * 10 + (int(data[p]) - 0x30) + + goto st352 +tr522: +//line msg_parse.rl:214 + + msg.Expires = msg.Expires * 10 + (int(data[p]) - 0x30) + + goto st352 st352: if p++; p == pe { goto _test_eof352 } st_case_352: - switch data[p] { - case 78: - goto st353 - case 110: - goto st353 +//line msg_parse.go:10629 + if data[p] == 13 { + goto st238 + } + if 48 <= data[p] && data[p] <= 57 { + goto tr522 } - goto tr73 + goto st0 st353: if p++; p == pe { goto _test_eof353 } st_case_353: - switch data[p] { - case 9: - goto tr466 - case 32: - goto tr466 - case 58: - goto tr467 + if data[p] == 10 { + goto tr523 } goto st0 -tr86: -//line msg_parse.rl:55 - - mark = p - +tr523: +//line msg_parse.rl:238 + line++; linep = p; goto st354 st354: if p++; p == pe { goto _test_eof354 } st_case_354: -//line msg_parse.go:8089 +//line msg_parse.go:10655 switch data[p] { - case 45: + case 9: + goto st355 + case 32: goto st355 - case 82: - goto st384 - case 114: - goto st384 } - goto tr73 + goto st0 st355: if p++; p == pe { goto _test_eof355 } st_case_355: switch data[p] { - case 65: - goto st356 - case 97: - goto st356 + case 9: + goto st355 + case 32: + goto st355 + } + if 48 <= data[p] && data[p] <= 57 { + goto tr520 } goto st0 +tr249: +//line msg_parse.rl:59 + + mark = p + + goto st356 st356: if p++; p == pe { goto _test_eof356 } st_case_356: +//line msg_parse.go:10689 switch data[p] { - case 83: + case 9: + goto tr525 + case 32: + goto tr525 + case 58: + goto tr526 + case 82: goto st357 - case 115: + case 114: goto st357 } goto st0 @@ -8125,129 +10705,141 @@ tr86: } st_case_357: switch data[p] { - case 83: + case 79: goto st358 - case 115: + case 111: goto st358 } - goto st0 + goto tr274 st358: if p++; p == pe { goto _test_eof358 } st_case_358: switch data[p] { - case 69: + case 77: goto st359 - case 101: + case 109: goto st359 } - goto st0 + goto tr274 st359: if p++; p == pe { goto _test_eof359 } st_case_359: switch data[p] { - case 82: - goto st360 - case 114: - goto st360 + case 9: + goto tr525 + case 32: + goto tr525 + case 58: + goto tr526 } goto st0 +tr250: +//line msg_parse.rl:59 + + mark = p + + goto st360 st360: if p++; p == pe { goto _test_eof360 } st_case_360: +//line msg_parse.go:10752 switch data[p] { - case 84: + case 9: + goto st248 + case 32: + goto st248 + case 58: + goto st249 + case 78: goto st361 - case 116: + case 110: goto st361 } - goto st0 + goto tr274 st361: if p++; p == pe { goto _test_eof361 } st_case_361: - switch data[p] { - case 69: - goto st362 - case 101: + if data[p] == 45 { goto st362 } - goto st0 + goto tr274 st362: if p++; p == pe { goto _test_eof362 } st_case_362: switch data[p] { - case 68: + case 82: goto st363 - case 100: + case 114: goto st363 } - goto st0 + goto tr274 st363: if p++; p == pe { goto _test_eof363 } st_case_363: - if data[p] == 45 { + switch data[p] { + case 69: + goto st364 + case 101: goto st364 } - goto st0 + goto tr274 st364: if p++; p == pe { goto _test_eof364 } st_case_364: switch data[p] { - case 73: + case 80: goto st365 - case 105: + case 112: goto st365 } - goto st0 + goto tr274 st365: if p++; p == pe { goto _test_eof365 } st_case_365: switch data[p] { - case 68: + case 76: goto st366 - case 100: + case 108: goto st366 } - goto st0 + goto tr274 st366: if p++; p == pe { goto _test_eof366 } st_case_366: switch data[p] { - case 69: + case 89: goto st367 - case 101: + case 121: goto st367 } - goto st0 + goto tr274 st367: if p++; p == pe { goto _test_eof367 } st_case_367: - switch data[p] { - case 78: - goto st368 - case 110: + if data[p] == 45 { goto st368 } - goto st0 + goto tr274 st368: if p++; p == pe { goto _test_eof368 @@ -8259,41 +10851,52 @@ tr86: case 116: goto st369 } - goto st0 + goto tr274 st369: if p++; p == pe { goto _test_eof369 } st_case_369: switch data[p] { - case 73: + case 79: goto st370 - case 105: + case 111: goto st370 } - goto st0 + goto tr274 st370: if p++; p == pe { goto _test_eof370 } st_case_370: switch data[p] { - case 84: - goto st371 - case 116: - goto st371 + case 9: + goto tr540 + case 32: + goto tr540 + case 58: + goto tr541 } goto st0 +tr251: +//line msg_parse.rl:59 + + mark = p + + goto st371 st371: if p++; p == pe { goto _test_eof371 } st_case_371: +//line msg_parse.go:10893 switch data[p] { - case 89: - goto st372 - case 121: - goto st372 + case 9: + goto tr542 + case 32: + goto tr542 + case 58: + goto tr543 } goto st0 st372: @@ -8327,42 +10930,55 @@ tr86: goto st373 case 32: goto st373 - case 269: - goto tr494 case 525: - goto st381 + goto st375 } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto tr489 - } - case _widec >= 33: - goto tr488 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr491 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr493 - } - default: - goto tr492 - } - default: - goto tr490 + if 48 <= _widec && _widec <= 57 { + goto tr545 } goto st0 -tr488: -//line msg_parse.rl:55 +tr545: +//line msg_parse.rl:324 +clen=0 +//line msg_parse.rl:198 + + clen = clen * 10 + (int(data[p]) - 0x30) + +//line msg_parse.rl:327 +msg.Expires=0 +//line msg_parse.rl:214 - mark = p + msg.Expires = msg.Expires * 10 + (int(data[p]) - 0x30) + +//line msg_parse.rl:328 +msg.MaxForwards=0 +//line msg_parse.rl:218 + + msg.MaxForwards = msg.MaxForwards * 10 + (int(data[p]) - 0x30) + +//line msg_parse.rl:329 +msg.MinExpires=0 +//line msg_parse.rl:222 + + msg.MinExpires = msg.MinExpires * 10 + (int(data[p]) - 0x30) + + goto st374 +tr547: +//line msg_parse.rl:198 + + clen = clen * 10 + (int(data[p]) - 0x30) + +//line msg_parse.rl:214 + + msg.Expires = msg.Expires * 10 + (int(data[p]) - 0x30) + +//line msg_parse.rl:218 + + msg.MaxForwards = msg.MaxForwards * 10 + (int(data[p]) - 0x30) + +//line msg_parse.rl:222 + + msg.MinExpires = msg.MinExpires * 10 + (int(data[p]) - 0x30) goto st374 st374: @@ -8370,99 +10986,57 @@ tr488: goto _test_eof374 } st_case_374: -//line msg_parse.go:8374 - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st374 - case 269: - goto tr502 - case 525: - goto tr503 +//line msg_parse.go:10990 + if data[p] == 13 { + goto st238 } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto st375 - } - case _widec >= 32: - goto st374 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto st377 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto st379 - } - default: - goto st378 - } - default: - goto st376 + if 48 <= data[p] && data[p] <= 57 { + goto tr547 } goto st0 -tr489: -//line msg_parse.rl:55 - - mark = p - - goto st375 st375: if p++; p == pe { goto _test_eof375 } st_case_375: -//line msg_parse.go:8428 - if 128 <= data[p] && data[p] <= 191 { - goto st374 + if data[p] == 10 { + goto tr548 } goto st0 -tr490: -//line msg_parse.rl:55 - - mark = p - +tr548: +//line msg_parse.rl:238 + line++; linep = p; goto st376 st376: if p++; p == pe { goto _test_eof376 } st_case_376: -//line msg_parse.go:8444 - if 128 <= data[p] && data[p] <= 191 { - goto st375 +//line msg_parse.go:11016 + switch data[p] { + case 9: + goto st377 + case 32: + goto st377 } goto st0 -tr491: -//line msg_parse.rl:55 - - mark = p - - goto st377 st377: if p++; p == pe { goto _test_eof377 } st_case_377: -//line msg_parse.go:8460 - if 128 <= data[p] && data[p] <= 191 { - goto st376 + switch data[p] { + case 9: + goto st377 + case 32: + goto st377 + } + if 48 <= data[p] && data[p] <= 57 { + goto tr545 } goto st0 -tr492: -//line msg_parse.rl:55 +tr253: +//line msg_parse.rl:59 mark = p @@ -8472,179 +11046,105 @@ tr492: goto _test_eof378 } st_case_378: -//line msg_parse.go:8476 - if 128 <= data[p] && data[p] <= 191 { - goto st377 +//line msg_parse.go:11050 + switch data[p] { + case 9: + goto tr417 + case 32: + goto tr417 + case 58: + goto tr418 + case 65: + goto st379 + case 73: + goto st395 + case 97: + goto st379 + case 105: + goto st395 } - goto st0 -tr493: -//line msg_parse.rl:55 - - mark = p - - goto st379 + goto tr242 st379: if p++; p == pe { goto _test_eof379 } st_case_379: -//line msg_parse.go:8492 - if 128 <= data[p] && data[p] <= 191 { - goto st378 + switch data[p] { + case 88: + goto st380 + case 120: + goto st380 } - goto st0 -tr507: -//line msg_parse.rl:55 - - mark = p - -//line msg_parse.rl:185 - - msg.PAssertedIdentity, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - - goto st380 -tr503: -//line msg_parse.rl:185 - - msg.PAssertedIdentity, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - - goto st380 + goto tr463 st380: if p++; p == pe { goto _test_eof380 } st_case_380: -//line msg_parse.go:8520 - if data[p] == 10 { - goto tr504 - } - goto st0 -tr504: -//line msg_parse.rl:224 - line++; linep = p; -//line msg_parse.rl:111 - - {goto st50 } - - goto st619 - st619: - if p++; p == pe { - goto _test_eof619 - } - st_case_619: -//line msg_parse.go:8538 - switch data[p] { - case 9: - goto st374 - case 32: - goto st374 + if data[p] == 45 { + goto st381 } - goto st0 + goto tr463 st381: if p++; p == pe { goto _test_eof381 } st_case_381: - if data[p] == 10 { - goto tr505 + switch data[p] { + case 70: + goto st382 + case 102: + goto st382 } - goto st0 -tr505: -//line msg_parse.rl:224 - line++; linep = p; - goto st382 + goto tr463 st382: if p++; p == pe { goto _test_eof382 } st_case_382: -//line msg_parse.go:8564 switch data[p] { - case 9: + case 79: goto st383 - case 32: + case 111: goto st383 } - goto st0 + goto tr463 st383: if p++; p == pe { goto _test_eof383 } st_case_383: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st383 - case 32: - goto st383 - case 269: - goto tr494 - case 525: - goto tr507 - } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto tr489 - } - case _widec >= 33: - goto tr488 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr491 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr493 - } - default: - goto tr492 - } - default: - goto tr490 + switch data[p] { + case 82: + goto st384 + case 114: + goto st384 } - goto st0 + goto tr463 st384: if p++; p == pe { goto _test_eof384 } st_case_384: switch data[p] { - case 73: + case 87: goto st385 - case 79: - goto st391 - case 105: + case 119: goto st385 - case 111: - goto st391 } - goto tr73 + goto tr463 st385: if p++; p == pe { goto _test_eof385 } st_case_385: switch data[p] { - case 79: + case 65: goto st386 - case 111: + case 97: goto st386 } - goto tr73 + goto tr463 st386: if p++; p == pe { goto _test_eof386 @@ -8656,1062 +11156,930 @@ tr505: case 114: goto st387 } - goto tr73 + goto tr463 st387: if p++; p == pe { goto _test_eof387 } st_case_387: switch data[p] { - case 73: + case 68: goto st388 - case 105: + case 100: goto st388 } - goto tr73 + goto tr463 st388: if p++; p == pe { goto _test_eof388 } st_case_388: switch data[p] { - case 84: + case 83: goto st389 - case 116: + case 115: goto st389 } - goto tr73 + goto tr463 st389: if p++; p == pe { goto _test_eof389 } st_case_389: switch data[p] { - case 89: - goto st390 - case 121: + case 9: + goto st389 + case 32: + goto st389 + case 58: goto st390 } - goto tr73 + goto st0 st390: if p++; p == pe { goto _test_eof390 } st_case_390: - switch data[p] { + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { case 9: - goto tr515 + goto st390 case 32: - goto tr515 - case 58: - goto tr516 + goto st390 + case 525: + goto st392 + } + if 48 <= _widec && _widec <= 57 { + goto tr563 } goto st0 +tr563: +//line msg_parse.rl:328 +msg.MaxForwards=0 +//line msg_parse.rl:218 + + msg.MaxForwards = msg.MaxForwards * 10 + (int(data[p]) - 0x30) + + goto st391 +tr565: +//line msg_parse.rl:218 + + msg.MaxForwards = msg.MaxForwards * 10 + (int(data[p]) - 0x30) + + goto st391 st391: if p++; p == pe { goto _test_eof391 } st_case_391: - switch data[p] { - case 88: - goto st392 - case 120: - goto st392 +//line msg_parse.go:11242 + if data[p] == 13 { + goto st238 + } + if 48 <= data[p] && data[p] <= 57 { + goto tr565 } - goto tr73 + goto st0 st392: if p++; p == pe { goto _test_eof392 } st_case_392: - switch data[p] { - case 89: - goto st393 - case 121: - goto st393 + if data[p] == 10 { + goto tr566 } - goto tr73 + goto st0 +tr566: +//line msg_parse.rl:238 + line++; linep = p; + goto st393 st393: if p++; p == pe { goto _test_eof393 } st_case_393: - if data[p] == 45 { +//line msg_parse.go:11268 + switch data[p] { + case 9: + goto st394 + case 32: goto st394 } - goto tr73 + goto st0 st394: if p++; p == pe { goto _test_eof394 } st_case_394: switch data[p] { - case 65: - goto st395 - case 82: - goto st416 - case 97: - goto st395 - case 114: - goto st416 + case 9: + goto st394 + case 32: + goto st394 + } + if 48 <= data[p] && data[p] <= 57 { + goto tr563 } - goto tr73 + goto st0 st395: if p++; p == pe { goto _test_eof395 } st_case_395: switch data[p] { - case 85: + case 77: goto st396 - case 117: + case 78: + goto st406 + case 109: goto st396 + case 110: + goto st406 } - goto tr73 + goto tr242 st396: if p++; p == pe { goto _test_eof396 } st_case_396: switch data[p] { - case 84: + case 69: goto st397 - case 116: + case 101: goto st397 } - goto tr73 + goto tr274 st397: if p++; p == pe { goto _test_eof397 } st_case_397: - switch data[p] { - case 72: - goto st398 - case 104: + if data[p] == 45 { goto st398 } - goto tr73 + goto tr274 st398: if p++; p == pe { goto _test_eof398 } st_case_398: switch data[p] { - case 69: + case 86: goto st399 - case 79: - goto st407 - case 101: + case 118: goto st399 - case 111: - goto st407 } - goto tr73 + goto tr274 st399: if p++; p == pe { goto _test_eof399 } st_case_399: switch data[p] { - case 78: + case 69: goto st400 - case 110: + case 101: goto st400 } - goto tr73 + goto tr274 st400: if p++; p == pe { goto _test_eof400 } st_case_400: switch data[p] { - case 84: + case 82: goto st401 - case 116: + case 114: goto st401 } - goto tr73 + goto tr274 st401: if p++; p == pe { goto _test_eof401 } st_case_401: switch data[p] { - case 73: + case 83: goto st402 - case 105: + case 115: goto st402 } - goto tr73 + goto tr274 st402: if p++; p == pe { goto _test_eof402 } st_case_402: switch data[p] { - case 67: + case 73: goto st403 - case 99: + case 105: goto st403 } - goto tr73 + goto tr274 st403: if p++; p == pe { goto _test_eof403 } st_case_403: switch data[p] { - case 65: + case 79: goto st404 - case 97: + case 111: goto st404 } - goto tr73 + goto tr274 st404: if p++; p == pe { goto _test_eof404 } st_case_404: switch data[p] { - case 84: + case 78: goto st405 - case 116: + case 110: goto st405 } - goto tr73 + goto tr274 st405: if p++; p == pe { goto _test_eof405 } st_case_405: switch data[p] { - case 69: - goto st406 - case 101: - goto st406 + case 9: + goto tr579 + case 32: + goto tr579 + case 58: + goto tr580 } - goto tr73 + goto st0 st406: if p++; p == pe { goto _test_eof406 } st_case_406: - switch data[p] { - case 9: - goto tr534 - case 32: - goto tr534 - case 58: - goto tr535 + if data[p] == 45 { + goto st407 } - goto st0 + goto tr463 st407: if p++; p == pe { goto _test_eof407 } st_case_407: switch data[p] { - case 82: + case 69: goto st408 - case 114: + case 101: goto st408 } - goto tr73 + goto tr463 st408: if p++; p == pe { goto _test_eof408 } st_case_408: switch data[p] { - case 73: + case 88: goto st409 - case 105: + case 120: goto st409 } - goto tr73 + goto tr463 st409: if p++; p == pe { goto _test_eof409 } st_case_409: switch data[p] { - case 90: + case 80: goto st410 - case 122: + case 112: goto st410 } - goto tr73 + goto tr463 st410: if p++; p == pe { goto _test_eof410 } st_case_410: switch data[p] { - case 65: + case 73: goto st411 - case 97: + case 105: goto st411 } - goto tr73 + goto tr463 st411: if p++; p == pe { goto _test_eof411 } st_case_411: switch data[p] { - case 84: + case 82: goto st412 - case 116: + case 114: goto st412 } - goto tr73 + goto tr463 st412: if p++; p == pe { goto _test_eof412 } st_case_412: switch data[p] { - case 73: + case 69: goto st413 - case 105: + case 101: goto st413 } - goto tr73 + goto tr463 st413: if p++; p == pe { goto _test_eof413 } st_case_413: switch data[p] { - case 79: + case 83: goto st414 - case 111: + case 115: goto st414 } - goto tr73 + goto tr463 st414: if p++; p == pe { goto _test_eof414 } st_case_414: switch data[p] { - case 78: - goto st415 - case 110: + case 9: + goto st414 + case 32: + goto st414 + case 58: goto st415 } - goto tr73 + goto st0 st415: if p++; p == pe { goto _test_eof415 } st_case_415: - switch data[p] { + _widec = int16(data[p]) + if 13 <= data[p] && data[p] <= 13 { + _widec = 256 + (int16(data[p]) - 0) + if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { + _widec += 256 + } + } + switch _widec { case 9: - goto tr544 + goto st415 case 32: - goto tr544 - case 58: - goto tr545 + goto st415 + case 525: + goto st417 + } + if 48 <= _widec && _widec <= 57 { + goto tr590 } goto st0 +tr590: +//line msg_parse.rl:329 +msg.MinExpires=0 +//line msg_parse.rl:222 + + msg.MinExpires = msg.MinExpires * 10 + (int(data[p]) - 0x30) + + goto st416 +tr592: +//line msg_parse.rl:222 + + msg.MinExpires = msg.MinExpires * 10 + (int(data[p]) - 0x30) + + goto st416 st416: if p++; p == pe { goto _test_eof416 } st_case_416: - switch data[p] { - case 69: - goto st417 - case 101: - goto st417 +//line msg_parse.go:11576 + if data[p] == 13 { + goto st238 + } + if 48 <= data[p] && data[p] <= 57 { + goto tr592 } - goto tr73 + goto st0 st417: if p++; p == pe { goto _test_eof417 } st_case_417: - switch data[p] { - case 81: - goto st418 - case 113: - goto st418 + if data[p] == 10 { + goto tr593 } - goto tr73 + goto st0 +tr593: +//line msg_parse.rl:238 + line++; linep = p; + goto st418 st418: if p++; p == pe { goto _test_eof418 } st_case_418: +//line msg_parse.go:11602 switch data[p] { - case 85: + case 9: goto st419 - case 117: + case 32: goto st419 } - goto tr73 + goto st0 st419: if p++; p == pe { goto _test_eof419 } st_case_419: switch data[p] { - case 73: - goto st420 - case 105: - goto st420 + case 9: + goto st419 + case 32: + goto st419 + } + if 48 <= data[p] && data[p] <= 57 { + goto tr590 } - goto tr73 + goto st0 +tr254: +//line msg_parse.rl:59 + + mark = p + + goto st420 st420: if p++; p == pe { goto _test_eof420 } st_case_420: +//line msg_parse.go:11636 switch data[p] { + case 9: + goto tr512 + case 32: + goto tr512 + case 58: + goto tr513 case 82: goto st421 case 114: goto st421 } - goto tr73 + goto st0 st421: if p++; p == pe { goto _test_eof421 } st_case_421: switch data[p] { - case 69: + case 71: goto st422 - case 101: + case 103: goto st422 } - goto tr73 + goto tr274 st422: if p++; p == pe { goto _test_eof422 } st_case_422: switch data[p] { - case 9: - goto tr552 - case 32: - goto tr552 - case 58: - goto tr553 + case 65: + goto st423 + case 97: + goto st423 } - goto st0 -tr87: -//line msg_parse.rl:55 - - mark = p - - goto st423 + goto tr274 st423: if p++; p == pe { goto _test_eof423 } st_case_423: -//line msg_parse.go:9117 switch data[p] { - case 9: - goto tr554 - case 32: - goto tr554 - case 58: - goto tr555 - case 69: + case 78: goto st424 - case 79: - goto st501 - case 101: + case 110: goto st424 - case 111: - goto st501 } - goto st0 + goto tr274 st424: if p++; p == pe { goto _test_eof424 } st_case_424: switch data[p] { - case 67: + case 73: goto st425 - case 70: - goto st446 - case 77: - goto st457 - case 80: - goto st481 - case 81: - goto st487 - case 84: - goto st492 - case 99: + case 105: goto st425 - case 102: - goto st446 - case 109: - goto st457 - case 112: - goto st481 - case 113: - goto st487 - case 116: - goto st492 } - goto tr73 + goto tr274 st425: if p++; p == pe { goto _test_eof425 } st_case_425: switch data[p] { - case 79: + case 90: goto st426 - case 111: + case 122: goto st426 } - goto st0 + goto tr274 st426: if p++; p == pe { goto _test_eof426 } st_case_426: switch data[p] { - case 82: + case 65: goto st427 - case 114: + case 97: goto st427 } - goto st0 + goto tr274 st427: if p++; p == pe { goto _test_eof427 } st_case_427: switch data[p] { - case 68: + case 84: goto st428 - case 100: + case 116: goto st428 } - goto st0 + goto tr274 st428: if p++; p == pe { goto _test_eof428 } st_case_428: - if data[p] == 45 { + switch data[p] { + case 73: + goto st429 + case 105: goto st429 } - goto st0 + goto tr274 st429: if p++; p == pe { goto _test_eof429 } st_case_429: switch data[p] { - case 82: + case 79: goto st430 - case 114: + case 111: goto st430 } - goto st0 + goto tr274 st430: if p++; p == pe { goto _test_eof430 } st_case_430: switch data[p] { - case 79: + case 78: goto st431 - case 111: + case 110: goto st431 } - goto st0 + goto tr274 st431: if p++; p == pe { goto _test_eof431 } st_case_431: switch data[p] { - case 85: - goto st432 - case 117: - goto st432 + case 9: + goto tr606 + case 32: + goto tr606 + case 58: + goto tr607 } goto st0 +tr255: +//line msg_parse.rl:59 + + mark = p + + goto st432 st432: if p++; p == pe { goto _test_eof432 } st_case_432: +//line msg_parse.go:11795 switch data[p] { - case 84: - goto st433 - case 116: + case 45: goto st433 + case 82: + goto st451 + case 114: + goto st451 } - goto st0 + goto tr274 st433: if p++; p == pe { goto _test_eof433 } st_case_433: switch data[p] { - case 69: + case 65: goto st434 - case 101: + case 97: goto st434 } - goto st0 + goto tr274 st434: if p++; p == pe { goto _test_eof434 } st_case_434: switch data[p] { - case 9: - goto st434 - case 32: - goto st434 - case 58: + case 83: + goto st435 + case 115: goto st435 } - goto st0 + goto tr274 st435: if p++; p == pe { goto _test_eof435 } st_case_435: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st435 - case 32: - goto st435 - case 269: - goto tr580 - case 525: - goto st443 - } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto tr575 - } - case _widec >= 33: - goto tr574 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr577 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr579 - } - default: - goto tr578 - } - default: - goto tr576 + switch data[p] { + case 83: + goto st436 + case 115: + goto st436 } - goto st0 -tr574: -//line msg_parse.rl:55 - - mark = p - - goto st436 + goto tr274 st436: if p++; p == pe { goto _test_eof436 } st_case_436: -//line msg_parse.go:9346 - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st436 - case 269: - goto tr588 - case 525: - goto tr589 - } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto st437 - } - case _widec >= 32: - goto st436 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto st439 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto st441 - } - default: - goto st440 - } - default: - goto st438 + switch data[p] { + case 69: + goto st437 + case 101: + goto st437 } - goto st0 -tr575: -//line msg_parse.rl:55 - - mark = p - - goto st437 + goto tr274 st437: if p++; p == pe { goto _test_eof437 } st_case_437: -//line msg_parse.go:9400 - if 128 <= data[p] && data[p] <= 191 { - goto st436 + switch data[p] { + case 82: + goto st438 + case 114: + goto st438 } - goto st0 -tr576: -//line msg_parse.rl:55 - - mark = p - - goto st438 + goto tr274 st438: if p++; p == pe { goto _test_eof438 } st_case_438: -//line msg_parse.go:9416 - if 128 <= data[p] && data[p] <= 191 { - goto st437 + switch data[p] { + case 84: + goto st439 + case 116: + goto st439 } - goto st0 -tr577: -//line msg_parse.rl:55 - - mark = p - - goto st439 + goto tr274 st439: if p++; p == pe { goto _test_eof439 } st_case_439: -//line msg_parse.go:9432 - if 128 <= data[p] && data[p] <= 191 { - goto st438 + switch data[p] { + case 69: + goto st440 + case 101: + goto st440 } - goto st0 -tr578: -//line msg_parse.rl:55 - - mark = p - - goto st440 + goto tr274 st440: if p++; p == pe { goto _test_eof440 } st_case_440: -//line msg_parse.go:9448 - if 128 <= data[p] && data[p] <= 191 { - goto st439 + switch data[p] { + case 68: + goto st441 + case 100: + goto st441 } - goto st0 -tr579: -//line msg_parse.rl:55 - - mark = p - - goto st441 + goto tr274 st441: if p++; p == pe { goto _test_eof441 } st_case_441: -//line msg_parse.go:9464 - if 128 <= data[p] && data[p] <= 191 { - goto st440 + if data[p] == 45 { + goto st442 } - goto st0 -tr593: -//line msg_parse.rl:55 - - mark = p - -//line msg_parse.rl:190 - - *rroutep, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - for *rroutep != nil { rroutep = &(*rroutep).Next } - - goto st442 -tr589: -//line msg_parse.rl:190 - - *rroutep, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - for *rroutep != nil { rroutep = &(*rroutep).Next } - - goto st442 + goto tr274 st442: if p++; p == pe { goto _test_eof442 } st_case_442: -//line msg_parse.go:9494 - if data[p] == 10 { - goto tr590 - } - goto st0 -tr590: -//line msg_parse.rl:224 - line++; linep = p; -//line msg_parse.rl:111 - - {goto st50 } - - goto st620 - st620: - if p++; p == pe { - goto _test_eof620 - } - st_case_620: -//line msg_parse.go:9512 switch data[p] { - case 9: - goto st436 - case 32: - goto st436 + case 73: + goto st443 + case 105: + goto st443 } - goto st0 + goto tr274 st443: if p++; p == pe { goto _test_eof443 } st_case_443: - if data[p] == 10 { - goto tr591 + switch data[p] { + case 68: + goto st444 + case 100: + goto st444 } - goto st0 -tr591: -//line msg_parse.rl:224 - line++; linep = p; - goto st444 + goto tr274 st444: if p++; p == pe { goto _test_eof444 - } - st_case_444: -//line msg_parse.go:9538 - switch data[p] { - case 9: - goto st445 - case 32: - goto st445 - } - goto st0 - st445: - if p++; p == pe { - goto _test_eof445 - } - st_case_445: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: + } + st_case_444: + switch data[p] { + case 69: goto st445 - case 32: + case 101: goto st445 - case 269: - goto tr580 - case 525: - goto tr593 } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto tr575 - } - case _widec >= 33: - goto tr574 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr577 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr579 - } - default: - goto tr578 - } - default: - goto tr576 + goto tr274 + st445: + if p++; p == pe { + goto _test_eof445 } - goto st0 + st_case_445: + switch data[p] { + case 78: + goto st446 + case 110: + goto st446 + } + goto tr274 st446: if p++; p == pe { goto _test_eof446 } st_case_446: switch data[p] { - case 69: + case 84: goto st447 - case 101: + case 116: goto st447 } - goto tr73 + goto tr274 st447: if p++; p == pe { goto _test_eof447 } st_case_447: switch data[p] { - case 82: + case 73: goto st448 - case 114: + case 105: goto st448 } - goto tr73 + goto tr274 st448: if p++; p == pe { goto _test_eof448 } st_case_448: switch data[p] { - case 45: + case 84: + goto st449 + case 116: goto st449 - case 82: - goto st452 - case 114: - goto st452 } - goto tr73 + goto tr274 st449: if p++; p == pe { goto _test_eof449 } st_case_449: switch data[p] { - case 84: + case 89: goto st450 - case 116: + case 121: goto st450 } - goto tr73 + goto tr274 st450: if p++; p == pe { goto _test_eof450 } st_case_450: switch data[p] { - case 79: - goto st451 - case 111: - goto st451 + case 9: + goto tr627 + case 32: + goto tr627 + case 58: + goto tr628 } - goto tr73 + goto st0 st451: if p++; p == pe { goto _test_eof451 } st_case_451: switch data[p] { - case 9: - goto tr554 - case 32: - goto tr554 - case 58: - goto tr555 + case 73: + goto st452 + case 79: + goto st458 + case 105: + goto st452 + case 111: + goto st458 } - goto st0 + goto tr274 st452: if p++; p == pe { goto _test_eof452 } st_case_452: switch data[p] { - case 69: + case 79: goto st453 - case 101: + case 111: goto st453 } - goto tr73 + goto tr274 st453: if p++; p == pe { goto _test_eof453 } st_case_453: switch data[p] { - case 68: + case 82: goto st454 - case 100: + case 114: goto st454 } - goto tr73 + goto tr274 st454: if p++; p == pe { goto _test_eof454 } st_case_454: - if data[p] == 45 { + switch data[p] { + case 73: + goto st455 + case 105: goto st455 } - goto tr73 + goto tr274 st455: if p++; p == pe { goto _test_eof455 } st_case_455: switch data[p] { - case 66: + case 84: goto st456 - case 98: + case 116: goto st456 } - goto tr73 + goto tr274 st456: if p++; p == pe { goto _test_eof456 @@ -9719,21 +12087,23 @@ tr591: st_case_456: switch data[p] { case 89: - goto st133 + goto st457 case 121: - goto st133 + goto st457 } - goto tr73 + goto tr274 st457: if p++; p == pe { goto _test_eof457 } st_case_457: switch data[p] { - case 79: - goto st458 - case 111: - goto st458 + case 9: + goto tr636 + case 32: + goto tr636 + case 58: + goto tr637 } goto st0 st458: @@ -9742,24 +12112,24 @@ tr591: } st_case_458: switch data[p] { - case 84: + case 88: goto st459 - case 116: + case 120: goto st459 } - goto st0 + goto tr274 st459: if p++; p == pe { goto _test_eof459 } st_case_459: switch data[p] { - case 69: + case 89: goto st460 - case 101: + case 121: goto st460 } - goto st0 + goto tr274 st460: if p++; p == pe { goto _test_eof460 @@ -9768,671 +12138,547 @@ tr591: if data[p] == 45 { goto st461 } - goto st0 + goto tr274 st461: if p++; p == pe { goto _test_eof461 } st_case_461: switch data[p] { - case 80: + case 65: goto st462 - case 112: + case 82: + goto st483 + case 97: goto st462 + case 114: + goto st483 } - goto st0 + goto tr274 st462: if p++; p == pe { goto _test_eof462 } st_case_462: switch data[p] { - case 65: + case 85: goto st463 - case 97: + case 117: goto st463 } - goto st0 + goto tr274 st463: if p++; p == pe { goto _test_eof463 } st_case_463: switch data[p] { - case 82: + case 84: goto st464 - case 114: + case 116: goto st464 } - goto st0 + goto tr274 st464: if p++; p == pe { goto _test_eof464 } st_case_464: switch data[p] { - case 84: + case 72: goto st465 - case 116: + case 104: goto st465 } - goto st0 + goto tr274 st465: if p++; p == pe { goto _test_eof465 } st_case_465: switch data[p] { - case 89: + case 69: goto st466 - case 121: + case 79: + goto st474 + case 101: goto st466 + case 111: + goto st474 } - goto st0 + goto tr274 st466: if p++; p == pe { goto _test_eof466 } st_case_466: - if data[p] == 45 { + switch data[p] { + case 78: + goto st467 + case 110: goto st467 } - goto st0 + goto tr274 st467: if p++; p == pe { goto _test_eof467 } st_case_467: switch data[p] { - case 73: + case 84: goto st468 - case 105: + case 116: goto st468 } - goto st0 + goto tr274 st468: if p++; p == pe { goto _test_eof468 } st_case_468: switch data[p] { - case 68: + case 73: goto st469 - case 100: + case 105: goto st469 } - goto st0 + goto tr274 st469: if p++; p == pe { goto _test_eof469 } st_case_469: switch data[p] { - case 9: - goto st469 - case 32: - goto st469 - case 58: + case 67: + goto st470 + case 99: goto st470 } - goto st0 + goto tr274 st470: if p++; p == pe { goto _test_eof470 } st_case_470: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st470 - case 32: - goto st470 - case 269: - goto tr624 - case 525: - goto st478 - } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto tr619 - } - case _widec >= 33: - goto tr618 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr621 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr623 - } - default: - goto tr622 - } - default: - goto tr620 + switch data[p] { + case 65: + goto st471 + case 97: + goto st471 } - goto st0 -tr618: -//line msg_parse.rl:55 - - mark = p - - goto st471 + goto tr274 st471: if p++; p == pe { goto _test_eof471 } st_case_471: -//line msg_parse.go:9940 - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st471 - case 269: - goto tr632 - case 525: - goto tr633 - } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto st472 - } - case _widec >= 32: - goto st471 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto st474 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto st476 - } - default: - goto st475 - } - default: - goto st473 + switch data[p] { + case 84: + goto st472 + case 116: + goto st472 } - goto st0 -tr619: -//line msg_parse.rl:55 - - mark = p - - goto st472 + goto tr274 st472: if p++; p == pe { goto _test_eof472 } st_case_472: -//line msg_parse.go:9994 - if 128 <= data[p] && data[p] <= 191 { - goto st471 + switch data[p] { + case 69: + goto st473 + case 101: + goto st473 } - goto st0 -tr620: -//line msg_parse.rl:55 - - mark = p - - goto st473 + goto tr274 st473: if p++; p == pe { goto _test_eof473 } st_case_473: -//line msg_parse.go:10010 - if 128 <= data[p] && data[p] <= 191 { - goto st472 + switch data[p] { + case 9: + goto tr655 + case 32: + goto tr655 + case 58: + goto tr656 } goto st0 -tr621: -//line msg_parse.rl:55 - - mark = p - - goto st474 st474: if p++; p == pe { goto _test_eof474 } st_case_474: -//line msg_parse.go:10026 - if 128 <= data[p] && data[p] <= 191 { - goto st473 + switch data[p] { + case 82: + goto st475 + case 114: + goto st475 } - goto st0 -tr622: -//line msg_parse.rl:55 - - mark = p - - goto st475 + goto tr274 st475: if p++; p == pe { goto _test_eof475 } st_case_475: -//line msg_parse.go:10042 - if 128 <= data[p] && data[p] <= 191 { - goto st474 + switch data[p] { + case 73: + goto st476 + case 105: + goto st476 } - goto st0 -tr623: -//line msg_parse.rl:55 - - mark = p - - goto st476 + goto tr274 st476: if p++; p == pe { goto _test_eof476 } st_case_476: -//line msg_parse.go:10058 - if 128 <= data[p] && data[p] <= 191 { - goto st475 + switch data[p] { + case 90: + goto st477 + case 122: + goto st477 } - goto st0 -tr637: -//line msg_parse.rl:55 - - mark = p - -//line msg_parse.rl:196 - - msg.RemotePartyID, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - - goto st477 -tr633: -//line msg_parse.rl:196 - - msg.RemotePartyID, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - - goto st477 + goto tr274 st477: if p++; p == pe { goto _test_eof477 } st_case_477: -//line msg_parse.go:10086 - if data[p] == 10 { - goto tr634 - } - goto st0 -tr634: -//line msg_parse.rl:224 - line++; linep = p; -//line msg_parse.rl:111 - - {goto st50 } - - goto st621 - st621: - if p++; p == pe { - goto _test_eof621 - } - st_case_621: -//line msg_parse.go:10104 switch data[p] { - case 9: - goto st471 - case 32: - goto st471 + case 65: + goto st478 + case 97: + goto st478 } - goto st0 + goto tr274 st478: if p++; p == pe { goto _test_eof478 } st_case_478: - if data[p] == 10 { - goto tr635 + switch data[p] { + case 84: + goto st479 + case 116: + goto st479 } - goto st0 -tr635: -//line msg_parse.rl:224 - line++; linep = p; - goto st479 + goto tr274 st479: if p++; p == pe { goto _test_eof479 } st_case_479: -//line msg_parse.go:10130 switch data[p] { - case 9: + case 73: goto st480 - case 32: + case 105: goto st480 } - goto st0 + goto tr274 st480: if p++; p == pe { goto _test_eof480 } st_case_480: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st480 - case 32: - goto st480 - case 269: - goto tr624 - case 525: - goto tr637 - } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto tr619 - } - case _widec >= 33: - goto tr618 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr621 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr623 - } - default: - goto tr622 - } - default: - goto tr620 + switch data[p] { + case 79: + goto st481 + case 111: + goto st481 } - goto st0 + goto tr274 st481: if p++; p == pe { goto _test_eof481 } st_case_481: switch data[p] { - case 76: + case 78: goto st482 - case 108: + case 110: goto st482 } - goto tr73 + goto tr274 st482: if p++; p == pe { goto _test_eof482 } st_case_482: switch data[p] { - case 89: - goto st483 - case 121: - goto st483 + case 9: + goto tr665 + case 32: + goto tr665 + case 58: + goto tr666 } - goto tr73 + goto st0 st483: if p++; p == pe { goto _test_eof483 } st_case_483: - if data[p] == 45 { + switch data[p] { + case 69: + goto st484 + case 101: goto st484 } - goto tr73 + goto tr274 st484: if p++; p == pe { goto _test_eof484 } st_case_484: switch data[p] { - case 84: + case 81: goto st485 - case 116: + case 113: goto st485 } - goto tr73 + goto tr274 st485: if p++; p == pe { goto _test_eof485 } st_case_485: switch data[p] { - case 79: + case 85: goto st486 - case 111: + case 117: goto st486 } - goto tr73 + goto tr274 st486: if p++; p == pe { goto _test_eof486 } st_case_486: switch data[p] { - case 9: - goto tr643 - case 32: - goto tr643 - case 58: - goto tr644 + case 73: + goto st487 + case 105: + goto st487 } - goto st0 + goto tr274 st487: if p++; p == pe { goto _test_eof487 } st_case_487: switch data[p] { - case 85: + case 82: goto st488 - case 117: + case 114: goto st488 } - goto tr73 + goto tr274 st488: if p++; p == pe { goto _test_eof488 } st_case_488: switch data[p] { - case 73: + case 69: goto st489 - case 105: + case 101: goto st489 } - goto tr73 + goto tr274 st489: if p++; p == pe { goto _test_eof489 } st_case_489: switch data[p] { - case 82: - goto st490 - case 114: - goto st490 + case 9: + goto tr673 + case 32: + goto tr673 + case 58: + goto tr674 } - goto tr73 + goto st0 +tr256: +//line msg_parse.rl:59 + + mark = p + + goto st490 st490: if p++; p == pe { goto _test_eof490 } st_case_490: +//line msg_parse.go:12516 switch data[p] { + case 9: + goto tr675 + case 32: + goto tr675 + case 58: + goto tr676 case 69: goto st491 + case 79: + goto st546 case 101: goto st491 + case 111: + goto st546 } - goto tr73 + goto tr274 st491: if p++; p == pe { goto _test_eof491 } st_case_491: switch data[p] { - case 9: - goto tr649 - case 32: - goto tr649 - case 58: - goto tr650 + case 67: + goto st492 + case 70: + goto st502 + case 77: + goto st513 + case 80: + goto st526 + case 81: + goto st532 + case 84: + goto st537 + case 99: + goto st492 + case 102: + goto st502 + case 109: + goto st513 + case 112: + goto st526 + case 113: + goto st532 + case 116: + goto st537 } - goto st0 + goto tr274 st492: if p++; p == pe { goto _test_eof492 } st_case_492: switch data[p] { - case 82: + case 79: goto st493 - case 114: + case 111: goto st493 } - goto tr73 + goto tr274 st493: if p++; p == pe { goto _test_eof493 } st_case_493: switch data[p] { - case 89: + case 82: goto st494 - case 121: + case 114: goto st494 } - goto tr73 + goto tr274 st494: if p++; p == pe { goto _test_eof494 } st_case_494: - if data[p] == 45 { + switch data[p] { + case 68: + goto st495 + case 100: goto st495 } - goto tr73 + goto tr274 st495: if p++; p == pe { goto _test_eof495 } st_case_495: - switch data[p] { - case 65: - goto st496 - case 97: + if data[p] == 45 { goto st496 } - goto tr73 + goto tr274 st496: if p++; p == pe { goto _test_eof496 } st_case_496: switch data[p] { - case 70: + case 82: goto st497 - case 102: + case 114: goto st497 } - goto tr73 + goto tr274 st497: if p++; p == pe { goto _test_eof497 } st_case_497: switch data[p] { - case 84: + case 79: goto st498 - case 116: + case 111: goto st498 } - goto tr73 + goto tr274 st498: if p++; p == pe { goto _test_eof498 } st_case_498: switch data[p] { - case 69: + case 85: goto st499 - case 101: + case 117: goto st499 } - goto tr73 + goto tr274 st499: if p++; p == pe { goto _test_eof499 } st_case_499: switch data[p] { - case 82: + case 84: goto st500 - case 114: + case 116: goto st500 } - goto tr73 + goto tr274 st500: if p++; p == pe { goto _test_eof500 } st_case_500: switch data[p] { - case 9: - goto tr659 - case 32: - goto tr659 - case 58: - goto tr660 + case 69: + goto st501 + case 101: + goto st501 } - goto st0 + goto tr274 st501: if p++; p == pe { goto _test_eof501 } st_case_501: switch data[p] { - case 85: - goto st502 - case 117: - goto st502 + case 9: + goto tr694 + case 32: + goto tr694 + case 58: + goto tr695 } goto st0 st502: @@ -10441,1331 +12687,1252 @@ tr635: } st_case_502: switch data[p] { - case 84: + case 69: goto st503 - case 116: + case 101: goto st503 } - goto st0 + goto tr274 st503: if p++; p == pe { goto _test_eof503 } st_case_503: switch data[p] { - case 69: + case 82: goto st504 - case 101: + case 114: goto st504 } - goto st0 + goto tr274 st504: if p++; p == pe { goto _test_eof504 } st_case_504: switch data[p] { - case 9: - goto st504 - case 32: - goto st504 - case 58: + case 45: goto st505 + case 82: + goto st508 + case 114: + goto st508 } - goto st0 + goto tr274 st505: if p++; p == pe { goto _test_eof505 } st_case_505: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st505 - case 32: - goto st505 - case 269: - goto tr671 - case 525: - goto st513 - } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto tr666 - } - case _widec >= 33: - goto tr665 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr668 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr670 - } - default: - goto tr669 - } - default: - goto tr667 + switch data[p] { + case 84: + goto st506 + case 116: + goto st506 } - goto st0 -tr665: -//line msg_parse.rl:55 - - mark = p - - goto st506 + goto tr274 st506: if p++; p == pe { goto _test_eof506 } st_case_506: -//line msg_parse.go:10537 - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } + switch data[p] { + case 79: + goto st507 + case 111: + goto st507 } - switch _widec { + goto tr274 + st507: + if p++; p == pe { + goto _test_eof507 + } + st_case_507: + switch data[p] { case 9: - goto st506 - case 269: - goto tr679 - case 525: - goto tr680 + goto tr675 + case 32: + goto tr675 + case 58: + goto tr676 + } + goto st0 + st508: + if p++; p == pe { + goto _test_eof508 + } + st_case_508: + switch data[p] { + case 69: + goto st509 + case 101: + goto st509 + } + goto tr274 + st509: + if p++; p == pe { + goto _test_eof509 + } + st_case_509: + switch data[p] { + case 68: + goto st510 + case 100: + goto st510 + } + goto tr274 + st510: + if p++; p == pe { + goto _test_eof510 + } + st_case_510: + if data[p] == 45 { + goto st511 + } + goto tr274 + st511: + if p++; p == pe { + goto _test_eof511 + } + st_case_511: + switch data[p] { + case 66: + goto st512 + case 98: + goto st512 + } + goto tr274 + st512: + if p++; p == pe { + goto _test_eof512 + } + st_case_512: + switch data[p] { + case 89: + goto st228 + case 121: + goto st228 + } + goto tr274 + st513: + if p++; p == pe { + goto _test_eof513 + } + st_case_513: + switch data[p] { + case 79: + goto st514 + case 111: + goto st514 + } + goto tr274 + st514: + if p++; p == pe { + goto _test_eof514 + } + st_case_514: + switch data[p] { + case 84: + goto st515 + case 116: + goto st515 + } + goto tr274 + st515: + if p++; p == pe { + goto _test_eof515 + } + st_case_515: + switch data[p] { + case 69: + goto st516 + case 101: + goto st516 + } + goto tr274 + st516: + if p++; p == pe { + goto _test_eof516 + } + st_case_516: + if data[p] == 45 { + goto st517 + } + goto tr274 + st517: + if p++; p == pe { + goto _test_eof517 + } + st_case_517: + switch data[p] { + case 80: + goto st518 + case 112: + goto st518 + } + goto tr274 + st518: + if p++; p == pe { + goto _test_eof518 + } + st_case_518: + switch data[p] { + case 65: + goto st519 + case 97: + goto st519 + } + goto tr274 + st519: + if p++; p == pe { + goto _test_eof519 + } + st_case_519: + switch data[p] { + case 82: + goto st520 + case 114: + goto st520 + } + goto tr274 + st520: + if p++; p == pe { + goto _test_eof520 + } + st_case_520: + switch data[p] { + case 84: + goto st521 + case 116: + goto st521 + } + goto tr274 + st521: + if p++; p == pe { + goto _test_eof521 + } + st_case_521: + switch data[p] { + case 89: + goto st522 + case 121: + goto st522 + } + goto tr274 + st522: + if p++; p == pe { + goto _test_eof522 } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto st507 - } - case _widec >= 32: - goto st506 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto st509 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto st511 - } - default: - goto st510 - } - default: - goto st508 + st_case_522: + if data[p] == 45 { + goto st523 } - goto st0 -tr666: -//line msg_parse.rl:55 - - mark = p - - goto st507 - st507: + goto tr274 + st523: if p++; p == pe { - goto _test_eof507 + goto _test_eof523 } - st_case_507: -//line msg_parse.go:10591 - if 128 <= data[p] && data[p] <= 191 { - goto st506 + st_case_523: + switch data[p] { + case 73: + goto st524 + case 105: + goto st524 } - goto st0 -tr667: -//line msg_parse.rl:55 - - mark = p - - goto st508 - st508: + goto tr274 + st524: if p++; p == pe { - goto _test_eof508 + goto _test_eof524 } - st_case_508: -//line msg_parse.go:10607 - if 128 <= data[p] && data[p] <= 191 { - goto st507 + st_case_524: + switch data[p] { + case 68: + goto st525 + case 100: + goto st525 } - goto st0 -tr668: -//line msg_parse.rl:55 - - mark = p - - goto st509 - st509: + goto tr274 + st525: if p++; p == pe { - goto _test_eof509 + goto _test_eof525 } - st_case_509: -//line msg_parse.go:10623 - if 128 <= data[p] && data[p] <= 191 { - goto st508 + st_case_525: + switch data[p] { + case 9: + goto tr719 + case 32: + goto tr719 + case 58: + goto tr720 } goto st0 -tr669: -//line msg_parse.rl:55 - - mark = p - - goto st510 - st510: + st526: if p++; p == pe { - goto _test_eof510 + goto _test_eof526 } - st_case_510: -//line msg_parse.go:10639 - if 128 <= data[p] && data[p] <= 191 { - goto st509 + st_case_526: + switch data[p] { + case 76: + goto st527 + case 108: + goto st527 } - goto st0 -tr670: -//line msg_parse.rl:55 - - mark = p - - goto st511 - st511: + goto tr274 + st527: if p++; p == pe { - goto _test_eof511 + goto _test_eof527 } - st_case_511: -//line msg_parse.go:10655 - if 128 <= data[p] && data[p] <= 191 { - goto st510 + st_case_527: + switch data[p] { + case 89: + goto st528 + case 121: + goto st528 } - goto st0 -tr684: -//line msg_parse.rl:55 - - mark = p - -//line msg_parse.rl:201 - - *routep, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - for *routep != nil { routep = &(*routep).Next } - - goto st512 -tr680: -//line msg_parse.rl:201 - - *routep, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - for *routep != nil { routep = &(*routep).Next } - - goto st512 - st512: + goto tr274 + st528: if p++; p == pe { - goto _test_eof512 + goto _test_eof528 } - st_case_512: -//line msg_parse.go:10685 - if data[p] == 10 { - goto tr681 + st_case_528: + if data[p] == 45 { + goto st529 } - goto st0 -tr681: -//line msg_parse.rl:224 - line++; linep = p; -//line msg_parse.rl:111 - - {goto st50 } - - goto st622 - st622: + goto tr274 + st529: if p++; p == pe { - goto _test_eof622 + goto _test_eof529 } - st_case_622: -//line msg_parse.go:10703 + st_case_529: switch data[p] { - case 9: - goto st506 - case 32: - goto st506 + case 84: + goto st530 + case 116: + goto st530 } - goto st0 - st513: + goto tr274 + st530: if p++; p == pe { - goto _test_eof513 + goto _test_eof530 } - st_case_513: - if data[p] == 10 { - goto tr682 + st_case_530: + switch data[p] { + case 79: + goto st531 + case 111: + goto st531 } - goto st0 -tr682: -//line msg_parse.rl:224 - line++; linep = p; - goto st514 - st514: + goto tr274 + st531: if p++; p == pe { - goto _test_eof514 + goto _test_eof531 } - st_case_514: -//line msg_parse.go:10729 + st_case_531: switch data[p] { case 9: - goto st515 + goto tr726 case 32: - goto st515 + goto tr726 + case 58: + goto tr727 } goto st0 - st515: + st532: if p++; p == pe { - goto _test_eof515 + goto _test_eof532 } - st_case_515: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } + st_case_532: + switch data[p] { + case 85: + goto st533 + case 117: + goto st533 } - switch _widec { - case 9: - goto st515 - case 32: - goto st515 - case 269: - goto tr671 - case 525: - goto tr684 + goto tr274 + st533: + if p++; p == pe { + goto _test_eof533 } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto tr666 - } - case _widec >= 33: - goto tr665 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr668 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr670 - } - default: - goto tr669 - } - default: - goto tr667 + st_case_533: + switch data[p] { + case 73: + goto st534 + case 105: + goto st534 } - goto st0 -tr88: -//line msg_parse.rl:55 - - mark = p - - goto st516 - st516: + goto tr274 + st534: + if p++; p == pe { + goto _test_eof534 + } + st_case_534: + switch data[p] { + case 82: + goto st535 + case 114: + goto st535 + } + goto tr274 + st535: + if p++; p == pe { + goto _test_eof535 + } + st_case_535: + switch data[p] { + case 69: + goto st536 + case 101: + goto st536 + } + goto tr274 + st536: if p++; p == pe { - goto _test_eof516 + goto _test_eof536 } - st_case_516: -//line msg_parse.go:10797 + st_case_536: switch data[p] { case 9: - goto tr685 + goto tr732 case 32: - goto tr685 + goto tr732 case 58: - goto tr686 - case 69: - goto st517 - case 85: - goto st522 - case 101: - goto st517 - case 117: - goto st522 + goto tr733 } goto st0 - st517: + st537: if p++; p == pe { - goto _test_eof517 + goto _test_eof537 } - st_case_517: + st_case_537: switch data[p] { case 82: - goto st518 + goto st538 case 114: - goto st518 + goto st538 } - goto tr73 - st518: + goto tr274 + st538: if p++; p == pe { - goto _test_eof518 + goto _test_eof538 } - st_case_518: + st_case_538: switch data[p] { - case 86: - goto st519 - case 118: - goto st519 + case 89: + goto st539 + case 121: + goto st539 } - goto tr73 - st519: + goto tr274 + st539: if p++; p == pe { - goto _test_eof519 + goto _test_eof539 } - st_case_519: + st_case_539: + if data[p] == 45 { + goto st540 + } + goto tr274 + st540: + if p++; p == pe { + goto _test_eof540 + } + st_case_540: switch data[p] { - case 69: - goto st520 - case 101: - goto st520 + case 65: + goto st541 + case 97: + goto st541 } - goto tr73 - st520: + goto tr274 + st541: if p++; p == pe { - goto _test_eof520 + goto _test_eof541 } - st_case_520: + st_case_541: switch data[p] { - case 82: - goto st521 - case 114: - goto st521 + case 70: + goto st542 + case 102: + goto st542 } - goto tr73 - st521: + goto tr274 + st542: if p++; p == pe { - goto _test_eof521 + goto _test_eof542 } - st_case_521: + st_case_542: switch data[p] { - case 9: - goto tr693 - case 32: - goto tr693 - case 58: - goto tr694 + case 84: + goto st543 + case 116: + goto st543 } - goto st0 - st522: + goto tr274 + st543: if p++; p == pe { - goto _test_eof522 + goto _test_eof543 } - st_case_522: + st_case_543: switch data[p] { - case 66: - goto st523 - case 80: - goto st528 - case 98: - goto st523 - case 112: - goto st528 + case 69: + goto st544 + case 101: + goto st544 } - goto tr73 - st523: + goto tr274 + st544: if p++; p == pe { - goto _test_eof523 + goto _test_eof544 } - st_case_523: + st_case_544: switch data[p] { - case 74: - goto st524 - case 106: - goto st524 + case 82: + goto st545 + case 114: + goto st545 } - goto tr73 - st524: + goto tr274 + st545: if p++; p == pe { - goto _test_eof524 + goto _test_eof545 } - st_case_524: + st_case_545: switch data[p] { - case 69: - goto st525 - case 101: - goto st525 + case 9: + goto tr742 + case 32: + goto tr742 + case 58: + goto tr743 } - goto tr73 - st525: + goto st0 + st546: if p++; p == pe { - goto _test_eof525 + goto _test_eof546 } - st_case_525: + st_case_546: switch data[p] { - case 67: - goto st526 - case 99: - goto st526 + case 85: + goto st547 + case 117: + goto st547 } - goto tr73 - st526: + goto tr274 + st547: if p++; p == pe { - goto _test_eof526 + goto _test_eof547 } - st_case_526: + st_case_547: switch data[p] { case 84: - goto st527 + goto st548 case 116: - goto st527 + goto st548 } - goto tr73 - st527: + goto tr274 + st548: if p++; p == pe { - goto _test_eof527 + goto _test_eof548 } - st_case_527: + st_case_548: switch data[p] { - case 9: - goto tr685 - case 32: - goto tr685 - case 58: - goto tr686 + case 69: + goto st549 + case 101: + goto st549 } - goto st0 - st528: + goto tr274 + st549: if p++; p == pe { - goto _test_eof528 + goto _test_eof549 } - st_case_528: + st_case_549: switch data[p] { - case 80: - goto st529 - case 112: - goto st529 + case 9: + goto tr747 + case 32: + goto tr747 + case 58: + goto tr748 } - goto tr73 - st529: + goto st0 +tr257: +//line msg_parse.rl:59 + + mark = p + + goto st550 + st550: if p++; p == pe { - goto _test_eof529 + goto _test_eof550 } - st_case_529: + st_case_550: +//line msg_parse.go:13271 switch data[p] { - case 79: - goto st530 - case 111: - goto st530 + case 9: + goto tr749 + case 32: + goto tr749 + case 58: + goto tr750 + case 69: + goto st551 + case 85: + goto st556 + case 101: + goto st551 + case 117: + goto st556 } - goto tr73 - st530: + goto st0 + st551: if p++; p == pe { - goto _test_eof530 + goto _test_eof551 } - st_case_530: + st_case_551: switch data[p] { case 82: - goto st531 + goto st552 case 114: - goto st531 + goto st552 } - goto tr73 - st531: + goto tr274 + st552: if p++; p == pe { - goto _test_eof531 + goto _test_eof552 } - st_case_531: + st_case_552: switch data[p] { - case 84: - goto st532 - case 116: - goto st532 + case 86: + goto st553 + case 118: + goto st553 } - goto tr73 - st532: + goto tr274 + st553: if p++; p == pe { - goto _test_eof532 + goto _test_eof553 } - st_case_532: + st_case_553: switch data[p] { case 69: - goto st533 - case 101: - goto st533 - } - goto tr73 - st533: - if p++; p == pe { - goto _test_eof533 - } - st_case_533: - switch data[p] { - case 68: - goto st293 - case 100: - goto st293 + goto st554 + case 101: + goto st554 } - goto tr73 -tr89: -//line msg_parse.rl:55 - - mark = p - - goto st534 - st534: + goto tr274 + st554: if p++; p == pe { - goto _test_eof534 + goto _test_eof554 } - st_case_534: -//line msg_parse.go:11038 + st_case_554: switch data[p] { - case 9: - goto st535 - case 32: - goto st535 - case 58: - goto st536 - case 73: - goto st547 - case 79: - goto st535 - case 105: - goto st547 - case 111: - goto st535 + case 82: + goto st555 + case 114: + goto st555 } - goto tr73 - st535: + goto tr274 + st555: if p++; p == pe { - goto _test_eof535 + goto _test_eof555 } - st_case_535: + st_case_555: switch data[p] { case 9: - goto st535 + goto tr757 case 32: - goto st535 + goto tr757 case 58: - goto st536 + goto tr758 } goto st0 - st536: + st556: if p++; p == pe { - goto _test_eof536 - } - st_case_536: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st536 - case 32: - goto st536 - case 269: - goto tr716 - case 525: - goto st544 + goto _test_eof556 } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto tr711 - } - case _widec >= 33: - goto tr710 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr713 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr715 - } - default: - goto tr714 - } - default: - goto tr712 + st_case_556: + switch data[p] { + case 66: + goto st557 + case 80: + goto st562 + case 98: + goto st557 + case 112: + goto st562 } - goto st0 -tr710: -//line msg_parse.rl:55 - - mark = p - - goto st537 - st537: + goto tr274 + st557: if p++; p == pe { - goto _test_eof537 - } - st_case_537: -//line msg_parse.go:11130 - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st537 - case 269: - goto tr724 - case 525: - goto tr725 + goto _test_eof557 } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto st538 - } - case _widec >= 32: - goto st537 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto st540 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto st542 - } - default: - goto st541 - } - default: - goto st539 + st_case_557: + switch data[p] { + case 74: + goto st558 + case 106: + goto st558 } - goto st0 -tr711: -//line msg_parse.rl:55 - - mark = p - - goto st538 - st538: + goto tr274 + st558: if p++; p == pe { - goto _test_eof538 + goto _test_eof558 } - st_case_538: -//line msg_parse.go:11184 - if 128 <= data[p] && data[p] <= 191 { - goto st537 + st_case_558: + switch data[p] { + case 69: + goto st559 + case 101: + goto st559 } - goto st0 -tr712: -//line msg_parse.rl:55 - - mark = p - - goto st539 - st539: + goto tr274 + st559: if p++; p == pe { - goto _test_eof539 + goto _test_eof559 } - st_case_539: -//line msg_parse.go:11200 - if 128 <= data[p] && data[p] <= 191 { - goto st538 + st_case_559: + switch data[p] { + case 67: + goto st560 + case 99: + goto st560 } - goto st0 -tr713: -//line msg_parse.rl:55 - - mark = p - - goto st540 - st540: + goto tr274 + st560: if p++; p == pe { - goto _test_eof540 + goto _test_eof560 } - st_case_540: -//line msg_parse.go:11216 - if 128 <= data[p] && data[p] <= 191 { - goto st539 + st_case_560: + switch data[p] { + case 84: + goto st561 + case 116: + goto st561 } - goto st0 -tr714: -//line msg_parse.rl:55 - - mark = p - - goto st541 - st541: + goto tr274 + st561: if p++; p == pe { - goto _test_eof541 + goto _test_eof561 } - st_case_541: -//line msg_parse.go:11232 - if 128 <= data[p] && data[p] <= 191 { - goto st540 + st_case_561: + switch data[p] { + case 9: + goto tr749 + case 32: + goto tr749 + case 58: + goto tr750 } goto st0 -tr715: -//line msg_parse.rl:55 - - mark = p - - goto st542 - st542: + st562: if p++; p == pe { - goto _test_eof542 + goto _test_eof562 } - st_case_542: -//line msg_parse.go:11248 - if 128 <= data[p] && data[p] <= 191 { - goto st541 + st_case_562: + switch data[p] { + case 80: + goto st563 + case 112: + goto st563 } - goto st0 -tr729: -//line msg_parse.rl:55 - - mark = p - -//line msg_parse.rl:207 - - msg.To, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - - goto st543 -tr725: -//line msg_parse.rl:207 - - msg.To, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - - goto st543 - st543: + goto tr274 + st563: if p++; p == pe { - goto _test_eof543 - } - st_case_543: -//line msg_parse.go:11276 - if data[p] == 10 { - goto tr726 + goto _test_eof563 } - goto st0 -tr726: -//line msg_parse.rl:224 - line++; linep = p; -//line msg_parse.rl:111 - - {goto st50 } - - goto st623 - st623: + st_case_563: + switch data[p] { + case 79: + goto st564 + case 111: + goto st564 + } + goto tr274 + st564: if p++; p == pe { - goto _test_eof623 + goto _test_eof564 } - st_case_623: -//line msg_parse.go:11294 + st_case_564: switch data[p] { - case 9: - goto st537 - case 32: - goto st537 + case 82: + goto st565 + case 114: + goto st565 } - goto st0 - st544: + goto tr274 + st565: if p++; p == pe { - goto _test_eof544 + goto _test_eof565 } - st_case_544: - if data[p] == 10 { - goto tr727 + st_case_565: + switch data[p] { + case 84: + goto st566 + case 116: + goto st566 } - goto st0 -tr727: -//line msg_parse.rl:224 - line++; linep = p; - goto st545 - st545: + goto tr274 + st566: if p++; p == pe { - goto _test_eof545 + goto _test_eof566 } - st_case_545: -//line msg_parse.go:11320 + st_case_566: switch data[p] { - case 9: - goto st546 - case 32: - goto st546 + case 69: + goto st567 + case 101: + goto st567 } - goto st0 - st546: + goto tr274 + st567: if p++; p == pe { - goto _test_eof546 + goto _test_eof567 } - st_case_546: - _widec = int16(data[p]) - if 13 <= data[p] && data[p] <= 13 { - _widec = 256 + (int16(data[p]) - 0) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } + st_case_567: + switch data[p] { + case 68: + goto st371 + case 100: + goto st371 } - switch _widec { + goto tr274 +tr258: +//line msg_parse.rl:59 + + mark = p + + goto st568 + st568: + if p++; p == pe { + goto _test_eof568 + } + st_case_568: +//line msg_parse.go:13512 + switch data[p] { case 9: - goto st546 + goto tr771 case 32: - goto st546 - case 269: - goto tr716 - case 525: - goto tr729 - } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto tr711 - } - case _widec >= 33: - goto tr710 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr713 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr715 - } - default: - goto tr714 - } - default: - goto tr712 + goto tr771 + case 58: + goto tr772 + case 73: + goto st569 + case 79: + goto st577 + case 105: + goto st569 + case 111: + goto st577 } - goto st0 - st547: + goto tr274 + st569: if p++; p == pe { - goto _test_eof547 + goto _test_eof569 } - st_case_547: + st_case_569: switch data[p] { case 77: - goto st548 + goto st570 case 109: - goto st548 + goto st570 } - goto tr73 - st548: + goto tr274 + st570: if p++; p == pe { - goto _test_eof548 + goto _test_eof570 } - st_case_548: + st_case_570: switch data[p] { case 69: - goto st549 + goto st571 case 101: - goto st549 + goto st571 } - goto tr73 - st549: + goto tr274 + st571: if p++; p == pe { - goto _test_eof549 + goto _test_eof571 } - st_case_549: + st_case_571: switch data[p] { case 83: - goto st550 + goto st572 case 115: - goto st550 + goto st572 } - goto tr73 - st550: + goto tr274 + st572: if p++; p == pe { - goto _test_eof550 + goto _test_eof572 } - st_case_550: + st_case_572: switch data[p] { case 84: - goto st551 + goto st573 case 116: - goto st551 + goto st573 } - goto tr73 - st551: + goto tr274 + st573: if p++; p == pe { - goto _test_eof551 + goto _test_eof573 } - st_case_551: + st_case_573: switch data[p] { case 65: - goto st552 + goto st574 case 97: - goto st552 + goto st574 } - goto tr73 - st552: + goto tr274 + st574: if p++; p == pe { - goto _test_eof552 + goto _test_eof574 } - st_case_552: + st_case_574: switch data[p] { case 77: - goto st553 + goto st575 case 109: - goto st553 + goto st575 } - goto tr73 - st553: + goto tr274 + st575: if p++; p == pe { - goto _test_eof553 + goto _test_eof575 } - st_case_553: + st_case_575: switch data[p] { case 80: - goto st554 + goto st576 case 112: - goto st554 + goto st576 } - goto tr73 - st554: + goto tr274 + st576: if p++; p == pe { - goto _test_eof554 + goto _test_eof576 } - st_case_554: + st_case_576: switch data[p] { case 9: - goto tr737 + goto tr782 case 32: - goto tr737 + goto tr782 case 58: - goto tr738 + goto tr783 } goto st0 -tr90: -//line msg_parse.rl:55 + st577: + if p++; p == pe { + goto _test_eof577 + } + st_case_577: + switch data[p] { + case 9: + goto tr771 + case 32: + goto tr771 + case 58: + goto tr772 + } + goto st0 +tr259: +//line msg_parse.rl:59 mark = p - goto st555 - st555: + goto st578 + st578: if p++; p == pe { - goto _test_eof555 + goto _test_eof578 } - st_case_555: -//line msg_parse.go:11486 + st_case_578: +//line msg_parse.go:13653 switch data[p] { case 9: - goto tr739 + goto tr784 case 32: - goto tr739 + goto tr784 case 58: - goto tr740 + goto tr785 case 78: - goto st556 + goto st579 case 83: - goto st566 + goto st589 case 110: - goto st556 + goto st579 case 115: - goto st566 + goto st589 } goto st0 - st556: + st579: if p++; p == pe { - goto _test_eof556 + goto _test_eof579 } - st_case_556: + st_case_579: switch data[p] { case 83: - goto st557 + goto st580 case 115: - goto st557 + goto st580 } - goto tr73 - st557: + goto tr274 + st580: if p++; p == pe { - goto _test_eof557 + goto _test_eof580 } - st_case_557: + st_case_580: switch data[p] { case 85: - goto st558 + goto st581 case 117: - goto st558 + goto st581 } - goto tr73 - st558: + goto tr274 + st581: if p++; p == pe { - goto _test_eof558 + goto _test_eof581 } - st_case_558: + st_case_581: switch data[p] { case 80: - goto st559 + goto st582 case 112: - goto st559 + goto st582 } - goto tr73 - st559: + goto tr274 + st582: if p++; p == pe { - goto _test_eof559 + goto _test_eof582 } - st_case_559: + st_case_582: switch data[p] { case 80: - goto st560 + goto st583 case 112: - goto st560 + goto st583 } - goto tr73 - st560: + goto tr274 + st583: if p++; p == pe { - goto _test_eof560 + goto _test_eof583 } - st_case_560: + st_case_583: switch data[p] { case 79: - goto st561 + goto st584 case 111: - goto st561 + goto st584 } - goto tr73 - st561: + goto tr274 + st584: if p++; p == pe { - goto _test_eof561 + goto _test_eof584 } - st_case_561: + st_case_584: switch data[p] { case 82: - goto st562 + goto st585 case 114: - goto st562 + goto st585 } - goto tr73 - st562: + goto tr274 + st585: if p++; p == pe { - goto _test_eof562 + goto _test_eof585 } - st_case_562: + st_case_585: switch data[p] { case 84: - goto st563 + goto st586 case 116: - goto st563 + goto st586 } - goto tr73 - st563: + goto tr274 + st586: if p++; p == pe { - goto _test_eof563 + goto _test_eof586 } - st_case_563: + st_case_586: switch data[p] { case 69: - goto st564 + goto st587 case 101: - goto st564 + goto st587 } - goto tr73 - st564: + goto tr274 + st587: if p++; p == pe { - goto _test_eof564 + goto _test_eof587 } - st_case_564: + st_case_587: switch data[p] { case 68: - goto st565 + goto st588 case 100: - goto st565 + goto st588 } - goto tr73 - st565: + goto tr274 + st588: if p++; p == pe { - goto _test_eof565 + goto _test_eof588 } - st_case_565: + st_case_588: switch data[p] { case 9: - goto tr752 + goto tr797 case 32: - goto tr752 + goto tr797 case 58: - goto tr753 + goto tr798 } goto st0 - st566: + st589: if p++; p == pe { - goto _test_eof566 + goto _test_eof589 } - st_case_566: + st_case_589: switch data[p] { case 69: - goto st567 + goto st590 case 101: - goto st567 + goto st590 } - goto tr73 - st567: + goto tr274 + st590: if p++; p == pe { - goto _test_eof567 + goto _test_eof590 } - st_case_567: + st_case_590: switch data[p] { case 82: - goto st568 + goto st591 case 114: - goto st568 + goto st591 } - goto tr73 - st568: + goto tr274 + st591: if p++; p == pe { - goto _test_eof568 + goto _test_eof591 } - st_case_568: + st_case_591: if data[p] == 45 { - goto st569 + goto st592 } - goto tr73 - st569: + goto tr274 + st592: if p++; p == pe { - goto _test_eof569 + goto _test_eof592 } - st_case_569: + st_case_592: switch data[p] { case 65: - goto st570 + goto st593 case 97: - goto st570 + goto st593 } - goto tr73 - st570: + goto tr274 + st593: if p++; p == pe { - goto _test_eof570 + goto _test_eof593 } - st_case_570: + st_case_593: switch data[p] { case 71: - goto st571 + goto st594 case 103: - goto st571 + goto st594 } - goto tr73 - st571: + goto tr274 + st594: if p++; p == pe { - goto _test_eof571 + goto _test_eof594 } - st_case_571: + st_case_594: switch data[p] { case 69: - goto st572 + goto st595 case 101: - goto st572 + goto st595 } - goto tr73 - st572: + goto tr274 + st595: if p++; p == pe { - goto _test_eof572 + goto _test_eof595 } - st_case_572: + st_case_595: switch data[p] { case 78: - goto st573 + goto st596 case 110: - goto st573 + goto st596 } - goto tr73 - st573: + goto tr274 + st596: if p++; p == pe { - goto _test_eof573 + goto _test_eof596 } - st_case_573: + st_case_596: switch data[p] { case 84: - goto st574 + goto st597 case 116: - goto st574 + goto st597 } - goto tr73 - st574: + goto tr274 + st597: if p++; p == pe { - goto _test_eof574 + goto _test_eof597 } - st_case_574: + st_case_597: switch data[p] { case 9: - goto tr762 + goto tr807 case 32: - goto tr762 + goto tr807 case 58: - goto tr763 + goto tr808 } goto st0 - st575: + st598: if p++; p == pe { - goto _test_eof575 + goto _test_eof598 } - st_case_575: + st_case_598: switch data[p] { case 9: - goto st576 + goto st599 case 32: - goto st576 + goto st599 case 58: - goto st577 + goto st600 case 73: - goto st588 + goto st611 case 105: - goto st588 + goto st611 } goto st0 - st576: + st599: if p++; p == pe { - goto _test_eof576 + goto _test_eof599 } - st_case_576: + st_case_599: switch data[p] { case 9: - goto st576 + goto st599 case 32: - goto st576 + goto st599 case 58: - goto st577 + goto st600 } goto st0 - st577: + st600: if p++; p == pe { - goto _test_eof577 + goto _test_eof600 } - st_case_577: + st_case_600: _widec = int16(data[p]) if 13 <= data[p] && data[p] <= 13 { _widec = 256 + (int16(data[p]) - 0) @@ -11775,53 +13942,65 @@ tr90: } switch _widec { case 9: - goto st577 + goto st600 case 32: - goto st577 + goto st600 case 269: - goto tr773 + goto tr818 case 525: - goto st585 + goto st608 } switch { case _widec < 224: switch { case _widec > 127: if 192 <= _widec && _widec <= 223 { - goto tr768 + goto tr813 } case _widec >= 33: - goto tr767 + goto tr812 } case _widec > 239: switch { case _widec < 248: if 240 <= _widec && _widec <= 247 { - goto tr770 + goto tr815 } case _widec > 251: if 252 <= _widec && _widec <= 253 { - goto tr772 + goto tr817 } default: - goto tr771 + goto tr816 } default: - goto tr769 + goto tr814 } goto st0 -tr767: -//line msg_parse.rl:55 +tr821: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st601 +tr812: +//line msg_parse.rl:59 mark = p - goto st578 - st578: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st601 + st601: if p++; p == pe { - goto _test_eof578 + goto _test_eof601 } - st_case_578: -//line msg_parse.go:11825 + st_case_601: +//line msg_parse.go:14004 _widec = int16(data[p]) if 13 <= data[p] && data[p] <= 13 { _widec = 256 + (int16(data[p]) - 0) @@ -11831,201 +14010,263 @@ tr767: } switch _widec { case 9: - goto st578 + goto st601 + case 32: + goto st601 case 269: - goto tr781 + goto tr827 case 525: - goto tr782 + goto tr828 } switch { case _widec < 224: switch { case _widec > 127: if 192 <= _widec && _widec <= 223 { - goto st579 + goto tr822 } - case _widec >= 32: - goto st578 + case _widec >= 33: + goto tr821 } case _widec > 239: switch { case _widec < 248: if 240 <= _widec && _widec <= 247 { - goto st581 + goto tr824 } case _widec > 251: if 252 <= _widec && _widec <= 253 { - goto st583 + goto tr826 } default: - goto st582 + goto tr825 } default: - goto st580 + goto tr823 } goto st0 -tr768: -//line msg_parse.rl:55 +tr822: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st602 +tr813: +//line msg_parse.rl:59 mark = p - goto st579 - st579: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st602 + st602: if p++; p == pe { - goto _test_eof579 + goto _test_eof602 } - st_case_579: -//line msg_parse.go:11879 + st_case_602: +//line msg_parse.go:14072 if 128 <= data[p] && data[p] <= 191 { - goto st578 + goto tr821 } goto st0 -tr769: -//line msg_parse.rl:55 +tr823: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st603 +tr814: +//line msg_parse.rl:59 mark = p - goto st580 - st580: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st603 + st603: if p++; p == pe { - goto _test_eof580 + goto _test_eof603 } - st_case_580: -//line msg_parse.go:11895 + st_case_603: +//line msg_parse.go:14100 if 128 <= data[p] && data[p] <= 191 { - goto st579 + goto tr822 } goto st0 -tr770: -//line msg_parse.rl:55 +tr824: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st604 +tr815: +//line msg_parse.rl:59 mark = p - goto st581 - st581: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st604 + st604: if p++; p == pe { - goto _test_eof581 + goto _test_eof604 } - st_case_581: -//line msg_parse.go:11911 + st_case_604: +//line msg_parse.go:14128 if 128 <= data[p] && data[p] <= 191 { - goto st580 + goto tr823 } goto st0 -tr771: -//line msg_parse.rl:55 +tr825: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st605 +tr816: +//line msg_parse.rl:59 mark = p - goto st582 - st582: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st605 + st605: if p++; p == pe { - goto _test_eof582 + goto _test_eof605 } - st_case_582: -//line msg_parse.go:11927 + st_case_605: +//line msg_parse.go:14156 if 128 <= data[p] && data[p] <= 191 { - goto st581 + goto tr824 } goto st0 -tr772: -//line msg_parse.rl:55 +tr826: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st606 +tr817: +//line msg_parse.rl:59 mark = p - goto st583 - st583: +//line msg_parse.rl:67 + + buf[amt] = data[p] + amt++ + + goto st606 + st606: if p++; p == pe { - goto _test_eof583 + goto _test_eof606 } - st_case_583: -//line msg_parse.go:11943 + st_case_606: +//line msg_parse.go:14184 if 128 <= data[p] && data[p] <= 191 { - goto st582 + goto tr825 } goto st0 -tr786: -//line msg_parse.rl:55 +tr832: +//line msg_parse.rl:59 mark = p -//line msg_parse.rl:212 +//line msg_parse.rl:226 *viap, err = ParseVia(string(data[mark:p])) if err != nil { return nil, err } for *viap != nil { viap = &(*viap).Next } - goto st584 -tr782: -//line msg_parse.rl:212 + goto st607 +tr828: +//line msg_parse.rl:226 *viap, err = ParseVia(string(data[mark:p])) if err != nil { return nil, err } for *viap != nil { viap = &(*viap).Next } - goto st584 - st584: + goto st607 + st607: if p++; p == pe { - goto _test_eof584 + goto _test_eof607 } - st_case_584: -//line msg_parse.go:11973 + st_case_607: +//line msg_parse.go:14214 if data[p] == 10 { - goto tr783 + goto tr829 } goto st0 -tr783: -//line msg_parse.rl:224 +tr829: +//line msg_parse.rl:238 line++; linep = p; -//line msg_parse.rl:111 +//line msg_parse.rl:129 - {goto st50 } + {goto st145 } - goto st624 - st624: + goto st647 + st647: if p++; p == pe { - goto _test_eof624 + goto _test_eof647 } - st_case_624: -//line msg_parse.go:11991 + st_case_647: +//line msg_parse.go:14232 switch data[p] { case 9: - goto st578 + goto st601 case 32: - goto st578 + goto st601 } goto st0 - st585: + st608: if p++; p == pe { - goto _test_eof585 + goto _test_eof608 } - st_case_585: + st_case_608: if data[p] == 10 { - goto tr784 + goto tr830 } goto st0 -tr784: -//line msg_parse.rl:224 +tr830: +//line msg_parse.rl:238 line++; linep = p; - goto st586 - st586: + goto st609 + st609: if p++; p == pe { - goto _test_eof586 + goto _test_eof609 } - st_case_586: -//line msg_parse.go:12017 + st_case_609: +//line msg_parse.go:14258 switch data[p] { case 9: - goto st587 + goto st610 case 32: - goto st587 + goto st610 } goto st0 - st587: + st610: if p++; p == pe { - goto _test_eof587 + goto _test_eof610 } - st_case_587: + st_case_610: _widec = int16(data[p]) if 13 <= data[p] && data[p] <= 13 { _widec = 256 + (int16(data[p]) - 0) @@ -12035,327 +14276,327 @@ tr784: } switch _widec { case 9: - goto st587 + goto st610 case 32: - goto st587 + goto st610 case 269: - goto tr773 + goto tr818 case 525: - goto tr786 + goto tr832 } switch { case _widec < 224: switch { case _widec > 127: if 192 <= _widec && _widec <= 223 { - goto tr768 + goto tr813 } case _widec >= 33: - goto tr767 + goto tr812 } case _widec > 239: switch { case _widec < 248: if 240 <= _widec && _widec <= 247 { - goto tr770 + goto tr815 } case _widec > 251: if 252 <= _widec && _widec <= 253 { - goto tr772 + goto tr817 } default: - goto tr771 + goto tr816 } default: - goto tr769 + goto tr814 } goto st0 - st588: + st611: if p++; p == pe { - goto _test_eof588 + goto _test_eof611 } - st_case_588: + st_case_611: switch data[p] { case 65: - goto st576 + goto st599 case 97: - goto st576 + goto st599 } - goto st0 -tr92: -//line msg_parse.rl:55 + goto tr463 +tr261: +//line msg_parse.rl:59 mark = p - goto st589 - st589: + goto st612 + st612: if p++; p == pe { - goto _test_eof589 + goto _test_eof612 } - st_case_589: -//line msg_parse.go:12097 + st_case_612: +//line msg_parse.go:14338 switch data[p] { case 65: - goto st590 + goto st613 case 87: - goto st596 + goto st619 case 97: - goto st590 + goto st613 case 119: - goto st596 + goto st619 } - goto tr73 - st590: + goto tr274 + st613: if p++; p == pe { - goto _test_eof590 + goto _test_eof613 } - st_case_590: + st_case_613: switch data[p] { case 82: - goto st591 + goto st614 case 114: - goto st591 + goto st614 } - goto tr73 - st591: + goto tr274 + st614: if p++; p == pe { - goto _test_eof591 + goto _test_eof614 } - st_case_591: + st_case_614: switch data[p] { case 78: - goto st592 + goto st615 case 110: - goto st592 + goto st615 } - goto tr73 - st592: + goto tr274 + st615: if p++; p == pe { - goto _test_eof592 + goto _test_eof615 } - st_case_592: + st_case_615: switch data[p] { case 73: - goto st593 + goto st616 case 105: - goto st593 + goto st616 } - goto tr73 - st593: + goto tr274 + st616: if p++; p == pe { - goto _test_eof593 + goto _test_eof616 } - st_case_593: + st_case_616: switch data[p] { case 78: - goto st594 + goto st617 case 110: - goto st594 + goto st617 } - goto tr73 - st594: + goto tr274 + st617: if p++; p == pe { - goto _test_eof594 + goto _test_eof617 } - st_case_594: + st_case_617: switch data[p] { case 71: - goto st595 + goto st618 case 103: - goto st595 + goto st618 } - goto tr73 - st595: + goto tr274 + st618: if p++; p == pe { - goto _test_eof595 + goto _test_eof618 } - st_case_595: + st_case_618: switch data[p] { case 9: - goto tr794 + goto tr840 case 32: - goto tr794 + goto tr840 case 58: - goto tr795 + goto tr841 } goto st0 - st596: + st619: if p++; p == pe { - goto _test_eof596 + goto _test_eof619 } - st_case_596: + st_case_619: switch data[p] { case 87: - goto st597 + goto st620 case 119: - goto st597 + goto st620 } - goto tr73 - st597: + goto tr274 + st620: if p++; p == pe { - goto _test_eof597 + goto _test_eof620 } - st_case_597: + st_case_620: if data[p] == 45 { - goto st598 + goto st621 } - goto tr73 - st598: + goto tr274 + st621: if p++; p == pe { - goto _test_eof598 + goto _test_eof621 } - st_case_598: + st_case_621: switch data[p] { case 65: - goto st599 + goto st622 case 97: - goto st599 + goto st622 } - goto tr73 - st599: + goto tr274 + st622: if p++; p == pe { - goto _test_eof599 + goto _test_eof622 } - st_case_599: + st_case_622: switch data[p] { case 85: - goto st600 + goto st623 case 117: - goto st600 + goto st623 } - goto tr73 - st600: + goto tr274 + st623: if p++; p == pe { - goto _test_eof600 + goto _test_eof623 } - st_case_600: + st_case_623: switch data[p] { case 84: - goto st601 + goto st624 case 116: - goto st601 + goto st624 } - goto tr73 - st601: + goto tr274 + st624: if p++; p == pe { - goto _test_eof601 + goto _test_eof624 } - st_case_601: + st_case_624: switch data[p] { case 72: - goto st602 + goto st625 case 104: - goto st602 + goto st625 } - goto tr73 - st602: + goto tr274 + st625: if p++; p == pe { - goto _test_eof602 + goto _test_eof625 } - st_case_602: + st_case_625: switch data[p] { case 69: - goto st603 + goto st626 case 101: - goto st603 + goto st626 } - goto tr73 - st603: + goto tr274 + st626: if p++; p == pe { - goto _test_eof603 + goto _test_eof626 } - st_case_603: + st_case_626: switch data[p] { case 78: - goto st604 + goto st627 case 110: - goto st604 + goto st627 } - goto tr73 - st604: + goto tr274 + st627: if p++; p == pe { - goto _test_eof604 + goto _test_eof627 } - st_case_604: + st_case_627: switch data[p] { case 84: - goto st605 + goto st628 case 116: - goto st605 + goto st628 } - goto tr73 - st605: + goto tr274 + st628: if p++; p == pe { - goto _test_eof605 + goto _test_eof628 } - st_case_605: + st_case_628: switch data[p] { case 73: - goto st606 + goto st629 case 105: - goto st606 + goto st629 } - goto tr73 - st606: + goto tr274 + st629: if p++; p == pe { - goto _test_eof606 + goto _test_eof629 } - st_case_606: + st_case_629: switch data[p] { case 67: - goto st607 + goto st630 case 99: - goto st607 + goto st630 } - goto tr73 - st607: + goto tr274 + st630: if p++; p == pe { - goto _test_eof607 + goto _test_eof630 } - st_case_607: + st_case_630: switch data[p] { case 65: - goto st608 + goto st631 case 97: - goto st608 + goto st631 } - goto tr73 - st608: + goto tr274 + st631: if p++; p == pe { - goto _test_eof608 + goto _test_eof631 } - st_case_608: + st_case_631: switch data[p] { case 84: - goto st609 + goto st632 case 116: - goto st609 + goto st632 } - goto tr73 - st609: + goto tr274 + st632: if p++; p == pe { - goto _test_eof609 + goto _test_eof632 } - st_case_609: + st_case_632: switch data[p] { case 69: - goto st610 + goto st633 case 101: - goto st610 + goto st633 } - goto tr73 - st610: + goto tr274 + st633: if p++; p == pe { - goto _test_eof610 + goto _test_eof633 } - st_case_610: + st_case_633: switch data[p] { case 9: - goto tr810 + goto tr856 case 32: - goto tr810 + goto tr856 case 58: - goto tr811 + goto tr857 } goto st0 st_out: @@ -12371,7 +14612,7 @@ tr92: _test_eof11: cs = 11; goto _test_eof _test_eof12: cs = 12; goto _test_eof _test_eof13: cs = 13; goto _test_eof - _test_eof611: cs = 611; goto _test_eof + _test_eof634: cs = 634; goto _test_eof _test_eof14: cs = 14; goto _test_eof _test_eof15: cs = 15; goto _test_eof _test_eof16: cs = 16; goto _test_eof @@ -12400,20 +14641,16 @@ tr92: _test_eof39: cs = 39; goto _test_eof _test_eof40: cs = 40; goto _test_eof _test_eof41: cs = 41; goto _test_eof - _test_eof612: cs = 612; goto _test_eof _test_eof42: cs = 42; goto _test_eof - _test_eof613: cs = 613; goto _test_eof _test_eof43: cs = 43; goto _test_eof _test_eof44: cs = 44; goto _test_eof _test_eof45: cs = 45; goto _test_eof _test_eof46: cs = 46; goto _test_eof - _test_eof614: cs = 614; goto _test_eof _test_eof47: cs = 47; goto _test_eof _test_eof48: cs = 48; goto _test_eof _test_eof49: cs = 49; goto _test_eof _test_eof50: cs = 50; goto _test_eof _test_eof51: cs = 51; goto _test_eof - _test_eof615: cs = 615; goto _test_eof _test_eof52: cs = 52; goto _test_eof _test_eof53: cs = 53; goto _test_eof _test_eof54: cs = 54; goto _test_eof @@ -12425,12 +14662,15 @@ tr92: _test_eof60: cs = 60; goto _test_eof _test_eof61: cs = 61; goto _test_eof _test_eof62: cs = 62; goto _test_eof + _test_eof635: cs = 635; goto _test_eof _test_eof63: cs = 63; goto _test_eof + _test_eof636: cs = 636; goto _test_eof _test_eof64: cs = 64; goto _test_eof _test_eof65: cs = 65; goto _test_eof _test_eof66: cs = 66; goto _test_eof _test_eof67: cs = 67; goto _test_eof _test_eof68: cs = 68; goto _test_eof + _test_eof637: cs = 637; goto _test_eof _test_eof69: cs = 69; goto _test_eof _test_eof70: cs = 70; goto _test_eof _test_eof71: cs = 71; goto _test_eof @@ -12450,6 +14690,7 @@ tr92: _test_eof85: cs = 85; goto _test_eof _test_eof86: cs = 86; goto _test_eof _test_eof87: cs = 87; goto _test_eof + _test_eof638: cs = 638; goto _test_eof _test_eof88: cs = 88; goto _test_eof _test_eof89: cs = 89; goto _test_eof _test_eof90: cs = 90; goto _test_eof @@ -12469,11 +14710,14 @@ tr92: _test_eof104: cs = 104; goto _test_eof _test_eof105: cs = 105; goto _test_eof _test_eof106: cs = 106; goto _test_eof + _test_eof639: cs = 639; goto _test_eof _test_eof107: cs = 107; goto _test_eof + _test_eof640: cs = 640; goto _test_eof _test_eof108: cs = 108; goto _test_eof _test_eof109: cs = 109; goto _test_eof _test_eof110: cs = 110; goto _test_eof _test_eof111: cs = 111; goto _test_eof + _test_eof641: cs = 641; goto _test_eof _test_eof112: cs = 112; goto _test_eof _test_eof113: cs = 113; goto _test_eof _test_eof114: cs = 114; goto _test_eof @@ -12499,17 +14743,20 @@ tr92: _test_eof134: cs = 134; goto _test_eof _test_eof135: cs = 135; goto _test_eof _test_eof136: cs = 136; goto _test_eof + _test_eof642: cs = 642; goto _test_eof _test_eof137: cs = 137; goto _test_eof + _test_eof643: cs = 643; goto _test_eof _test_eof138: cs = 138; goto _test_eof _test_eof139: cs = 139; goto _test_eof _test_eof140: cs = 140; goto _test_eof _test_eof141: cs = 141; goto _test_eof + _test_eof644: cs = 644; goto _test_eof _test_eof142: cs = 142; goto _test_eof _test_eof143: cs = 143; goto _test_eof _test_eof144: cs = 144; goto _test_eof - _test_eof616: cs = 616; goto _test_eof _test_eof145: cs = 145; goto _test_eof _test_eof146: cs = 146; goto _test_eof + _test_eof645: cs = 645; goto _test_eof _test_eof147: cs = 147; goto _test_eof _test_eof148: cs = 148; goto _test_eof _test_eof149: cs = 149; goto _test_eof @@ -12541,7 +14788,6 @@ tr92: _test_eof175: cs = 175; goto _test_eof _test_eof176: cs = 176; goto _test_eof _test_eof177: cs = 177; goto _test_eof - _test_eof617: cs = 617; goto _test_eof _test_eof178: cs = 178; goto _test_eof _test_eof179: cs = 179; goto _test_eof _test_eof180: cs = 180; goto _test_eof @@ -12604,6 +14850,7 @@ tr92: _test_eof237: cs = 237; goto _test_eof _test_eof238: cs = 238; goto _test_eof _test_eof239: cs = 239; goto _test_eof + _test_eof646: cs = 646; goto _test_eof _test_eof240: cs = 240; goto _test_eof _test_eof241: cs = 241; goto _test_eof _test_eof242: cs = 242; goto _test_eof @@ -12641,7 +14888,6 @@ tr92: _test_eof274: cs = 274; goto _test_eof _test_eof275: cs = 275; goto _test_eof _test_eof276: cs = 276; goto _test_eof - _test_eof618: cs = 618; goto _test_eof _test_eof277: cs = 277; goto _test_eof _test_eof278: cs = 278; goto _test_eof _test_eof279: cs = 279; goto _test_eof @@ -12746,7 +14992,6 @@ tr92: _test_eof378: cs = 378; goto _test_eof _test_eof379: cs = 379; goto _test_eof _test_eof380: cs = 380; goto _test_eof - _test_eof619: cs = 619; goto _test_eof _test_eof381: cs = 381; goto _test_eof _test_eof382: cs = 382; goto _test_eof _test_eof383: cs = 383; goto _test_eof @@ -12809,7 +15054,6 @@ tr92: _test_eof440: cs = 440; goto _test_eof _test_eof441: cs = 441; goto _test_eof _test_eof442: cs = 442; goto _test_eof - _test_eof620: cs = 620; goto _test_eof _test_eof443: cs = 443; goto _test_eof _test_eof444: cs = 444; goto _test_eof _test_eof445: cs = 445; goto _test_eof @@ -12845,7 +15089,6 @@ tr92: _test_eof475: cs = 475; goto _test_eof _test_eof476: cs = 476; goto _test_eof _test_eof477: cs = 477; goto _test_eof - _test_eof621: cs = 621; goto _test_eof _test_eof478: cs = 478; goto _test_eof _test_eof479: cs = 479; goto _test_eof _test_eof480: cs = 480; goto _test_eof @@ -12881,7 +15124,6 @@ tr92: _test_eof510: cs = 510; goto _test_eof _test_eof511: cs = 511; goto _test_eof _test_eof512: cs = 512; goto _test_eof - _test_eof622: cs = 622; goto _test_eof _test_eof513: cs = 513; goto _test_eof _test_eof514: cs = 514; goto _test_eof _test_eof515: cs = 515; goto _test_eof @@ -12913,7 +15155,6 @@ tr92: _test_eof541: cs = 541; goto _test_eof _test_eof542: cs = 542; goto _test_eof _test_eof543: cs = 543; goto _test_eof - _test_eof623: cs = 623; goto _test_eof _test_eof544: cs = 544; goto _test_eof _test_eof545: cs = 545; goto _test_eof _test_eof546: cs = 546; goto _test_eof @@ -12955,7 +15196,6 @@ tr92: _test_eof582: cs = 582; goto _test_eof _test_eof583: cs = 583; goto _test_eof _test_eof584: cs = 584; goto _test_eof - _test_eof624: cs = 624; goto _test_eof _test_eof585: cs = 585; goto _test_eof _test_eof586: cs = 586; goto _test_eof _test_eof587: cs = 587; goto _test_eof @@ -12979,29 +15219,72 @@ tr92: _test_eof605: cs = 605; goto _test_eof _test_eof606: cs = 606; goto _test_eof _test_eof607: cs = 607; goto _test_eof + _test_eof647: cs = 647; goto _test_eof _test_eof608: cs = 608; goto _test_eof _test_eof609: cs = 609; goto _test_eof _test_eof610: cs = 610; goto _test_eof + _test_eof611: cs = 611; goto _test_eof + _test_eof612: cs = 612; goto _test_eof + _test_eof613: cs = 613; goto _test_eof + _test_eof614: cs = 614; goto _test_eof + _test_eof615: cs = 615; goto _test_eof + _test_eof616: cs = 616; goto _test_eof + _test_eof617: cs = 617; goto _test_eof + _test_eof618: cs = 618; goto _test_eof + _test_eof619: cs = 619; goto _test_eof + _test_eof620: cs = 620; goto _test_eof + _test_eof621: cs = 621; goto _test_eof + _test_eof622: cs = 622; goto _test_eof + _test_eof623: cs = 623; goto _test_eof + _test_eof624: cs = 624; goto _test_eof + _test_eof625: cs = 625; goto _test_eof + _test_eof626: cs = 626; goto _test_eof + _test_eof627: cs = 627; goto _test_eof + _test_eof628: cs = 628; goto _test_eof + _test_eof629: cs = 629; goto _test_eof + _test_eof630: cs = 630; goto _test_eof + _test_eof631: cs = 631; goto _test_eof + _test_eof632: cs = 632; goto _test_eof + _test_eof633: cs = 633; goto _test_eof _test_eof: {} if p == eof { switch cs { - case 50, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 127, 128, 129, 130, 131, 134, 148, 149, 150, 151, 152, 161, 162, 164, 165, 166, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, 208, 209, 210, 238, 239, 240, 243, 244, 245, 246, 247, 248, 249, 250, 252, 253, 254, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 300, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 354, 384, 385, 386, 387, 388, 389, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 407, 408, 409, 410, 411, 412, 413, 414, 416, 417, 418, 419, 420, 421, 424, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 481, 482, 483, 484, 485, 487, 488, 489, 490, 492, 493, 494, 495, 496, 497, 498, 499, 517, 518, 519, 520, 522, 523, 524, 525, 526, 528, 529, 530, 531, 532, 533, 534, 547, 548, 549, 550, 551, 552, 553, 556, 557, 558, 559, 560, 561, 562, 563, 564, 566, 567, 568, 569, 570, 571, 572, 573, 589, 590, 591, 592, 593, 594, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609: -//line msg_parse.rl:136 + case 153, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 182, 183, 184, 185, 186, 187, 188, 189, 191, 192, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 219, 220, 221, 222, 223, 224, 225, 226, 256, 257, 262, 263, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 285, 286, 287, 288, 289, 290, 291, 294, 295, 296, 297, 298, 299, 327, 328, 329, 332, 333, 334, 335, 336, 337, 338, 339, 341, 342, 343, 357, 358, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 396, 397, 398, 399, 400, 401, 402, 403, 404, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 451, 452, 453, 454, 455, 456, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 474, 475, 476, 477, 478, 479, 480, 481, 483, 484, 485, 486, 487, 488, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 502, 503, 504, 505, 506, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 526, 527, 528, 529, 530, 532, 533, 534, 535, 537, 538, 539, 540, 541, 542, 543, 544, 546, 547, 548, 551, 552, 553, 554, 556, 557, 558, 559, 560, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 579, 580, 581, 582, 583, 584, 585, 586, 587, 589, 590, 591, 592, 593, 594, 595, 596, 612, 613, 614, 615, 616, 617, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632: +//line msg_parse.rl:138 + + p-- + + {goto st138 } + + case 301, 302, 303, 304, 311, 312, 313, 314, 315, 331, 345, 346, 347, 348, 349, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 406, 407, 408, 409, 410, 411, 412, 413, 611: +//line msg_parse.rl:144 + + p-- + + {goto st138 } + + case 145, 229, 243, 244, 245, 246, 247, 259, 260, 261, 270, 271, 272, 273, 293, 378, 395: +//line msg_parse.rl:144 + + p-- + + {goto st138 } + +//line msg_parse.rl:138 - dest = nil; p-- - {goto st43 } + {goto st138 } -//line msg_parse.go:12998 +//line msg_parse.go:15281 } } _out: {} } -//line msg_parse.rl:354 +//line msg_parse.rl:387 if cs < msg_first_final { diff --git a/sip/msg_parse.rl b/sip/msg_parse.rl index ae02223..0912a31 100644 --- a/sip/msg_parse.rl +++ b/sip/msg_parse.rl @@ -3,10 +3,10 @@ package sip import ( - "bytes" "errors" "fmt" "github.com/jart/gosip/sdp" + "strings" ) %% machine msg; @@ -26,16 +26,18 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { return nil, nil } msg = new(Msg) + fromp := &msg.From + top := &msg.To viap := &msg.Via routep := &msg.Route rroutep := &msg.RecordRoute contactp := &msg.Contact + paidp := &msg.PAssertedIdentity + rpidp := &msg.RemotePartyID cs := 0 p := 0 pe := len(data) eof := len(data) - //stack := make([]int, 2) - //top := 0 line := 1 linep := 0 buf := make([]byte, len(data)) @@ -43,9 +45,11 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { mark := 0 clen := 0 ctype := "" - var b1 string + var name string var hex byte - var dest *string + var value *string + var addr *Addr + var addrpp ***Addr %%{ action break { @@ -65,6 +69,15 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { amt++ } + action space { + buf[amt] = ' ' + amt++ + } + + action erase { + amt-- + } + action collapse { amt = appendCollapse(buf, amt, fc) } @@ -108,45 +121,78 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { msg.Phrase = string(buf[0:amt]) } - action header { - fgoto header; + action goto_avalue { + fhold; + fgoto avalue; } - action hname { - b1 = string(bytes.ToLower(data[mark:p])) + action goto_header { + fgoto header; } - action svalue { + action goto_svalue { fhold; fgoto svalue; } - action svalueDone {{ + action goto_xheader { + fhold; + fgoto xheader; + } + + # Shorthand notation. + action gxh { + fhold; + fgoto xheader; + } + + action store_name { + name = string(data[mark:p]) + } + + action store_value {{ b := data[mark:p - 1] - if dest != nil { - *dest = string(b) + if value != nil { + *value = string(b) } else { if msg.Headers == nil { msg.Headers = Headers{} } - msg.Headers[b1] = string(b) + msg.Headers[name] = string(b) } }} - action xheader { - dest = nil; - fhold; - fgoto xheader; + action store_addr { + // TODO(jart): Why does this fire multiple times? + if addr != nil { + **addrpp = addr + *addrpp = &addr.Next + addr = nil + } } - action CallID { - msg.CallID = string(data[mark:p]) + action new_addr { + addr = new(Addr) + } + + action addr_display { + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") } - action Contact { - *contactp, err = ParseAddr(string(data[mark:p])) + action addr_uri { + addr.Uri, err = ParseURIBytes(data[mark:p]) if err != nil { return nil, err } - for *contactp != nil { contactp = &(*contactp).Next } + } + + action addr_param { + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + } + + action CallID { + msg.CallID = string(data[mark:p]) } action ContentLength { @@ -169,11 +215,6 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { msg.Expires = msg.Expires * 10 + (int(fc) - 0x30) } - action From { - msg.From, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - } - action MaxForwards { msg.MaxForwards = msg.MaxForwards * 10 + (int(fc) - 0x30) } @@ -182,33 +223,6 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { msg.MinExpires = msg.MinExpires * 10 + (int(fc) - 0x30) } - action PAssertedIdentity { - msg.PAssertedIdentity, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - } - - action RecordRoute { - *rroutep, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - for *rroutep != nil { rroutep = &(*rroutep).Next } - } - - action RemotePartyID { - msg.RemotePartyID, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - } - - action Route { - *routep, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - for *routep != nil { routep = &(*routep).Next } - } - - action To { - msg.To, err = ParseAddr(string(data[mark:p])) - if err != nil { return nil, err } - } - action Via { *viap, err = ParseVia(string(data[mark:p])) if err != nil { return nil, err } @@ -226,13 +240,13 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { WSP = SP | HTAB; LWS = ( WSP* ( CR when lookAheadWSP ) LF )? WSP+; SWS = LWS?; - UTF8_CONT = 0x80..0xBF; - UTF8_NONASCII = 0xC0..0xDF UTF8_CONT {1} - | 0xE0..0xEF UTF8_CONT {2} - | 0xF0..0xF7 UTF8_CONT {3} - | 0xF8..0xFb UTF8_CONT {4} - | 0xFC..0xFD UTF8_CONT {5}; - UTF8 = 0x21..0x7F | UTF8_NONASCII; + UTF8_CONT = 0x80..0xBF @append; + UTF8_NONASCII = 0xC0..0xDF @append UTF8_CONT {1} + | 0xE0..0xEF @append UTF8_CONT {2} + | 0xF0..0xF7 @append UTF8_CONT {3} + | 0xF8..0xFb @append UTF8_CONT {4} + | 0xFC..0xFD @append UTF8_CONT {5}; + UTF8 = 0x21..0x7F @append | UTF8_NONASCII; UTF8_TRIM = ( UTF8+ (LWS* UTF8)* ) >start @collapse; # https://tools.ietf.org/html/rfc3261#section-25.1 @@ -247,6 +261,7 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { wordc = alpha | digit | "-" | "." | "!" | "%" | "*" | "_" | "+" | "`" | "'" | "~" | "(" | ")" | "<" | ">" | ":" | "\\" | "\"" | "/" | "[" | "]" | "?" | "{" | "}" ; + schmchars = alpha | digit | "+" | "-" | "." ; word = wordc+ ; STAR = SWS "*" SWS ; SLASH = SWS "/" SWS ; @@ -261,92 +276,113 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { HCOLON = WSP* ":" SWS ; LDQUOT = SWS "\"" ; RDQUOT = "\"" SWS ; - ctext = 0x21..0x27 | 0x2A..0x5B | 0x5D..0x7E | UTF8_NONASCII | LWS ; - quoted_pair = "\\" ( 0x00..0x09 | 0x0B..0x0C | 0x0E..0x7F ) ; - comment = LPAREN ( ctext | quoted_pair )* <: RPAREN ; # TODO(jart): Nested parens - qdtext = LWS | 0x21 | 0x23..0x5B | 0x5D..0x7E | UTF8_NONASCII ; - quoted_string = SWS "\"" ( qdtext | quoted_pair )* <: "\"" ; + ctext = 0x21..0x27 | 0x2A..0x5B | 0x5D..0x7E | UTF8_NONASCII | LWS; + quoted_pair = "\\" ( 0x00..0x09 | 0x0B..0x0C | 0x0E..0x7F ) @append; + comment = LPAREN ( ctext | quoted_pair )* <: RPAREN; # TODO(jart): Nested parens. + qdtext = UTF8_NONASCII | LWS @append | ( 0x21 | 0x23..0x5B | 0x5D..0x7E ) @append; escaped = "%" ( xdigit @hexHi ) ( xdigit @hexLo ) ; - uric = reserved | unreserved | escaped ; + uric = reserved | unreserved | "%" ; uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," ; - token = tokenc+ >mark ; - reasonc = reserved | unreserved | UTF8_NONASCII | SP | HTAB ; - reasonmc = escaped | ( reasonc @append ) ; - cid = word ( "@" word )? ; - - Method = token %Method; + uri = alpha schmchars* ":" uric+; + token = tokenc+; + tokenhost = ( tokenc | "[" | "]" | ":" )+; + reasonc = UTF8_NONASCII | ( reserved | unreserved | SP | HTAB ) @append; + reasonmc = escaped | reasonc; + cid = word ( "@" word )?; + + quoted_content = ( qdtext | quoted_pair )* >start; + quoted_string = LDQUOT quoted_content <: RDQUOT; + param_name = token >mark %store_name; + param_content = tokenhost >start @append; + param_value = param_content | quoted_string; + param = ( param_name ( EQUAL param_value )? ) %addr_param; + display = ( token @append LWS %space )* >start; + display_name = ( display | quoted_string ) %addr_display; + addr_spec = uri >mark %addr_uri; + name_addr = display_name? LAQUOT addr_spec RAQUOT; + addr_omg = ( ( addr_spec -- ";" ) | name_addr ) ( SEMI param )*; + addr = addr_omg >new_addr %store_addr; + + Method = token >mark %Method; SIPVersionNo = digit+ @VersionMajor "." digit+ @VersionMinor; RequestURI = ^SP+ >mark %RequestURI; StatusCode = ( digit @StatusCode ) {3}; ReasonPhrase = reasonmc+ >start %ReasonPhrase; hval = ( UTF8 | LWS )* >mark; - cheader = ("Call-ID"i | "i"i) HCOLON cid >mark %CallID - | ("Contact"i | "m"i) HCOLON <: hval %Contact - | ("Content-Length"i | "l"i) HCOLON digit+ >{clen=0} @ContentLength - | ("Content-Type"i | "c"i) HCOLON <: hval %ContentType - | "CSeq"i HCOLON (digit+ @CSeq) LWS token %CSeqMethod - | ("Expires"i | "l"i) HCOLON digit+ >{msg.Expires=0} @Expires - | ("From"i | "f"i) HCOLON <: hval %From - | ("Max-Forwards"i | "l"i) HCOLON digit+ >{msg.MaxForwards=0} @MaxForwards - | ("Min-Expires"i | "l"i) HCOLON digit+ >{msg.MinExpires=0} @MinExpires - | "P-Asserted-Identity"i HCOLON <: hval %PAssertedIdentity - | "Record-Route"i HCOLON <: hval %RecordRoute - | "Remote-Party-ID"i HCOLON <: hval %RemotePartyID - | "Route"i HCOLON <: hval %Route - | ("To"i | "t"i) HCOLON <: hval %To - | ("Via"i | "v"i) HCOLON <: hval %Via + # Address Headers + aname = ("Contact"i | "m"i) %{addrpp=&contactp} + | ("From"i | "f"i) %{addrpp=&fromp} + | "P-Asserted-Identity"i %{addrpp=&paidp} + | "Record-Route"i %{addrpp=&rroutep} + | "Remote-Party-ID"i %{addrpp=&rpidp} + | "Route"i %{addrpp=&routep} + | ("To"i | "t"i) %{addrpp=&top} + ; + + # String Headers + sname = "Accept"i %{value=&msg.Accept} + | ("Accept-Contact"i | "a"i) %{value=&msg.AcceptContact} + | "Accept-Encoding"i %{value=&msg.AcceptEncoding} + | "Accept-Language"i %{value=&msg.AcceptLanguage} + | ("Allow"i | "u"i) %{value=&msg.Allow} + | ("Allow-Events"i | "u"i) %{value=&msg.AllowEvents} + | "Alert-Info"i %{value=&msg.AlertInfo} + | "Authentication-Info"i %{value=&msg.AuthenticationInfo} + | "Authorization"i %{value=&msg.Authorization} + | "Content-Disposition"i %{value=&msg.ContentDisposition} + | "Content-Language"i %{value=&msg.ContentLanguage} + | ("Content-Encoding"i | "e"i) %{value=&msg.ContentEncoding} + | "Call-Info"i %{value=&msg.CallInfo} + | "Date"i %{value=&msg.Date} + | "Error-Info"i %{value=&msg.ErrorInfo} + | ("Event"i | "o"i) %{value=&msg.Event} + | "In-Reply-To"i %{value=&msg.InReplyTo} + | "Reply-To"i %{value=&msg.ReplyTo} + | "MIME-Version"i %{value=&msg.MIMEVersion} + | "Organization"i %{value=&msg.Organization} + | "Priority"i %{value=&msg.Priority} + | "Proxy-Authenticate"i %{value=&msg.ProxyAuthenticate} + | "Proxy-Authorization"i %{value=&msg.ProxyAuthorization} + | "Proxy-Require"i %{value=&msg.ProxyRequire} + | ("Refer-To"i | "r"i) %{value=&msg.ReferTo} + | ("Referred-By"i | "b"i) %{value=&msg.ReferredBy} + | "Require"i %{value=&msg.Require} + | "Retry-After"i %{value=&msg.RetryAfter} + | "Server"i %{value=&msg.Server} + | ("Subject"i | "s"i) %{value=&msg.Subject} + | ("Supported"i | "k"i) %{value=&msg.Supported} + | "Timestamp"i %{value=&msg.Timestamp} + | "Unsupported"i %{value=&msg.Unsupported} + | "User-Agent"i %{value=&msg.UserAgent} + | "Warning"i %{value=&msg.Warning} + | "WWW-Authenticate"i %{value=&msg.WWWAuthenticate} ; - sname = "Accept"i %{dest=&msg.Accept} - | ("Accept-Contact"i | "a"i) %{dest=&msg.AcceptContact} - | "Accept-Encoding"i %{dest=&msg.AcceptEncoding} - | "Accept-Language"i %{dest=&msg.AcceptLanguage} - | ("Allow"i | "u"i) %{dest=&msg.Allow} - | ("Allow-Events"i | "u"i) %{dest=&msg.AllowEvents} - | "Alert-Info"i %{dest=&msg.AlertInfo} - | "Authentication-Info"i %{dest=&msg.AuthenticationInfo} - | "Authorization"i %{dest=&msg.Authorization} - | "Content-Disposition"i %{dest=&msg.ContentDisposition} - | "Content-Language"i %{dest=&msg.ContentLanguage} - | ("Content-Encoding"i | "e"i) %{dest=&msg.ContentEncoding} - | "Call-Info"i %{dest=&msg.CallInfo} - | "Date"i %{dest=&msg.Date} - | "Error-Info"i %{dest=&msg.ErrorInfo} - | ("Event"i | "o"i) %{dest=&msg.Event} - | "In-Reply-To"i %{dest=&msg.InReplyTo} - | "Reply-To"i %{dest=&msg.ReplyTo} - | "MIME-Version"i %{dest=&msg.MIMEVersion} - | "Organization"i %{dest=&msg.Organization} - | "Priority"i %{dest=&msg.Priority} - | "Proxy-Authenticate"i %{dest=&msg.ProxyAuthenticate} - | "Proxy-Authorization"i %{dest=&msg.ProxyAuthorization} - | "Proxy-Require"i %{dest=&msg.ProxyRequire} - | ("Refer-To"i | "r"i) %{dest=&msg.ReferTo} - | ("Referred-By"i | "b"i) %{dest=&msg.ReferredBy} - | "Require"i %{dest=&msg.Require} - | "Retry-After"i %{dest=&msg.RetryAfter} - | "Server"i %{dest=&msg.Server} - | ("Subject"i | "s"i) %{dest=&msg.Subject} - | ("Supported"i | "k"i) %{dest=&msg.Supported} - | "Timestamp"i %{dest=&msg.Timestamp} - | "Unsupported"i %{dest=&msg.Unsupported} - | "User-Agent"i %{dest=&msg.UserAgent} - | "Warning"i %{dest=&msg.Warning} - | "WWW-Authenticate"i %{dest=&msg.WWWAuthenticate} + # Custom Headers + cheader = ("Call-ID"i | "i"i) @!gxh HCOLON cid >mark %CallID + | ("Content-Length"i | "l"i) @!gxh HCOLON digit+ >{clen=0} @ContentLength + | ("Content-Type"i | "c"i) @!gxh HCOLON <: hval %ContentType + | "CSeq"i @!gxh HCOLON (digit+ @CSeq) LWS token >mark %CSeqMethod + | ("Expires"i | "l"i) @!gxh HCOLON digit+ >{msg.Expires=0} @Expires + | ("Max-Forwards"i | "l"i) @!gxh HCOLON digit+ >{msg.MaxForwards=0} @MaxForwards + | ("Min-Expires"i | "l"i) @!gxh HCOLON digit+ >{msg.MinExpires=0} @MinExpires + | ("Via"i | "v"i) @!gxh HCOLON <: hval %Via ; - svalue := hval CR LF @svalueDone @header; - xheader := token %hname HCOLON <: any @svalue; + avalue := addr ( COMMA addr )* CR LF @goto_header; + svalue := hval CR LF @store_value @goto_header; + xheader := token >mark %store_name HCOLON <: any @{value=nil} @goto_svalue; header := CR LF @break - | cheader CR LF @header - | sname >mark @err(xheader) HCOLON <: any @svalue + | cheader CR LF @goto_header + | aname >mark @err(goto_xheader) HCOLON <: any @goto_avalue + | sname >mark @err(goto_xheader) HCOLON <: any @goto_svalue ; SIPVersion = "SIP/" SIPVersionNo; - Request = Method SP RequestURI SP SIPVersion CR LF @header; - Response = SIPVersion SP StatusCode SP ReasonPhrase CR LF @header; + Request = Method SP RequestURI SP SIPVersion CR LF @goto_header; + Response = SIPVersion SP StatusCode SP ReasonPhrase CR LF @goto_header; main := Request | Response; write init; diff --git a/sip/msg_test.go b/sip/msg_test.go index 7122031..bbc8622 100755 --- a/sip/msg_test.go +++ b/sip/msg_test.go @@ -15,6 +15,17 @@ type msgTest struct { var msgTests = []msgTest{ + msgTest{ + name: "UTF8 Phrase", + s: "SIP/2.0 200 ◕◡◕\r\n" + + "\r\n", + msg: sip.Msg{ + VersionMajor: 2, + Status: 200, + Phrase: "◕◡◕", + }, + }, + msgTest{ name: "Left Padding", s: "SIP/2.0 200 OK\r\n" + @@ -38,7 +49,180 @@ var msgTests = []msgTest{ Status: 200, Phrase: "OK", Headers: sip.Headers{ - "x-lol": "omfg", + "X-LOL": "omfg", + }, + }, + }, + + msgTest{ + name: "Multiple Addresses", + s: "SIP/2.0 200 OK\r\n" + + "From: , \r\n" + + "\r\n", + msg: sip.Msg{ + VersionMajor: 2, + Status: 200, + Phrase: "OK", + From: &sip.Addr{ + Uri: &sip.URI{ + Scheme: "sip", + Host: "lol.com", + }, + Next: &sip.Addr{ + Uri: &sip.URI{ + Scheme: "sip", + Host: "bog.com", + }, + }, + }, + }, + }, + + msgTest{ + name: "Line Continuations", + s: "SIP/2.0 200 OK\r\n" + + "From:\r\n" + + " ,\r\n" + + " \r\n" + + "\r\n", + msg: sip.Msg{ + VersionMajor: 2, + Status: 200, + Phrase: "OK", + From: &sip.Addr{ + Uri: &sip.URI{ + Scheme: "sip", + Host: "lol.com", + }, + Next: &sip.Addr{ + Uri: &sip.URI{ + Scheme: "sip", + Host: "bog.com", + }, + }, + }, + }, + }, + + msgTest{ + name: "Address Unquoted Display", + s: "SIP/2.0 200 OK\r\n" + + "From: Kitty \r\n" + + "\r\n", + msg: sip.Msg{ + VersionMajor: 2, + Status: 200, + Phrase: "OK", + From: &sip.Addr{ + Display: "Kitty", + Uri: &sip.URI{ + Scheme: "sip", + Host: "lol.com", + }, + }, + }, + }, + + msgTest{ + name: "Address Quoted Display", + s: "SIP/2.0 200 OK\r\n" + + "From: \"Hello \\\"Kitty\\\" ◕◡◕\" \r\n" + + "\r\n", + msg: sip.Msg{ + VersionMajor: 2, + Status: 200, + Phrase: "OK", + From: &sip.Addr{ + Display: "Hello \"Kitty\" ◕◡◕", + Uri: &sip.URI{ + Scheme: "sip", + Host: "lol.com", + }, + }, + }, + }, + + msgTest{ + name: "Addr Tag", + s: "SIP/2.0 200 OK\r\n" + + "From: ;tag=omfg\r\n" + + "\r\n", + msg: sip.Msg{ + VersionMajor: 2, + Status: 200, + Phrase: "OK", + From: &sip.Addr{ + Uri: &sip.URI{ + Scheme: "sip", + Host: "lol.com", + }, + Params: sip.Params{ + "tag": "omfg", + }, + }, + }, + }, + + msgTest{ + name: "Addr Tag Quoted", + // TODO(jart): Crash when extra spacing in here. + s: "SIP/2.0 200 OK\r\n" + + "From: ;tag=\"◕◡◕\"\r\n" + + "\r\n", + msg: sip.Msg{ + VersionMajor: 2, + Status: 200, + Phrase: "OK", + From: &sip.Addr{ + Uri: &sip.URI{ + Scheme: "sip", + Host: "lol.com", + }, + Params: sip.Params{ + "tag": "◕◡◕", + }, + }, + }, + }, + + msgTest{ + name: "Addr Tag Bare", + s: "SIP/2.0 200 OK\r\n" + + "From: ;tag\r\n" + + "\r\n", + msg: sip.Msg{ + VersionMajor: 2, + Status: 200, + Phrase: "OK", + From: &sip.Addr{ + Uri: &sip.URI{ + Scheme: "sip", + Host: "lol.com", + }, + Params: sip.Params{ + "tag": "", + }, + }, + }, + }, + + msgTest{ + name: "Missing Angle Brackets With Tag Belongs to Addr Not URI", + s: "SIP/2.0 200 OK\r\n" + + "From: sip:lol.com;tag=omfg\r\n" + + "\r\n", + msg: sip.Msg{ + VersionMajor: 2, + Status: 200, + Phrase: "OK", + From: &sip.Addr{ + Uri: &sip.URI{ + Scheme: "sip", + Host: "lol.com", + }, + Params: sip.Params{ + "tag": "omfg", + }, }, }, },