diff --git a/sip/addr.go b/sip/addr.go index c72d5ea..0b2d3dc 100755 --- a/sip/addr.go +++ b/sip/addr.go @@ -20,9 +20,7 @@ package sip import ( "bytes" - "errors" "github.com/jart/gosip/util" - "strings" ) // Represents a SIP Address Linked List @@ -33,90 +31,7 @@ type Addr struct { Next *Addr // for comma separated lists of addresses } -// Parses a SIP address. -func ParseAddr(s string) (addr *Addr, err error) { - addr = new(Addr) - l := len(s) - if l == 0 { - return nil, errors.New("empty addr") - } - - // Extract display. - switch n := strings.IndexAny(s, "\"<"); { - case n < 0: - return nil, errors.New("Invalid address") - case s[n] == '<': // Display is not quoted. - addr.Display, s = strings.Trim(s[0:n], " "), s[n+1:] - case s[n] == '"': // We found an opening quote. - s = s[n+1:] - LOL: - for s != "" { - switch s[0] { - case '"': // Closing quote. - s = s[1:] - break LOL - case '\\': // Escape sequence. - if len(s) < 2 { - return nil, errors.New("Evil quote escape") - } - switch s[1] { - case '"': - addr.Display += "\"" - case '\\': - addr.Display += "\\" - } - s = s[2:] - default: // Generic character. - addr.Display += string(s[0]) - s = s[1:] - } - } - if s == "" { - return nil, errors.New("No closing quote in display") - } - for s != "" { - c := s[0] - s = s[1:] - if c == '<' { - break - } - } - } - - if n := strings.Index(s, ">"); n > 0 { - addr.Uri, err = ParseURI(s[0:n]) - if err != nil { - return nil, err - } - s = s[n+1:] - } else { - addr.Uri, err = ParseURI(s) - if err != nil { - return nil, err - } - s = "" - } - - // Extract semicolon delimited params. - if s != "" && s[0] == ';' { - addr.Params = parseParams(s[1:]) - s = "" - } - - // Is there another address? - s = strings.TrimLeft(s, " \t") - if s != "" && s[0] == ',' { - s = strings.TrimLeft(s[1:], " \t") - if s != "" { - addr.Next, err = ParseAddr(s) - if err != nil { - return nil, err - } - } - } - - return addr, nil -} +//go:generate ragel -Z -G2 -o addr_parse.go addr_parse.rl func (addr *Addr) String() string { if addr == nil { diff --git a/sip/addr_parse.go b/sip/addr_parse.go new file mode 100644 index 0000000..0f8994a --- /dev/null +++ b/sip/addr_parse.go @@ -0,0 +1,2776 @@ + +//line addr_parse.rl:1 +// -*-go-*- + +package sip + +import ( + "errors" + "fmt" + "strings" +) + + +//line addr_parse.rl:12 + +//line addr_parse.go:17 +const addr_start int = 1 +const addr_first_final int = 68 +const addr_error int = 0 + +const addr_en_params int = 69 +const addr_en_name_addr int = 35 +const addr_en_bare_addr int = 65 +const addr_en_addr int = 1 + + +//line addr_parse.rl:13 + +// ParseAddr turns a SIP address into a data structure. +func ParseAddr(s string) (addr *Addr, err error) { + if s == "" { + return nil, errors.New("Empty SIP message") + } + return ParseAddrBytes([]byte(s), nil) +} + +// ParseAddr turns a SIP address slice into a data structure. +func ParseAddrBytes(data []byte, next *Addr) (addr *Addr, err error) { + if data == nil { + return nil, nil + } + addr = new(Addr) + result := addr + cs := 0 + p := 0 + pe := len(data) + eof := len(data) + buf := make([]byte, len(data)) + amt := 0 + mark := 0 + var name string + + +//line addr_parse.go:55 + { + cs = addr_start + } + +//line addr_parse.go:60 + { + var _widec int16 + if p == pe { + goto _test_eof + } + switch cs { + case 1: + goto st_case_1 + case 68: + goto st_case_68 + case 35: + goto st_case_35 + case 0: + goto st_case_0 + case 36: + goto st_case_36 + case 37: + goto st_case_37 + case 38: + goto st_case_38 + case 39: + goto st_case_39 + case 40: + goto st_case_40 + case 41: + goto st_case_41 + case 74: + goto st_case_74 + case 75: + goto st_case_75 + case 42: + goto st_case_42 + case 43: + goto st_case_43 + case 76: + goto st_case_76 + case 44: + goto st_case_44 + case 45: + goto st_case_45 + case 46: + goto st_case_46 + case 47: + goto st_case_47 + case 48: + goto st_case_48 + case 49: + goto st_case_49 + case 50: + goto st_case_50 + case 51: + goto st_case_51 + case 52: + goto st_case_52 + case 53: + goto st_case_53 + case 54: + goto st_case_54 + case 55: + goto st_case_55 + case 56: + goto st_case_56 + case 57: + goto st_case_57 + case 58: + goto st_case_58 + case 59: + goto st_case_59 + case 60: + goto st_case_60 + case 61: + goto st_case_61 + case 62: + goto st_case_62 + case 63: + goto st_case_63 + case 64: + goto st_case_64 + case 65: + goto st_case_65 + case 66: + goto st_case_66 + case 67: + goto st_case_67 + case 77: + goto st_case_77 + case 78: + goto st_case_78 + case 69: + goto st_case_69 + case 2: + goto st_case_2 + case 3: + goto st_case_3 + case 70: + goto st_case_70 + case 4: + goto st_case_4 + case 5: + goto st_case_5 + case 6: + goto st_case_6 + case 7: + goto st_case_7 + case 71: + goto st_case_71 + case 8: + goto st_case_8 + case 9: + goto st_case_9 + case 72: + goto st_case_72 + case 10: + goto st_case_10 + case 11: + goto st_case_11 + case 12: + goto st_case_12 + case 13: + goto st_case_13 + case 14: + goto st_case_14 + case 73: + goto st_case_73 + case 15: + goto st_case_15 + case 16: + goto st_case_16 + case 17: + goto st_case_17 + case 18: + goto st_case_18 + case 19: + goto st_case_19 + case 20: + goto st_case_20 + case 21: + goto st_case_21 + case 22: + goto st_case_22 + case 23: + goto st_case_23 + case 24: + goto st_case_24 + case 25: + goto st_case_25 + case 26: + goto st_case_26 + case 27: + goto st_case_27 + case 28: + goto st_case_28 + case 29: + goto st_case_29 + case 30: + goto st_case_30 + case 31: + goto st_case_31 + case 32: + goto st_case_32 + case 33: + goto st_case_33 + case 34: + goto st_case_34 + } + goto st_out + st1: + if p++; p == pe { + goto _test_eof1 + } + st_case_1: + switch data[p] { + case 59: + goto tr1 + case 60: + goto tr2 + } + goto tr0 +tr109: +//line addr_parse.rl:78 + + p = mark + p-- + + {goto st35 } + + goto st68 +tr0: +//line addr_parse.rl:39 + + mark = p + + goto st68 +tr1: +//line addr_parse.rl:39 + + mark = p + +//line addr_parse.rl:84 + + p = mark + p-- + + {goto st65 } + + goto st68 +tr2: +//line addr_parse.rl:39 + + mark = p + +//line addr_parse.rl:78 + + p = mark + p-- + + {goto st35 } + + goto st68 +tr108: +//line addr_parse.rl:84 + + p = mark + p-- + + {goto st65 } + + goto st68 + st68: + if p++; p == pe { + goto _test_eof68 + } + st_case_68: +//line addr_parse.go:294 + switch data[p] { + case 59: + goto tr108 + case 60: + goto tr109 + } + goto st68 +tr50: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:56 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st35 + st35: + if p++; p == pe { + goto _test_eof35 + } + st_case_35: +//line addr_parse.go:317 + _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 tr50 + case 32: + goto tr50 + case 33: + goto tr51 + case 34: + goto st50 + case 37: + goto tr51 + case 39: + goto tr51 + case 60: + goto tr53 + case 126: + goto tr51 + case 525: + goto tr54 + } + switch { + case _widec < 48: + switch { + case _widec > 43: + if 45 <= _widec && _widec <= 46 { + goto tr51 + } + case _widec >= 42: + goto tr51 + } + case _widec > 57: + switch { + case _widec > 90: + if 95 <= _widec && _widec <= 122 { + goto tr51 + } + case _widec >= 65: + goto tr51 + } + default: + goto tr51 + } + goto st0 +st_case_0: + st0: + cs = 0 + goto _out +tr51: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st36 +tr56: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st36 + st36: + if p++; p == pe { + goto _test_eof36 + } + st_case_36: +//line addr_parse.go:395 + _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 32: + goto tr55 + case 33: + goto tr56 + case 37: + goto tr56 + case 39: + goto tr56 + case 126: + goto tr56 + case 525: + goto tr57 + } + switch { + case _widec < 48: + switch { + case _widec > 43: + if 45 <= _widec && _widec <= 46 { + goto tr56 + } + case _widec >= 42: + goto tr56 + } + case _widec > 57: + switch { + case _widec > 90: + if 95 <= _widec && _widec <= 122 { + goto tr56 + } + case _widec >= 65: + goto tr56 + } + default: + goto tr56 + } + goto st0 +tr55: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st37 +tr58: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + +//line addr_parse.rl:56 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st37 + st37: + if p++; p == pe { + goto _test_eof37 + } + st_case_37: +//line addr_parse.go:465 + _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 tr58 + case 32: + goto tr58 + case 33: + goto tr56 + case 37: + goto tr56 + case 39: + goto tr56 + case 60: + goto tr59 + case 126: + goto tr56 + case 525: + goto tr60 + } + switch { + case _widec < 48: + switch { + case _widec > 43: + if 45 <= _widec && _widec <= 46 { + goto tr56 + } + case _widec >= 42: + goto tr56 + } + case _widec > 57: + switch { + case _widec > 90: + if 95 <= _widec && _widec <= 122 { + goto tr56 + } + case _widec >= 65: + goto tr56 + } + default: + goto tr56 + } + goto st0 +tr53: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:56 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st38 +tr59: +//line addr_parse.rl:56 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st38 +tr94: +//line addr_parse.rl:60 + + addr.Display = string(buf[0:amt]) + + goto st38 + st38: + if p++; p == pe { + goto _test_eof38 + } + st_case_38: +//line addr_parse.go:541 + switch { + case data[p] > 90: + if 97 <= data[p] && data[p] <= 122 { + goto tr61 + } + case data[p] >= 65: + goto tr61 + } + goto st0 +tr61: +//line addr_parse.rl:39 + + mark = p + + goto st39 + st39: + if p++; p == pe { + goto _test_eof39 + } + st_case_39: +//line addr_parse.go:562 + switch data[p] { + case 43: + goto st39 + case 58: + goto st40 + } + switch { + case data[p] < 48: + if 45 <= data[p] && data[p] <= 46 { + goto st39 + } + case data[p] > 57: + switch { + case data[p] > 90: + if 97 <= data[p] && data[p] <= 122 { + goto st39 + } + case data[p] >= 65: + goto st39 + } + default: + goto st39 + } + goto st0 + st40: + if p++; p == pe { + goto _test_eof40 + } + st_case_40: + switch data[p] { + case 33: + goto st41 + case 61: + goto st41 + case 93: + goto st41 + case 95: + goto st41 + case 126: + goto st41 + } + switch { + case data[p] < 63: + if 36 <= data[p] && data[p] <= 59 { + goto st41 + } + case data[p] > 91: + if 97 <= data[p] && data[p] <= 122 { + goto st41 + } + default: + goto st41 + } + goto st0 + st41: + if p++; p == pe { + goto _test_eof41 + } + st_case_41: + switch data[p] { + case 33: + goto st41 + case 62: + goto tr65 + case 93: + goto st41 + case 95: + goto st41 + case 126: + goto st41 + } + switch { + case data[p] < 61: + if 36 <= data[p] && data[p] <= 59 { + goto st41 + } + case data[p] > 91: + if 97 <= data[p] && data[p] <= 122 { + goto st41 + } + default: + goto st41 + } + goto st0 +tr65: +//line addr_parse.rl:64 + + addr.Uri, err = ParseURIBytes(data[mark:p]) + if err != nil { return nil, err } + + goto st74 + st74: + if p++; p == pe { + goto _test_eof74 + } + st_case_74: +//line addr_parse.go:659 + _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 st74 + case 32: + goto st74 + case 269: + goto tr121 + case 525: + goto st42 + } + switch { + case _widec > 12: + if 14 <= _widec { + goto tr121 + } + default: + goto tr121 + } + goto st0 +tr121: +//line addr_parse.rl:90 + + p-- + + {goto st69 } + + goto st75 + st75: + if p++; p == pe { + goto _test_eof75 + } + st_case_75: +//line addr_parse.go:699 + goto st0 + st42: + if p++; p == pe { + goto _test_eof42 + } + st_case_42: + if data[p] == 10 { + goto st43 + } + goto st0 + st43: + if p++; p == pe { + goto _test_eof43 + } + st_case_43: + switch data[p] { + case 9: + goto st76 + case 32: + goto st76 + } + goto st0 + st76: + if p++; p == pe { + goto _test_eof76 + } + st_case_76: + switch data[p] { + case 9: + goto st76 + case 32: + goto st76 + } + goto tr121 +tr57: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st44 +tr60: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + +//line addr_parse.rl:56 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st44 + st44: + if p++; p == pe { + goto _test_eof44 + } + st_case_44: +//line addr_parse.go:757 + if data[p] == 10 { + goto tr68 + } + goto st0 +tr68: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st45 + st45: + if p++; p == pe { + goto _test_eof45 + } + st_case_45: +//line addr_parse.go:774 + switch data[p] { + case 9: + goto tr69 + case 32: + goto tr69 + } + goto st0 +tr69: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st46 +tr70: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + +//line addr_parse.rl:56 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st46 + st46: + if p++; p == pe { + goto _test_eof46 + } + st_case_46: +//line addr_parse.go:805 + _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 tr70 + case 32: + goto tr70 + case 33: + goto tr56 + case 37: + goto tr56 + case 39: + goto tr56 + case 60: + goto tr59 + case 126: + goto tr56 + case 525: + goto tr71 + } + switch { + case _widec < 48: + switch { + case _widec > 43: + if 45 <= _widec && _widec <= 46 { + goto tr56 + } + case _widec >= 42: + goto tr56 + } + case _widec > 57: + switch { + case _widec > 90: + if 95 <= _widec && _widec <= 122 { + goto tr56 + } + case _widec >= 65: + goto tr56 + } + default: + goto tr56 + } + goto st0 +tr102: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:56 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st47 +tr71: +//line addr_parse.rl:56 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st47 +tr95: +//line addr_parse.rl:60 + + addr.Display = string(buf[0:amt]) + + goto st47 + st47: + if p++; p == pe { + goto _test_eof47 + } + st_case_47: +//line addr_parse.go:881 + if data[p] == 10 { + goto st48 + } + goto st0 + st48: + if p++; p == pe { + goto _test_eof48 + } + st_case_48: + switch data[p] { + case 9: + goto st49 + case 32: + goto st49 + } + goto st0 + st49: + if p++; p == pe { + goto _test_eof49 + } + st_case_49: + switch data[p] { + case 9: + goto st49 + case 32: + goto st49 + case 60: + goto st38 + } + goto st0 + st50: + if p++; p == pe { + goto _test_eof50 + } + st_case_50: + _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 tr75 + case 34: + goto tr76 + case 92: + goto tr77 + case 525: + goto tr83 + } + switch { + case _widec < 224: + switch { + case _widec > 126: + if 192 <= _widec && _widec <= 223 { + goto tr78 + } + case _widec >= 32: + goto tr75 + } + case _widec > 239: + switch { + case _widec < 248: + if 240 <= _widec && _widec <= 247 { + goto tr80 + } + case _widec > 251: + if 252 <= _widec && _widec <= 253 { + goto tr82 + } + default: + goto tr81 + } + default: + goto tr79 + } + goto st0 +tr75: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st51 +tr84: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st51 + st51: + if p++; p == pe { + goto _test_eof51 + } + st_case_51: +//line addr_parse.go:984 + _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 tr84 + case 34: + goto st52 + case 92: + goto st54 + case 525: + goto tr92 + } + switch { + case _widec < 224: + switch { + case _widec > 126: + if 192 <= _widec && _widec <= 223 { + goto tr87 + } + case _widec >= 32: + goto tr84 + } + case _widec > 239: + switch { + case _widec < 248: + if 240 <= _widec && _widec <= 247 { + goto tr89 + } + case _widec > 251: + if 252 <= _widec && _widec <= 253 { + goto tr91 + } + default: + goto tr90 + } + default: + goto tr88 + } + goto st0 +tr76: +//line addr_parse.rl:43 + + amt = 0 + + goto st52 + st52: + if p++; p == pe { + goto _test_eof52 + } + st_case_52: +//line addr_parse.go:1040 + _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 tr93 + case 32: + goto tr93 + case 60: + goto tr94 + case 525: + goto tr95 + } + goto st0 +tr93: +//line addr_parse.rl:60 + + addr.Display = string(buf[0:amt]) + + goto st53 + st53: + if p++; p == pe { + goto _test_eof53 + } + st_case_53: +//line addr_parse.go:1070 + _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 + case 32: + goto st53 + case 60: + goto st38 + case 525: + goto st47 + } + goto st0 +tr77: +//line addr_parse.rl:43 + + amt = 0 + + goto st54 + st54: + if p++; p == pe { + goto _test_eof54 + } + st_case_54: +//line addr_parse.go:1100 + switch { + case data[p] < 11: + if data[p] <= 9 { + goto tr84 + } + case data[p] > 12: + if 14 <= data[p] && data[p] <= 127 { + goto tr84 + } + default: + goto tr84 + } + goto st0 +tr78: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st55 +tr87: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st55 + st55: + if p++; p == pe { + goto _test_eof55 + } + st_case_55: +//line addr_parse.go:1137 + if 128 <= data[p] && data[p] <= 191 { + goto tr84 + } + goto st0 +tr79: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st56 +tr88: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st56 + st56: + if p++; p == pe { + goto _test_eof56 + } + st_case_56: +//line addr_parse.go:1165 + if 128 <= data[p] && data[p] <= 191 { + goto tr87 + } + goto st0 +tr80: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st57 +tr89: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st57 + st57: + if p++; p == pe { + goto _test_eof57 + } + st_case_57: +//line addr_parse.go:1193 + if 128 <= data[p] && data[p] <= 191 { + goto tr88 + } + goto st0 +tr81: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st58 +tr90: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st58 + st58: + if p++; p == pe { + goto _test_eof58 + } + st_case_58: +//line addr_parse.go:1221 + if 128 <= data[p] && data[p] <= 191 { + goto tr89 + } + goto st0 +tr82: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st59 +tr91: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st59 + st59: + if p++; p == pe { + goto _test_eof59 + } + st_case_59: +//line addr_parse.go:1249 + if 128 <= data[p] && data[p] <= 191 { + goto tr90 + } + goto st0 +tr83: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st60 +tr92: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st60 + st60: + if p++; p == pe { + goto _test_eof60 + } + st_case_60: +//line addr_parse.go:1277 + if data[p] == 10 { + goto tr98 + } + goto st0 +tr98: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st61 + st61: + if p++; p == pe { + goto _test_eof61 + } + st_case_61: +//line addr_parse.go:1294 + switch data[p] { + case 9: + goto tr84 + case 32: + goto tr84 + } + goto st0 +tr54: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:56 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st62 + st62: + if p++; p == pe { + goto _test_eof62 + } + st_case_62: +//line addr_parse.go:1317 + if data[p] == 10 { + goto st63 + } + goto st0 + st63: + if p++; p == pe { + goto _test_eof63 + } + st_case_63: + switch data[p] { + case 9: + goto st64 + case 32: + goto st64 + } + goto st0 +tr101: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:56 + + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + + goto st64 + st64: + if p++; p == pe { + goto _test_eof64 + } + st_case_64: +//line addr_parse.go:1349 + _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 tr101 + case 32: + goto tr101 + case 33: + goto tr51 + case 34: + goto st50 + case 37: + goto tr51 + case 39: + goto tr51 + case 60: + goto tr53 + case 126: + goto tr51 + case 525: + goto tr102 + } + switch { + case _widec < 48: + switch { + case _widec > 43: + if 45 <= _widec && _widec <= 46 { + goto tr51 + } + case _widec >= 42: + goto tr51 + } + case _widec > 57: + switch { + case _widec > 90: + if 95 <= _widec && _widec <= 122 { + goto tr51 + } + case _widec >= 65: + goto tr51 + } + default: + goto tr51 + } + goto st0 + st65: + if p++; p == pe { + goto _test_eof65 + } + st_case_65: + switch { + case data[p] > 90: + if 97 <= data[p] && data[p] <= 122 { + goto tr103 + } + case data[p] >= 65: + goto tr103 + } + goto st0 +tr103: +//line addr_parse.rl:39 + + mark = p + + goto st66 + st66: + if p++; p == pe { + goto _test_eof66 + } + st_case_66: +//line addr_parse.go:1425 + switch data[p] { + case 43: + goto st66 + case 58: + goto st67 + } + switch { + case data[p] < 48: + if 45 <= data[p] && data[p] <= 46 { + goto st66 + } + case data[p] > 57: + switch { + case data[p] > 90: + if 97 <= data[p] && data[p] <= 122 { + goto st66 + } + case data[p] >= 65: + goto st66 + } + default: + goto st66 + } + goto st0 + st67: + if p++; p == pe { + goto _test_eof67 + } + st_case_67: + switch data[p] { + case 33: + goto st77 + case 61: + goto st77 + case 93: + goto st77 + case 95: + goto st77 + case 126: + goto st77 + } + switch { + case data[p] < 63: + if 36 <= data[p] && data[p] <= 58 { + goto st77 + } + case data[p] > 91: + if 97 <= data[p] && data[p] <= 122 { + goto st77 + } + default: + goto st77 + } + goto st0 + st77: + if p++; p == pe { + goto _test_eof77 + } + st_case_77: + switch data[p] { + case 33: + goto st77 + case 61: + goto st77 + case 93: + goto st77 + case 95: + goto st77 + case 126: + goto st77 + } + switch { + case data[p] < 63: + if 36 <= data[p] && data[p] <= 58 { + goto st77 + } + case data[p] > 91: + if 97 <= data[p] && data[p] <= 122 { + goto st77 + } + default: + goto st77 + } + goto tr124 +tr124: +//line addr_parse.rl:64 + + addr.Uri, err = ParseURIBytes(data[mark:p]) + if err != nil { return nil, err } + +//line addr_parse.rl:90 + + p-- + + {goto st69 } + + goto st78 + st78: + if p++; p == pe { + goto _test_eof78 + } + st_case_78: +//line addr_parse.go:1528 + goto st0 + st69: + if p++; p == pe { + goto _test_eof69 + } + st_case_69: + _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 st2 + case 32: + goto st2 + case 44: + goto st3 + case 59: + goto st7 + case 525: + goto st10 + } + goto st0 +tr116: +//line addr_parse.rl:69 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + + goto st2 + st2: + if p++; p == pe { + goto _test_eof2 + } + st_case_2: +//line addr_parse.go:1569 + _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 st2 + case 32: + goto st2 + case 44: + goto st3 + case 59: + goto st7 + case 525: + goto st10 + } + goto st0 +tr112: +//line addr_parse.rl:52 + + name = string(data[mark:p]) + +//line addr_parse.rl:69 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + + goto st3 +tr118: +//line addr_parse.rl:69 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + + goto st3 + st3: + if p++; p == pe { + goto _test_eof3 + } + st_case_3: +//line addr_parse.go:1617 + _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 st3 + case 32: + goto st3 + case 269: + goto tr8 + case 525: + goto st4 + } + switch { + case _widec > 12: + if 14 <= _widec { + goto tr8 + } + default: + goto tr8 + } + goto st0 +tr8: +//line addr_parse.rl:95 + + addr.Next = new(Addr) + addr = addr.Next + p-- + + {goto st1 } + + goto st70 + st70: + if p++; p == pe { + goto _test_eof70 + } + st_case_70: +//line addr_parse.go:1659 + goto st0 + st4: + if p++; p == pe { + goto _test_eof4 + } + st_case_4: + if data[p] == 10 { + goto st5 + } + goto st0 + st5: + if p++; p == pe { + goto _test_eof5 + } + st_case_5: + switch data[p] { + case 9: + goto st6 + case 32: + goto st6 + } + goto st0 + st6: + if p++; p == pe { + goto _test_eof6 + } + st_case_6: + switch data[p] { + case 9: + goto st6 + case 32: + goto st6 + } + goto tr8 +tr113: +//line addr_parse.rl:52 + + name = string(data[mark:p]) + +//line addr_parse.rl:69 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + + goto st7 +tr119: +//line addr_parse.rl:69 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + + goto st7 + st7: + if p++; p == pe { + goto _test_eof7 + } + st_case_7: +//line addr_parse.go:1721 + _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 st7 + case 32: + goto st7 + case 33: + goto tr12 + case 37: + goto tr12 + case 39: + goto tr12 + case 126: + goto tr12 + case 525: + goto st32 + } + switch { + case _widec < 48: + switch { + case _widec > 43: + if 45 <= _widec && _widec <= 46 { + goto tr12 + } + case _widec >= 42: + goto tr12 + } + case _widec > 57: + switch { + case _widec > 90: + if 95 <= _widec && _widec <= 122 { + goto tr12 + } + case _widec >= 65: + goto tr12 + } + default: + goto tr12 + } + goto st0 +tr12: +//line addr_parse.rl:39 + + mark = p + + goto st71 + st71: + if p++; p == pe { + goto _test_eof71 + } + st_case_71: +//line addr_parse.go:1779 + _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 tr110 + case 32: + goto tr110 + case 33: + goto st71 + case 37: + goto st71 + case 39: + goto st71 + case 44: + goto tr112 + case 59: + goto tr113 + case 61: + goto tr114 + case 126: + goto st71 + case 525: + goto tr115 + } + switch { + case _widec < 48: + if 42 <= _widec && _widec <= 46 { + goto st71 + } + case _widec > 57: + switch { + case _widec > 90: + if 95 <= _widec && _widec <= 122 { + goto st71 + } + case _widec >= 65: + goto st71 + } + default: + goto st71 + } + goto st0 +tr110: +//line addr_parse.rl:52 + + name = string(data[mark:p]) + +//line addr_parse.rl:69 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + + goto st8 + st8: + if p++; p == pe { + goto _test_eof8 + } + st_case_8: +//line addr_parse.go:1845 + _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 st8 + case 32: + goto st8 + case 44: + goto st3 + case 59: + goto st7 + case 61: + goto st9 + case 525: + goto st29 + } + goto st0 +tr114: +//line addr_parse.rl:52 + + name = string(data[mark:p]) + + goto st9 + st9: + if p++; p == pe { + goto _test_eof9 + } + st_case_9: +//line addr_parse.go:1879 + _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 st9 + case 32: + goto st9 + case 33: + goto tr17 + case 34: + goto st13 + case 37: + goto tr17 + case 39: + goto tr17 + case 93: + goto tr17 + case 126: + goto tr17 + case 525: + goto st23 + } + switch { + case _widec < 48: + switch { + case _widec > 43: + if 45 <= _widec && _widec <= 46 { + goto tr17 + } + case _widec >= 42: + goto tr17 + } + case _widec > 58: + switch { + case _widec > 91: + if 95 <= _widec && _widec <= 122 { + goto tr17 + } + case _widec >= 65: + goto tr17 + } + default: + goto tr17 + } + goto st0 +tr17: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st72 +tr117: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st72 + st72: + if p++; p == pe { + goto _test_eof72 + } + st_case_72: +//line addr_parse.go:1953 + _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 tr116 + case 32: + goto tr116 + case 33: + goto tr117 + case 37: + goto tr117 + case 39: + goto tr117 + case 44: + goto tr118 + case 59: + goto tr119 + case 93: + goto tr117 + case 126: + goto tr117 + case 525: + goto tr120 + } + switch { + case _widec < 48: + if 42 <= _widec && _widec <= 46 { + goto tr117 + } + case _widec > 58: + switch { + case _widec > 91: + if 95 <= _widec && _widec <= 122 { + goto tr117 + } + case _widec >= 65: + goto tr117 + } + default: + goto tr117 + } + goto st0 +tr120: +//line addr_parse.rl:69 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + + goto st10 + st10: + if p++; p == pe { + goto _test_eof10 + } + st_case_10: +//line addr_parse.go:2015 + if data[p] == 10 { + goto st11 + } + goto st0 + st11: + if p++; p == pe { + goto _test_eof11 + } + st_case_11: + switch data[p] { + case 9: + goto st12 + case 32: + goto st12 + } + goto st0 + st12: + if p++; p == pe { + goto _test_eof12 + } + st_case_12: + switch data[p] { + case 9: + goto st12 + case 32: + goto st12 + case 44: + goto st3 + case 59: + goto st7 + } + goto st0 + st13: + if p++; p == pe { + goto _test_eof13 + } + st_case_13: + _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 tr22 + case 34: + goto tr23 + case 92: + goto tr24 + case 525: + goto tr30 + } + switch { + case _widec < 224: + switch { + case _widec > 126: + if 192 <= _widec && _widec <= 223 { + goto tr25 + } + case _widec >= 32: + goto tr22 + } + case _widec > 239: + switch { + case _widec < 248: + if 240 <= _widec && _widec <= 247 { + goto tr27 + } + case _widec > 251: + if 252 <= _widec && _widec <= 253 { + goto tr29 + } + default: + goto tr28 + } + default: + goto tr26 + } + goto st0 +tr22: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st14 +tr31: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st14 + st14: + if p++; p == pe { + goto _test_eof14 + } + st_case_14: +//line addr_parse.go:2120 + _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 tr31 + case 34: + goto st73 + case 92: + goto st15 + case 525: + goto tr39 + } + switch { + case _widec < 224: + switch { + case _widec > 126: + if 192 <= _widec && _widec <= 223 { + goto tr34 + } + case _widec >= 32: + goto tr31 + } + case _widec > 239: + switch { + case _widec < 248: + if 240 <= _widec && _widec <= 247 { + goto tr36 + } + case _widec > 251: + if 252 <= _widec && _widec <= 253 { + goto tr38 + } + default: + goto tr37 + } + default: + goto tr35 + } + goto st0 +tr23: +//line addr_parse.rl:43 + + amt = 0 + + goto st73 + st73: + if p++; p == pe { + goto _test_eof73 + } + st_case_73: +//line addr_parse.go:2176 + _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 tr116 + case 32: + goto tr116 + case 44: + goto tr118 + case 59: + goto tr119 + case 525: + goto tr120 + } + goto st0 +tr24: +//line addr_parse.rl:43 + + amt = 0 + + goto st15 + st15: + if p++; p == pe { + goto _test_eof15 + } + st_case_15: +//line addr_parse.go:2208 + switch { + case data[p] < 11: + if data[p] <= 9 { + goto tr31 + } + case data[p] > 12: + if 14 <= data[p] && data[p] <= 127 { + goto tr31 + } + default: + goto tr31 + } + goto st0 +tr25: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st16 +tr34: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st16 + st16: + if p++; p == pe { + goto _test_eof16 + } + st_case_16: +//line addr_parse.go:2245 + if 128 <= data[p] && data[p] <= 191 { + goto tr31 + } + goto st0 +tr26: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st17 +tr35: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st17 + st17: + if p++; p == pe { + goto _test_eof17 + } + st_case_17: +//line addr_parse.go:2273 + if 128 <= data[p] && data[p] <= 191 { + goto tr34 + } + goto st0 +tr27: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st18 +tr36: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st18 + st18: + if p++; p == pe { + goto _test_eof18 + } + st_case_18: +//line addr_parse.go:2301 + if 128 <= data[p] && data[p] <= 191 { + goto tr35 + } + goto st0 +tr28: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st19 +tr37: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st19 + st19: + if p++; p == pe { + goto _test_eof19 + } + st_case_19: +//line addr_parse.go:2329 + if 128 <= data[p] && data[p] <= 191 { + goto tr36 + } + goto st0 +tr29: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st20 +tr38: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st20 + st20: + if p++; p == pe { + goto _test_eof20 + } + st_case_20: +//line addr_parse.go:2357 + if 128 <= data[p] && data[p] <= 191 { + goto tr37 + } + goto st0 +tr30: +//line addr_parse.rl:43 + + amt = 0 + +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st21 +tr39: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st21 + st21: + if p++; p == pe { + goto _test_eof21 + } + st_case_21: +//line addr_parse.go:2385 + if data[p] == 10 { + goto tr40 + } + goto st0 +tr40: +//line addr_parse.rl:47 + + buf[amt] = data[p] + amt++ + + goto st22 + st22: + if p++; p == pe { + goto _test_eof22 + } + st_case_22: +//line addr_parse.go:2402 + switch data[p] { + case 9: + goto tr31 + case 32: + goto tr31 + } + goto st0 + st23: + if p++; p == pe { + goto _test_eof23 + } + st_case_23: + if data[p] == 10 { + goto st24 + } + goto st0 + st24: + if p++; p == pe { + goto _test_eof24 + } + st_case_24: + switch data[p] { + case 9: + goto st25 + case 32: + goto st25 + } + goto st0 + st25: + if p++; p == pe { + goto _test_eof25 + } + st_case_25: + _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 st25 + case 32: + goto st25 + case 33: + goto tr17 + case 34: + goto st13 + case 37: + goto tr17 + case 39: + goto tr17 + case 93: + goto tr17 + case 126: + goto tr17 + case 525: + goto st26 + } + switch { + case _widec < 48: + switch { + case _widec > 43: + if 45 <= _widec && _widec <= 46 { + goto tr17 + } + case _widec >= 42: + goto tr17 + } + case _widec > 58: + switch { + case _widec > 91: + if 95 <= _widec && _widec <= 122 { + goto tr17 + } + case _widec >= 65: + goto tr17 + } + default: + goto tr17 + } + goto st0 + st26: + if p++; p == pe { + goto _test_eof26 + } + st_case_26: + if data[p] == 10 { + goto st27 + } + goto st0 + st27: + if p++; p == pe { + goto _test_eof27 + } + st_case_27: + switch data[p] { + case 9: + goto st28 + case 32: + goto st28 + } + goto st0 + st28: + if p++; p == pe { + goto _test_eof28 + } + st_case_28: + switch data[p] { + case 9: + goto st28 + case 32: + goto st28 + case 34: + goto st13 + } + goto st0 +tr115: +//line addr_parse.rl:52 + + name = string(data[mark:p]) + +//line addr_parse.rl:69 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + + goto st29 + st29: + if p++; p == pe { + goto _test_eof29 + } + st_case_29: +//line addr_parse.go:2539 + if data[p] == 10 { + goto st30 + } + goto st0 + st30: + if p++; p == pe { + goto _test_eof30 + } + st_case_30: + switch data[p] { + case 9: + goto st31 + case 32: + goto st31 + } + goto st0 + st31: + if p++; p == pe { + goto _test_eof31 + } + st_case_31: + switch data[p] { + case 9: + goto st31 + case 32: + goto st31 + case 44: + goto st3 + case 59: + goto st7 + case 61: + goto st9 + } + goto st0 + st32: + if p++; p == pe { + goto _test_eof32 + } + st_case_32: + if data[p] == 10 { + goto st33 + } + goto st0 + st33: + if p++; p == pe { + goto _test_eof33 + } + st_case_33: + switch data[p] { + case 9: + goto st34 + case 32: + goto st34 + } + goto st0 + st34: + if p++; p == pe { + goto _test_eof34 + } + st_case_34: + switch data[p] { + case 9: + goto st34 + case 32: + goto st34 + case 33: + goto tr12 + case 37: + goto tr12 + case 39: + goto tr12 + case 126: + goto tr12 + } + switch { + case data[p] < 48: + switch { + case data[p] > 43: + if 45 <= data[p] && data[p] <= 46 { + goto tr12 + } + case data[p] >= 42: + goto tr12 + } + case data[p] > 57: + switch { + case data[p] > 90: + if 95 <= data[p] && data[p] <= 122 { + goto tr12 + } + case data[p] >= 65: + goto tr12 + } + default: + goto tr12 + } + goto st0 + st_out: + _test_eof1: cs = 1; goto _test_eof + _test_eof68: cs = 68; goto _test_eof + _test_eof35: cs = 35; goto _test_eof + _test_eof36: cs = 36; goto _test_eof + _test_eof37: cs = 37; goto _test_eof + _test_eof38: cs = 38; goto _test_eof + _test_eof39: cs = 39; goto _test_eof + _test_eof40: cs = 40; goto _test_eof + _test_eof41: cs = 41; goto _test_eof + _test_eof74: cs = 74; goto _test_eof + _test_eof75: cs = 75; goto _test_eof + _test_eof42: cs = 42; goto _test_eof + _test_eof43: cs = 43; goto _test_eof + _test_eof76: cs = 76; 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_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_eof52: cs = 52; goto _test_eof + _test_eof53: cs = 53; goto _test_eof + _test_eof54: cs = 54; goto _test_eof + _test_eof55: cs = 55; goto _test_eof + _test_eof56: cs = 56; goto _test_eof + _test_eof57: cs = 57; goto _test_eof + _test_eof58: cs = 58; goto _test_eof + _test_eof59: cs = 59; goto _test_eof + _test_eof60: cs = 60; goto _test_eof + _test_eof61: cs = 61; goto _test_eof + _test_eof62: cs = 62; goto _test_eof + _test_eof63: cs = 63; 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_eof77: cs = 77; goto _test_eof + _test_eof78: cs = 78; goto _test_eof + _test_eof69: cs = 69; goto _test_eof + _test_eof2: cs = 2; goto _test_eof + _test_eof3: cs = 3; goto _test_eof + _test_eof70: cs = 70; goto _test_eof + _test_eof4: cs = 4; goto _test_eof + _test_eof5: cs = 5; goto _test_eof + _test_eof6: cs = 6; goto _test_eof + _test_eof7: cs = 7; goto _test_eof + _test_eof71: cs = 71; goto _test_eof + _test_eof8: cs = 8; goto _test_eof + _test_eof9: cs = 9; goto _test_eof + _test_eof72: cs = 72; goto _test_eof + _test_eof10: cs = 10; goto _test_eof + _test_eof11: cs = 11; goto _test_eof + _test_eof12: cs = 12; goto _test_eof + _test_eof13: cs = 13; goto _test_eof + _test_eof14: cs = 14; goto _test_eof + _test_eof73: cs = 73; goto _test_eof + _test_eof15: cs = 15; goto _test_eof + _test_eof16: cs = 16; goto _test_eof + _test_eof17: cs = 17; goto _test_eof + _test_eof18: cs = 18; goto _test_eof + _test_eof19: cs = 19; goto _test_eof + _test_eof20: cs = 20; goto _test_eof + _test_eof21: cs = 21; goto _test_eof + _test_eof22: cs = 22; goto _test_eof + _test_eof23: cs = 23; goto _test_eof + _test_eof24: cs = 24; goto _test_eof + _test_eof25: cs = 25; goto _test_eof + _test_eof26: cs = 26; goto _test_eof + _test_eof27: cs = 27; goto _test_eof + _test_eof28: cs = 28; goto _test_eof + _test_eof29: cs = 29; goto _test_eof + _test_eof30: cs = 30; goto _test_eof + _test_eof31: cs = 31; goto _test_eof + _test_eof32: cs = 32; goto _test_eof + _test_eof33: cs = 33; goto _test_eof + _test_eof34: cs = 34; goto _test_eof + + _test_eof: {} + if p == eof { + switch cs { + case 77: +//line addr_parse.rl:64 + + addr.Uri, err = ParseURIBytes(data[mark:p]) + if err != nil { return nil, err } + + case 72, 73: +//line addr_parse.rl:69 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + + case 1, 68: +//line addr_parse.rl:78 + + p = mark + p-- + + {goto st35 } + + case 71: +//line addr_parse.rl:52 + + name = string(data[mark:p]) + +//line addr_parse.rl:69 + + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + +//line addr_parse.go:2754 + } + } + + _out: {} + } + +//line addr_parse.rl:198 + + + if cs < addr_first_final { + if p == pe { + return nil, errors.New(fmt.Sprintf("Incomplete SIP address: %s", data)) + } else { + return nil, errors.New(fmt.Sprintf("Error in SIP address at offset %d: %s", p, string(data))) + } + } + + if next != nil { + next.Last().Next = result + return next, nil + } + return result, nil +} diff --git a/sip/addr_parse.rl b/sip/addr_parse.rl new file mode 100644 index 0000000..e5e288a --- /dev/null +++ b/sip/addr_parse.rl @@ -0,0 +1,213 @@ +// -*-go-*- + +package sip + +import ( + "errors" + "fmt" + "strings" +) + +%% machine addr; +%% write data; + +// ParseAddr turns a SIP address into a data structure. +func ParseAddr(s string) (addr *Addr, err error) { + if s == "" { + return nil, errors.New("Empty SIP message") + } + return ParseAddrBytes([]byte(s), nil) +} + +// ParseAddr turns a SIP address slice into a data structure. +func ParseAddrBytes(data []byte, next *Addr) (addr *Addr, err error) { + if data == nil { + return nil, nil + } + addr = new(Addr) + result := addr + cs := 0 + p := 0 + pe := len(data) + eof := len(data) + buf := make([]byte, len(data)) + amt := 0 + mark := 0 + var name string + + %%{ + action mark { + mark = p + } + + action start { + amt = 0 + } + + action append { + buf[amt] = fc + amt++ + } + + action name { + name = string(data[mark:p]) + } + + action display { + addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + } + + action qdisplay { + addr.Display = string(buf[0:amt]) + } + + action uri { + addr.Uri, err = ParseURIBytes(data[mark:p]) + if err != nil { return nil, err } + } + + action param { + if addr.Params == nil { + addr.Params = Params{} + } + addr.Params[name] = string(buf[0:amt]) + } + + action lookAheadWSP { p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') } + + action goto_name_addr { + p = mark + fhold; + fgoto name_addr; + } + + action goto_bare_addr { + p = mark + fhold; + fgoto bare_addr; + } + + action goto_params { + fhold; + fgoto params; + } + + action goto_addr { + addr.Next = new(Addr) + addr = addr.Next + fhold; + fgoto addr; + } + + # https://tools.ietf.org/html/rfc2234 + SP = " "; + HTAB = "\t"; + CR = "\r"; + LF = "\n"; + DQUOTE = "\""; + CRLF = CR LF; + WSP = SP | HTAB; + LWS = ( WSP* ( CR when lookAheadWSP ) LF )? WSP+; + SWS = LWS?; + 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; + + LWSCRLF_append = ( CR when lookAheadWSP ) @append LF @append; + LWS_append = ( WSP* @append LWSCRLF_append )? WSP+ @append; + + # https://tools.ietf.org/html/rfc3261#section-25.1 + reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," ; + mark = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")" ; + unreserved = alnum | mark ; + tokenc = alnum | "-" | "." | "!" | "%" | "*" | "_" | "+" | "`" + | "'" | "~" ; + separators = "(" | ")" | "<" | ">" | "@" | "," | ";" | ":" | "\\" + | "\"" | "/" | "[" | "]" | "?" | "=" | "{" | "}" | SP + | HTAB ; + wordc = alnum | "-" | "." | "!" | "%" | "*" | "_" | "+" | "`" + | "'" | "~" | "(" | ")" | "<" | ">" | ":" | "\\" | "\"" + | "/" | "[" | "]" | "?" | "{" | "}" ; + word = wordc+; + STAR = SWS "*" SWS; + SLASH = SWS "/" SWS; + EQUAL = SWS "=" SWS; + LPAREN = SWS "(" SWS; + RPAREN = SWS ")" SWS; + RAQUOT = ">" SWS; + LAQUOT = SWS "<"; + COMMA = SWS "," SWS; + SEMI = SWS ";" SWS; + COLON = SWS ":" SWS; + HCOLON = WSP* ":" SWS; + LDQUOT = SWS "\""; + RDQUOT = "\"" SWS; + + # The RFC BNF for SIP addresses is a bit nuts; we'll try our best. + token = tokenc+; + tokenhost = ( tokenc | "[" | "]" | ":" )+; + schemec = alnum | "+" | "-" | "."; + scheme = alpha schemec*; + uric = reserved | unreserved | "%" | "[" | "]"; + uri = scheme ":" uric+; + + # Quoted strings can have just about anything, including backslash escapes, + # which aren't quite as fancy as the ones you'd see in programming. + qdtextc = 0x21 | 0x23..0x5B | 0x5D..0x7E; + qdtext = UTF8_NONASCII | LWS_append | qdtextc @append; + quoted_pair = "\\" ( 0x00..0x09 | 0x0B..0x0C | 0x0E..0x7F ) @append; + quoted_content = ( qdtext | quoted_pair )* >start; + quoted_string = SWS DQUOTE quoted_content DQUOTE; + + # The display name can either be quoted or unquoted. The unquoted form is + # much more limited in what it may contain, although it does permit spaces. + display_name = quoted_string %qdisplay + | SWS ( token @append LWS_append )* >start %display + ; + + # Parameter parsing is pretty straightforward. Unlike URI parameters, the + # values on these can be quoted. The only thing that's weird is if the URI + # doesn't appear in angle brackets, the parameters need to be owned by the + # Addr object, not the URI. This has been placed in its own machine so it + # doesn't have to be duplicated in the two machines below. + param_name = token >mark %name; + param_content = tokenhost >start @append; + param_value = param_content | quoted_string; + param = ( param_name ( EQUAL param_value )? ) %param; + params := ( SEMI param )* ( COMMA <: any @goto_addr )?; + + # Now we're going to define two separate machines. The first is for + # addresses with angle brackets and the second is for ones without. + addr_spec = uri >mark %uri; + name_addr := display_name? LAQUOT addr_spec RAQUOT <: ( any @goto_params )?; + bare_addr := ( addr_spec -- ";" ) <: ( any @goto_params )?; + + # Now we perform lookahead to determine which machine we should use. + look = [^;<] + | ";" @goto_bare_addr + | "<" @goto_name_addr + ; + addr := look+ >mark $eof(goto_name_addr); + + write init; + write exec; + }%% + + if cs < addr_first_final { + if p == pe { + return nil, errors.New(fmt.Sprintf("Incomplete SIP address: %s", data)) + } else { + return nil, errors.New(fmt.Sprintf("Error in SIP address at offset %d: %s", p, string(data))) + } + } + + if next != nil { + next.Last().Next = result + return next, nil + } + return result, nil +} diff --git a/sip/addr_test.go b/sip/addr_test.go index 49c4bb9..a7a64fa 100755 --- a/sip/addr_test.go +++ b/sip/addr_test.go @@ -153,3 +153,7 @@ func TestReversed(t *testing.T) { t.Error("wtf", b.Next.Next) } } + +func addrError(t *testing.T, name string, want, got *sip.Addr) { + t.Errorf("%s:\n%#v\n%#v\n!=\n%#v\n%#v", name, want, want.Uri, got, got.Uri) +} diff --git a/sip/msg_parse.go b/sip/msg_parse.go index 6786a04..5b452ea 100644 --- a/sip/msg_parse.go +++ b/sip/msg_parse.go @@ -8,27 +8,25 @@ import ( "errors" "fmt" "github.com/jart/gosip/sdp" - "strings" ) -//line msg_parse.rl:13 +//line msg_parse.rl:12 -//line msg_parse.go:18 +//line msg_parse.go:17 const msg_start int = 1 -const msg_first_final int = 634 +const msg_first_final int = 542 const msg_error int = 0 -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_value int = 34 +const msg_en_xheader int = 44 +const msg_en_header int = 51 const msg_en_main int = 1 -//line msg_parse.rl:14 +//line msg_parse.rl:13 -// ParseMsg turns a a SIP message into a data structure. +// ParseMsg turns a SIP message into a data structure. func ParseMsg(s string) (msg *Msg, err error) { if s == "" { return nil, errors.New("Empty SIP message") @@ -36,20 +34,13 @@ func ParseMsg(s string) (msg *Msg, err error) { return ParseMsgBytes([]byte(s)) } -// ParseMsg turns a a SIP message byte slice into a data structure. +// ParseMsg turns a SIP message byte slice into a data structure. func ParseMsgBytes(data []byte) (msg *Msg, err error) { if data == nil { 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) @@ -64,16 +55,15 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { var name string var hex byte var value *string - var addr *Addr - var addrpp ***Addr + var addr **Addr -//line msg_parse.go:72 +//line msg_parse.go:62 { cs = msg_start } -//line msg_parse.go:77 +//line msg_parse.go:67 { var _widec int16 if p == pe { @@ -108,8 +98,8 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_12 case 13: goto st_case_13 - case 634: - goto st_case_634 + case 542: + goto st_case_542 case 14: goto st_case_14 case 15: @@ -166,6 +156,8 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_40 case 41: goto st_case_41 + case 543: + goto st_case_543 case 42: goto st_case_42 case 43: @@ -178,6 +170,8 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_46 case 47: goto st_case_47 + case 544: + goto st_case_544 case 48: goto st_case_48 case 49: @@ -188,6 +182,8 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_51 case 52: goto st_case_52 + case 545: + goto st_case_545 case 53: goto st_case_53 case 54: @@ -208,12 +204,8 @@ 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: @@ -224,8 +216,6 @@ 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: @@ -264,8 +254,6 @@ 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: @@ -304,12 +292,8 @@ 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: @@ -318,8 +302,6 @@ 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: @@ -370,12 +352,8 @@ 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: @@ -384,8 +362,6 @@ 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: @@ -396,8 +372,6 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_145 case 146: goto st_case_146 - case 645: - goto st_case_645 case 147: goto st_case_147 case 148: @@ -584,8 +558,6 @@ 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: @@ -1190,192 +1162,6 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto st_case_540 case 541: goto st_case_541 - case 542: - goto st_case_542 - case 543: - goto st_case_543 - case 544: - goto st_case_544 - case 545: - goto st_case_545 - case 546: - goto st_case_546 - case 547: - goto st_case_547 - case 548: - goto st_case_548 - case 549: - goto st_case_549 - case 550: - goto st_case_550 - case 551: - goto st_case_551 - case 552: - goto st_case_552 - case 553: - goto st_case_553 - case 554: - goto st_case_554 - case 555: - goto st_case_555 - case 556: - goto st_case_556 - case 557: - goto st_case_557 - case 558: - goto st_case_558 - case 559: - goto st_case_559 - case 560: - goto st_case_560 - case 561: - goto st_case_561 - case 562: - goto st_case_562 - case 563: - goto st_case_563 - case 564: - goto st_case_564 - case 565: - goto st_case_565 - case 566: - goto st_case_566 - case 567: - goto st_case_567 - case 568: - goto st_case_568 - case 569: - goto st_case_569 - case 570: - goto st_case_570 - case 571: - goto st_case_571 - case 572: - goto st_case_572 - case 573: - goto st_case_573 - case 574: - goto st_case_574 - case 575: - goto st_case_575 - case 576: - goto st_case_576 - case 577: - goto st_case_577 - case 578: - goto st_case_578 - case 579: - goto st_case_579 - case 580: - goto st_case_580 - case 581: - goto st_case_581 - case 582: - goto st_case_582 - case 583: - goto st_case_583 - case 584: - goto st_case_584 - case 585: - goto st_case_585 - case 586: - goto st_case_586 - case 587: - goto st_case_587 - case 588: - goto st_case_588 - case 589: - goto st_case_589 - case 590: - goto st_case_590 - case 591: - goto st_case_591 - case 592: - goto st_case_592 - case 593: - goto st_case_593 - case 594: - goto st_case_594 - case 595: - goto st_case_595 - case 596: - goto st_case_596 - case 597: - goto st_case_597 - case 598: - goto st_case_598 - case 599: - goto st_case_599 - case 600: - goto st_case_600 - case 601: - goto st_case_601 - case 602: - goto st_case_602 - case 603: - goto st_case_603 - case 604: - goto st_case_604 - case 605: - goto st_case_605 - case 606: - 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: @@ -1414,43 +1200,43 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { goto tr0 } goto st0 -tr242: -//line msg_parse.rl:144 +tr73: +//line msg_parse.rl:131 p-- - {goto st138 } + {goto st44 } -//line msg_parse.rl:138 +//line msg_parse.rl:125 p-- - {goto st138 } + {goto st44 } goto st0 -tr274: -//line msg_parse.rl:138 +tr105: +//line msg_parse.rl:125 p-- - {goto st138 } + {goto st44 } goto st0 -tr463: -//line msg_parse.rl:144 +tr293: +//line msg_parse.rl:131 p-- - {goto st138 } + {goto st44 } goto st0 -//line msg_parse.go:1448 +//line msg_parse.go:1234 st_case_0: st0: cs = 0 goto _out tr0: -//line msg_parse.rl:59 +//line msg_parse.rl:55 mark = p @@ -1460,7 +1246,7 @@ tr0: goto _test_eof2 } st_case_2: -//line msg_parse.go:1464 +//line msg_parse.go:1250 switch data[p] { case 32: goto tr3 @@ -1497,7 +1283,7 @@ tr0: } goto st0 tr3: -//line msg_parse.rl:99 +//line msg_parse.rl:91 msg.Method = string(data[mark:p]) @@ -1507,13 +1293,13 @@ tr3: goto _test_eof3 } st_case_3: -//line msg_parse.go:1511 +//line msg_parse.go:1297 if data[p] == 32 { goto st0 } goto tr5 tr5: -//line msg_parse.rl:59 +//line msg_parse.rl:55 mark = p @@ -1523,13 +1309,13 @@ tr5: goto _test_eof4 } st_case_4: -//line msg_parse.go:1527 +//line msg_parse.go:1313 if data[p] == 32 { goto tr7 } goto st4 tr7: -//line msg_parse.rl:111 +//line msg_parse.rl:103 msg.Request, err = ParseURIBytes(data[mark:p]) if err != nil { return nil, err } @@ -1540,7 +1326,7 @@ tr7: goto _test_eof5 } st_case_5: -//line msg_parse.go:1544 +//line msg_parse.go:1330 if data[p] == 83 { goto st6 } @@ -1582,7 +1368,7 @@ tr7: } goto st0 tr12: -//line msg_parse.rl:103 +//line msg_parse.rl:95 msg.VersionMajor = msg.VersionMajor * 10 + (data[p] - 0x30) @@ -1592,7 +1378,7 @@ tr12: goto _test_eof10 } st_case_10: -//line msg_parse.go:1596 +//line msg_parse.go:1382 if data[p] == 46 { goto st11 } @@ -1610,7 +1396,7 @@ tr12: } goto st0 tr14: -//line msg_parse.rl:107 +//line msg_parse.rl:99 msg.VersionMinor = msg.VersionMinor * 10 + (data[p] - 0x30) @@ -1620,7 +1406,7 @@ tr14: goto _test_eof12 } st_case_12: -//line msg_parse.go:1624 +//line msg_parse.go:1410 if data[p] == 13 { goto st13 } @@ -1629,7 +1415,7 @@ tr14: } goto st0 tr36: -//line msg_parse.rl:120 +//line msg_parse.rl:112 msg.Phrase = string(buf[0:amt]) @@ -1639,28 +1425,31 @@ tr36: goto _test_eof13 } st_case_13: -//line msg_parse.go:1643 +//line msg_parse.go:1429 if data[p] == 10 { goto tr16 } goto st0 tr16: -//line msg_parse.rl:238 - line++; linep = p; -//line msg_parse.rl:129 +//line msg_parse.rl:50 + + line++ + linep = p + 1 + +//line msg_parse.rl:116 - {goto st145 } + {goto st51 } - goto st634 - st634: + goto st542 + st542: if p++; p == pe { - goto _test_eof634 + goto _test_eof542 } - st_case_634: -//line msg_parse.go:1661 + st_case_542: +//line msg_parse.go:1450 goto st0 tr2: -//line msg_parse.rl:59 +//line msg_parse.rl:55 mark = p @@ -1670,7 +1459,7 @@ tr2: goto _test_eof14 } st_case_14: -//line msg_parse.go:1674 +//line msg_parse.go:1463 switch data[p] { case 32: goto tr3 @@ -1797,7 +1586,7 @@ tr2: } goto st0 tr20: -//line msg_parse.rl:103 +//line msg_parse.rl:95 msg.VersionMajor = msg.VersionMajor * 10 + (data[p] - 0x30) @@ -1807,7 +1596,7 @@ tr20: goto _test_eof18 } st_case_18: -//line msg_parse.go:1811 +//line msg_parse.go:1600 if data[p] == 46 { goto st19 } @@ -1825,7 +1614,7 @@ tr20: } goto st0 tr22: -//line msg_parse.rl:107 +//line msg_parse.rl:99 msg.VersionMinor = msg.VersionMinor * 10 + (data[p] - 0x30) @@ -1835,7 +1624,7 @@ tr22: goto _test_eof20 } st_case_20: -//line msg_parse.go:1839 +//line msg_parse.go:1628 if data[p] == 32 { goto st21 } @@ -1853,7 +1642,7 @@ tr22: } goto st0 tr24: -//line msg_parse.rl:116 +//line msg_parse.rl:108 msg.Status = msg.Status * 10 + (int(data[p]) - 0x30) @@ -1863,13 +1652,13 @@ tr24: goto _test_eof22 } st_case_22: -//line msg_parse.go:1867 +//line msg_parse.go:1656 if 48 <= data[p] && data[p] <= 57 { goto tr25 } goto st0 tr25: -//line msg_parse.rl:116 +//line msg_parse.rl:108 msg.Status = msg.Status * 10 + (int(data[p]) - 0x30) @@ -1879,13 +1668,13 @@ tr25: goto _test_eof23 } st_case_23: -//line msg_parse.go:1883 +//line msg_parse.go:1672 if 48 <= data[p] && data[p] <= 57 { goto tr26 } goto st0 tr26: -//line msg_parse.rl:116 +//line msg_parse.rl:108 msg.Status = msg.Status * 10 + (int(data[p]) - 0x30) @@ -1895,7 +1684,7 @@ tr26: goto _test_eof24 } st_case_24: -//line msg_parse.go:1899 +//line msg_parse.go:1688 if data[p] == 32 { goto st25 } @@ -1959,25 +1748,25 @@ tr26: } goto st0 tr28: -//line msg_parse.rl:63 +//line msg_parse.rl:59 amt = 0 -//line msg_parse.rl:67 +//line msg_parse.rl:63 buf[amt] = data[p] amt++ goto st26 tr35: -//line msg_parse.rl:67 +//line msg_parse.rl:63 buf[amt] = data[p] amt++ goto st26 tr44: -//line msg_parse.rl:89 +//line msg_parse.rl:81 hex += unhex(data[p]) buf[amt] = hex @@ -1989,7 +1778,7 @@ tr44: goto _test_eof26 } st_case_26: -//line msg_parse.go:1993 +//line msg_parse.go:1782 switch data[p] { case 9: goto tr35 @@ -2046,7 +1835,7 @@ tr44: } goto st0 tr29: -//line msg_parse.rl:63 +//line msg_parse.rl:59 amt = 0 @@ -2056,7 +1845,7 @@ tr29: goto _test_eof27 } st_case_27: -//line msg_parse.go:2060 +//line msg_parse.go:1849 switch { case data[p] < 65: if 48 <= data[p] && data[p] <= 57 { @@ -2071,7 +1860,7 @@ tr29: } goto st0 tr43: -//line msg_parse.rl:85 +//line msg_parse.rl:77 hex = unhex(data[p]) * 16 @@ -2081,7 +1870,7 @@ tr43: goto _test_eof28 } st_case_28: -//line msg_parse.go:2085 +//line msg_parse.go:1874 switch { case data[p] < 65: if 48 <= data[p] && data[p] <= 57 { @@ -2096,18 +1885,18 @@ tr43: } goto st0 tr30: -//line msg_parse.rl:63 +//line msg_parse.rl:59 amt = 0 -//line msg_parse.rl:67 +//line msg_parse.rl:63 buf[amt] = data[p] amt++ goto st29 tr38: -//line msg_parse.rl:67 +//line msg_parse.rl:63 buf[amt] = data[p] amt++ @@ -2118,24 +1907,24 @@ tr38: goto _test_eof29 } st_case_29: -//line msg_parse.go:2122 +//line msg_parse.go:1911 if 128 <= data[p] && data[p] <= 191 { goto tr35 } goto st0 tr31: -//line msg_parse.rl:63 +//line msg_parse.rl:59 amt = 0 -//line msg_parse.rl:67 +//line msg_parse.rl:63 buf[amt] = data[p] amt++ goto st30 tr39: -//line msg_parse.rl:67 +//line msg_parse.rl:63 buf[amt] = data[p] amt++ @@ -2146,24 +1935,24 @@ tr39: goto _test_eof30 } st_case_30: -//line msg_parse.go:2150 +//line msg_parse.go:1939 if 128 <= data[p] && data[p] <= 191 { goto tr38 } goto st0 tr32: -//line msg_parse.rl:63 +//line msg_parse.rl:59 amt = 0 -//line msg_parse.rl:67 +//line msg_parse.rl:63 buf[amt] = data[p] amt++ goto st31 tr40: -//line msg_parse.rl:67 +//line msg_parse.rl:63 buf[amt] = data[p] amt++ @@ -2174,24 +1963,24 @@ tr40: goto _test_eof31 } st_case_31: -//line msg_parse.go:2178 +//line msg_parse.go:1967 if 128 <= data[p] && data[p] <= 191 { goto tr39 } goto st0 tr33: -//line msg_parse.rl:63 +//line msg_parse.rl:59 amt = 0 -//line msg_parse.rl:67 +//line msg_parse.rl:63 buf[amt] = data[p] amt++ goto st32 tr41: -//line msg_parse.rl:67 +//line msg_parse.rl:63 buf[amt] = data[p] amt++ @@ -2202,24 +1991,24 @@ tr41: goto _test_eof32 } st_case_32: -//line msg_parse.go:2206 +//line msg_parse.go:1995 if 128 <= data[p] && data[p] <= 191 { goto tr40 } goto st0 tr34: -//line msg_parse.rl:63 +//line msg_parse.rl:59 amt = 0 -//line msg_parse.rl:67 +//line msg_parse.rl:63 buf[amt] = data[p] amt++ goto st33 tr42: -//line msg_parse.rl:67 +//line msg_parse.rl:63 buf[amt] = data[p] amt++ @@ -2230,7 +2019,7 @@ tr42: goto _test_eof33 } st_case_33: -//line msg_parse.go:2234 +//line msg_parse.go:2023 if 128 <= data[p] && data[p] <= 191 { goto tr41 } @@ -2243,69 +2032,49 @@ tr42: _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: goto tr45 - 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 269: + goto tr51 case 525: - goto tr50 + goto tr52 } switch { - case _widec < 48: + case _widec < 224: switch { - case _widec > 43: - if 45 <= _widec && _widec <= 46 { + case _widec > 127: + if 192 <= _widec && _widec <= 223 { goto tr46 } - case _widec >= 42: - goto tr46 + case _widec >= 32: + goto tr45 } - case _widec > 57: + case _widec > 239: switch { - case _widec < 95: - if 65 <= _widec && _widec <= 90 { - goto tr49 + case _widec < 248: + if 240 <= _widec && _widec <= 247 { + goto tr48 } - case _widec > 96: - if 97 <= _widec && _widec <= 122 { - goto tr49 + case _widec > 251: + if 252 <= _widec && _widec <= 253 { + goto tr50 } default: - goto tr46 + goto tr49 } default: - goto tr46 + goto tr47 } goto st0 tr45: -//line msg_parse.rl:174 - - addr = new(Addr) - -//line msg_parse.rl:63 - - amt = 0 - -//line msg_parse.rl:178 +//line msg_parse.rl:55 - addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + mark = p goto st35 st35: @@ -2313,99 +2082,69 @@ tr45: goto _test_eof35 } st_case_35: -//line msg_parse.go:2317 +//line msg_parse.go:2086 _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: goto st35 - case 32: - goto st35 - case 34: - goto st36 - case 60: - goto st39 - case 525: - 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 269: + goto st41 case 525: - goto tr63 + goto st42 } switch { case _widec < 224: switch { - case _widec > 126: + case _widec > 127: if 192 <= _widec && _widec <= 223 { - goto tr58 + goto st36 } case _widec >= 32: - goto tr55 + goto st35 } case _widec > 239: switch { case _widec < 248: if 240 <= _widec && _widec <= 247 { - goto tr60 + goto st38 } case _widec > 251: if 252 <= _widec && _widec <= 253 { - goto tr62 + goto st40 } default: - goto tr61 + goto st39 } default: - goto tr59 + goto st37 } goto st0 -tr55: -//line msg_parse.rl:63 - - amt = 0 - -//line msg_parse.rl:67 +tr46: +//line msg_parse.rl:55 - buf[amt] = data[p] - amt++ + mark = p - goto st37 -tr64: -//line msg_parse.rl:67 + goto st36 + st36: + if p++; p == pe { + goto _test_eof36 + } + st_case_36: +//line msg_parse.go:2140 + if 128 <= data[p] && data[p] <= 191 { + goto st35 + } + goto st0 +tr47: +//line msg_parse.rl:55 - buf[amt] = data[p] - amt++ + mark = p goto st37 st37: @@ -2413,61 +2152,15 @@ tr64: goto _test_eof37 } st_case_37: -//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 +//line msg_parse.go:2156 + if 128 <= data[p] && data[p] <= 191 { + goto st36 } goto st0 -tr56: -//line msg_parse.rl:63 - - amt = 0 - - goto st38 -tr73: -//line msg_parse.rl:178 +tr48: +//line msg_parse.rl:55 - addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + mark = p goto st38 st38: @@ -2475,54 +2168,15 @@ tr73: goto _test_eof38 } st_case_38: -//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 +//line msg_parse.go:2172 + if 128 <= data[p] && data[p] <= 191 { + goto st37 } goto st0 -tr48: -//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 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 +tr49: +//line msg_parse.rl:55 - addr.Display = strings.TrimRight(string(buf[0:amt]), " \t\r\n") + mark = p goto st39 st39: @@ -2530,18 +2184,13 @@ tr94: goto _test_eof39 } st_case_39: -//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 +//line msg_parse.go:2188 + if 128 <= data[p] && data[p] <= 191 { + goto st38 } goto st0 -tr76: -//line msg_parse.rl:59 +tr50: +//line msg_parse.rl:55 mark = p @@ -2551,3985 +2200,41 @@ tr76: goto _test_eof40 } st_case_40: -//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 - st41: - if p++; p == pe { - goto _test_eof41 - } - st_case_41: - switch data[p] { - case 33: - goto st42 - case 61: - goto st42 - case 95: - goto st42 - case 126: - goto st42 - } - 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 - } - goto st0 - st42: - if p++; p == pe { - goto _test_eof42 - } - st_case_42: - switch data[p] { - case 33: - goto st42 - case 62: - goto tr80 - case 95: - goto st42 - case 126: - goto st42 - } - 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 - } - goto st0 -tr80: -//line msg_parse.rl:182 - - addr.Uri, err = ParseURIBytes(data[mark:p]) - if err != nil { return nil, err } - - 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: -//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 - } - } - 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 -tr86: -//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 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: - if p++; p == pe { - goto _test_eof44 - } - st_case_44: -//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 tr86 - 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 tr88 - } - 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 st0 -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 - - buf[amt] = ' ' - amt++ - -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st45 - st45: - if p++; p == pe { - goto _test_eof45 - } - st_case_45: -//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 st46 - case 32: - 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 -tr92: -//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 st46 - st46: - if p++; p == pe { - goto _test_eof46 - } - st_case_46: -//line msg_parse.go:2909 - _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 tr92 - case 32: - 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 tr95 - } - 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 st0 -tr95: -//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 st47 - st47: - if p++; p == pe { - goto _test_eof47 - } - st_case_47: -//line msg_parse.go:2974 - if data[p] == 10 { - goto tr96 - } - goto st0 -tr96: -//line msg_parse.rl:238 - line++; linep = p; - goto st48 - st48: - if p++; p == pe { - goto _test_eof48 - } - st_case_48: -//line msg_parse.go:2988 - switch data[p] { - case 9: - goto st49 - case 32: - 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: -//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 tr98 - case 32: - 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 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 9: - goto st52 - case 32: - goto st52 - } - goto st0 - st52: - if p++; p == pe { - goto _test_eof52 - } - st_case_52: - switch data[p] { - case 9: - goto st52 - case 32: - goto st52 - case 60: - goto st39 - } - goto st0 -tr102: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st53 -tr87: -//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 st53 - st53: - if p++; p == pe { - goto _test_eof53 - } - st_case_53: -//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 st46 - case 32: - 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 - st54: - if p++; p == pe { - goto _test_eof54 - } - st_case_54: - 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) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto tr105 - case 32: - 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 tr108 - case 525: - goto tr109 - } - switch { - case _widec < 63: - if 36 <= _widec && _widec <= 58 { - goto st55 - } - case _widec > 90: - if 97 <= _widec && _widec <= 122 { - goto st55 - } - default: - goto st55 - } - goto st0 -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: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 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: -//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 st0 -tr113: -//line msg_parse.rl:59 - - mark = p - - goto st58 - st58: - if p++; p == pe { - goto _test_eof58 - } - st_case_58: -//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 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: -//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 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: -//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 - } - } - 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: -//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 - } - } - switch _widec { - case 9: - goto tr128 - case 32: - 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 - } - 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 - } - 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 - } - goto st0 - st64: - if p++; p == pe { - goto _test_eof64 - } - st_case_64: - switch data[p] { - case 9: - goto st64 - case 32: - goto st64 - case 44: - goto st44 - case 59: - goto st57 - } - goto st0 - st65: - if p++; p == pe { - goto _test_eof65 - } - st_case_65: - _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 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: -//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 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: -//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 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 9: - goto st69 - case 32: - goto st69 - } - 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: -//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 st0 -tr139: -//line msg_parse.rl:63 - - amt = 0 - - goto st70 - st70: - if p++; p == pe { - goto _test_eof70 - } - st_case_70: -//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 -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: -//line msg_parse.go:4161 - if 128 <= data[p] && data[p] <= 191 { - goto tr146 - } - 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: -//line msg_parse.go:4189 - if 128 <= data[p] && data[p] <= 191 { - goto tr149 - } - 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: -//line msg_parse.go:4217 - if 128 <= data[p] && data[p] <= 191 { - goto tr150 - } - 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: -//line msg_parse.go:4245 - if 128 <= data[p] && data[p] <= 191 { - goto tr151 - } - 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: -//line msg_parse.go:4273 - if 128 <= data[p] && data[p] <= 191 { - goto tr152 - } - goto st0 -tr145: -//line msg_parse.rl:63 - - amt = 0 - - goto st76 - st76: - if p++; p == pe { - goto _test_eof76 - } - st_case_76: -//line msg_parse.go:4289 - if data[p] == 10 { - goto tr159 - } - 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 9: - goto tr146 - case 32: - goto tr146 - } - goto st0 - st78: - if p++; p == pe { - goto _test_eof78 - } - st_case_78: - 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 9: - goto st80 - case 32: - goto st80 - } - goto st0 - st80: - if p++; p == pe { - goto _test_eof80 - } - st_case_80: - _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 - } - 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: - if data[p] == 10 { - goto tr163 - } - 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 9: - goto st83 - case 32: - goto st83 - } - goto st0 - st83: - if p++; p == pe { - goto _test_eof83 - } - st_case_83: - switch data[p] { - case 9: - goto st83 - case 32: - goto st83 - case 34: - goto st65 - } - goto st0 - st84: - if p++; p == pe { - goto _test_eof84 - } - st_case_84: - if data[p] == 10 { - goto tr165 - } - 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 9: - goto st86 - case 32: - goto st86 - } - goto st0 - st86: - if p++; p == pe { - goto _test_eof86 - } - st_case_86: - switch data[p] { - case 9: - goto st86 - case 32: - 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 9: - goto st86 - case 32: - goto st86 - } - goto st0 - st88: - if p++; p == pe { - goto _test_eof88 - } - st_case_88: - if data[p] == 10 { - goto tr168 - } - 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 9: - goto st90 - case 32: - goto st90 - } - goto st0 - st90: - if p++; p == pe { - goto _test_eof90 - } - st_case_90: - switch data[p] { - 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 9: - goto st64 - case 32: - goto st64 - } - 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: -//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 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: -//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 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: -//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 9: - goto st97 - case 32: - goto st97 - } - 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: -//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 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: -//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 9: - goto st100 - case 32: - goto st100 - } - goto st0 - st100: - if p++; p == pe { - goto _test_eof100 - } - st_case_100: - switch data[p] { - 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: -//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 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: -//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 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: -//line msg_parse.go:5216 - if data[p] == 10 { - goto tr187 - } - 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 9: - goto st105 - case 32: - goto st105 - } - 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: -//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 tr189 - case 32: - 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 9: - goto st105 - case 32: - goto st105 - } - 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: -//line msg_parse.go:5410 - if data[p] == 10 { - goto tr191 - } - 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_eof640 - } - st_case_640: -//line msg_parse.go:5428 - switch data[p] { - 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 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 9: - goto st110 - case 32: - goto st110 - } - 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: -//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 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 9: - goto st112 - case 32: - goto st112 - } - 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: -//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 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: -//line msg_parse.go:5643 - if data[p] == 10 { - goto tr198 - } - 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 9: - goto st115 - case 32: - goto st115 - } - 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: -//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 st0 -tr57: -//line msg_parse.rl:63 - - amt = 0 - - goto st116 - st116: - if p++; p == pe { - goto _test_eof116 - } - st_case_116: -//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 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: -//line msg_parse.go:5743 - if 128 <= data[p] && data[p] <= 191 { - goto tr64 - } - 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: -//line msg_parse.go:5771 - if 128 <= data[p] && data[p] <= 191 { - goto tr67 - } - 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: -//line msg_parse.go:5799 - if 128 <= data[p] && data[p] <= 191 { - goto tr68 - } - 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: -//line msg_parse.go:5827 - if 128 <= data[p] && data[p] <= 191 { - goto tr69 - } - 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: -//line msg_parse.go:5855 - if 128 <= data[p] && data[p] <= 191 { - goto tr70 - } - goto st0 -tr63: -//line msg_parse.rl:63 - - amt = 0 - - goto st122 - st122: - if p++; p == pe { - goto _test_eof122 - } - st_case_122: -//line msg_parse.go:5871 - if data[p] == 10 { - goto tr202 - } - 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 tr64 - case 32: - 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: -//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 st0 - st125: - if p++; p == pe { - goto _test_eof125 - } - st_case_125: - switch data[p] { - case 33: - goto st126 - 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 st0 - st126: - if p++; p == pe { - goto _test_eof126 - } - st_case_126: - _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 tr105 - case 32: - 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 -tr206: -//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 st127 - st127: - if p++; p == pe { - goto _test_eof127 - } - 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) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto tr207 - case 32: - goto tr207 - case 33: - goto tr208 - case 34: - goto tr47 - case 37: - goto tr208 - case 39: - goto tr208 - case 44: - goto tr206 - 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 tr214 - } - case _widec >= 33: - goto tr213 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr216 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr218 - } - default: - goto tr217 - } - default: - goto tr215 - } - goto st0 -tr212: -//line msg_parse.rl:59 - - mark = p - - 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_eof130 - } - 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) - if p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') { - _widec += 256 - } - } - switch _widec { - case 9: - goto st130 - case 32: - goto st130 - case 269: - goto st136 - case 525: - goto st137 - } - switch { - case _widec < 224: - switch { - case _widec > 127: - if 192 <= _widec && _widec <= 223 { - goto tr223 - } - case _widec >= 33: - goto tr222 - } - case _widec > 239: - switch { - case _widec < 248: - if 240 <= _widec && _widec <= 247 { - goto tr225 - } - case _widec > 251: - if 252 <= _widec && _widec <= 253 { - goto tr227 - } - default: - goto tr226 - } - default: - goto tr224 - } - goto st0 -tr223: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st131 -tr214: -//line msg_parse.rl:59 - - mark = p - -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st131 - st131: - if p++; p == pe { - goto _test_eof131 - } - st_case_131: -//line msg_parse.go:6393 - if 128 <= data[p] && data[p] <= 191 { - goto tr222 - } - goto st0 -tr224: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st132 -tr215: -//line msg_parse.rl:59 - - mark = p - -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st132 - st132: - if p++; p == pe { - goto _test_eof132 - } - st_case_132: -//line msg_parse.go:6421 - if 128 <= data[p] && data[p] <= 191 { - goto tr223 - } - goto st0 -tr225: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st133 -tr216: -//line msg_parse.rl:59 - - mark = p - -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st133 - st133: - if p++; p == pe { - goto _test_eof133 - } - st_case_133: -//line msg_parse.go:6449 - if 128 <= data[p] && data[p] <= 191 { - goto tr224 - } - goto st0 -tr226: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st134 -tr217: -//line msg_parse.rl:59 - - mark = p - -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st134 - st134: - if p++; p == pe { - goto _test_eof134 - } - st_case_134: -//line msg_parse.go:6477 - if 128 <= data[p] && data[p] <= 191 { - goto tr225 +//line msg_parse.go:2204 + if 128 <= data[p] && data[p] <= 191 { + goto st39 } goto st0 -tr227: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st135 -tr218: -//line msg_parse.rl:59 +tr51: +//line msg_parse.rl:55 mark = p -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st135 - st135: + goto st41 + st41: if p++; p == pe { - goto _test_eof135 + goto _test_eof41 } - st_case_135: -//line msg_parse.go:6505 - if 128 <= data[p] && data[p] <= 191 { - goto tr226 + st_case_41: +//line msg_parse.go:2220 + if data[p] == 10 { + goto tr61 } goto st0 -tr219: -//line msg_parse.rl:59 +tr61: +//line msg_parse.rl:50 - mark = p + line++ + linep = p + 1 - 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:238 - line++; linep = p; -//line msg_parse.rl:153 +//line msg_parse.rl:140 { b := data[mark:p - 1] if value != nil { *value = string(b) + } else if addr != nil { + *addr, err = ParseAddrBytes(b, *addr) + if err != nil { return nil, err } } else { if msg.Headers == nil { msg.Headers = Headers{} @@ -6537,8066 +2242,7928 @@ tr230: msg.Headers[name] = string(b) } } -//line msg_parse.rl:129 +//line msg_parse.rl:116 - {goto st145 } + {goto st51 } - goto st642 - st642: + goto st543 + st543: if p++; p == pe { - goto _test_eof642 + goto _test_eof543 } - st_case_642: -//line msg_parse.go:6551 + st_case_543: +//line msg_parse.go:2256 goto st0 -tr220: -//line msg_parse.rl:59 +tr52: +//line msg_parse.rl:55 mark = p - goto st137 - st137: + goto st42 + st42: if p++; p == pe { - goto _test_eof137 + goto _test_eof42 } - st_case_137: -//line msg_parse.go:6564 + st_case_42: +//line msg_parse.go:2269 if data[p] == 10 { - goto tr231 + goto tr62 } goto st0 -tr231: -//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 +tr62: +//line msg_parse.rl:50 - {goto st145 } + line++ + linep = p + 1 - goto st643 - st643: + goto st43 + st43: if p++; p == pe { - goto _test_eof643 + goto _test_eof43 } - st_case_643: -//line msg_parse.go:6594 + st_case_43: +//line msg_parse.go:2286 switch data[p] { case 9: - goto st130 + goto st35 case 32: - goto st130 + goto st35 } goto st0 - st138: + st44: if p++; p == pe { - goto _test_eof138 + goto _test_eof44 } - st_case_138: + st_case_44: switch data[p] { case 33: - goto tr232 + goto tr63 case 37: - goto tr232 + goto tr63 case 39: - goto tr232 + goto tr63 case 126: - goto tr232 + goto tr63 } switch { case data[p] < 48: switch { case data[p] > 43: if 45 <= data[p] && data[p] <= 46 { - goto tr232 + goto tr63 } case data[p] >= 42: - goto tr232 + goto tr63 } case data[p] > 57: switch { case data[p] > 90: if 95 <= data[p] && data[p] <= 122 { - goto tr232 + goto tr63 } case data[p] >= 65: - goto tr232 + goto tr63 } default: - goto tr232 + goto tr63 } goto st0 -tr232: -//line msg_parse.rl:59 +tr63: +//line msg_parse.rl:55 mark = p - goto st139 - st139: + goto st45 + st45: if p++; p == pe { - goto _test_eof139 + goto _test_eof45 } - st_case_139: -//line msg_parse.go:6651 + st_case_45: +//line msg_parse.go:2343 switch data[p] { case 9: - goto tr233 + goto tr64 case 32: - goto tr233 + goto tr64 case 33: - goto st139 + goto st45 case 37: - goto st139 + goto st45 case 39: - goto st139 + goto st45 case 58: - goto tr235 + goto tr66 case 126: - goto st139 + goto st45 } switch { case data[p] < 48: switch { case data[p] > 43: if 45 <= data[p] && data[p] <= 46 { - goto st139 + goto st45 } case data[p] >= 42: - goto st139 + goto st45 } case data[p] > 57: switch { case data[p] > 90: if 95 <= data[p] && data[p] <= 122 { - goto st139 + goto st45 } case data[p] >= 65: - goto st139 + goto st45 } default: - goto st139 + goto st45 } goto st0 -tr233: -//line msg_parse.rl:149 +tr64: +//line msg_parse.rl:136 name = string(data[mark:p]) - goto st140 - st140: + goto st46 + st46: if p++; p == pe { - goto _test_eof140 + goto _test_eof46 } - st_case_140: -//line msg_parse.go:6702 + st_case_46: +//line msg_parse.go:2394 switch data[p] { case 9: - goto st140 + goto st46 case 32: - goto st140 + goto st46 case 58: - goto st141 + goto st47 } goto st0 -tr235: -//line msg_parse.rl:149 +tr66: +//line msg_parse.rl:136 name = string(data[mark:p]) - goto st141 - st141: + goto st47 + st47: if p++; p == pe { - goto _test_eof141 + goto _test_eof47 } - st_case_141: -//line msg_parse.go:6723 + st_case_47: +//line msg_parse.go:2415 _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st141 + goto st47 case 32: - goto st141 + goto st47 case 269: - goto tr238 + goto tr69 case 525: - goto st142 + goto st48 } switch { case _widec > 12: if 14 <= _widec { - goto tr238 + goto tr69 } default: - goto tr238 + goto tr69 } goto st0 -tr238: -//line msg_parse.rl:373 -value=nil -//line msg_parse.rl:133 +tr69: +//line msg_parse.rl:351 +value=nil;addr=nil +//line msg_parse.rl:120 p-- - {goto st129 } + {goto st34 } - goto st644 - st644: + goto st544 + st544: if p++; p == pe { - goto _test_eof644 + goto _test_eof544 } - st_case_644: -//line msg_parse.go:6765 + st_case_544: +//line msg_parse.go:2457 goto st0 - st142: + st48: if p++; p == pe { - goto _test_eof142 + goto _test_eof48 } - st_case_142: + st_case_48: if data[p] == 10 { - goto tr240 + goto tr71 } goto st0 -tr240: -//line msg_parse.rl:238 - line++; linep = p; - goto st143 - st143: +tr71: +//line msg_parse.rl:50 + + line++ + linep = p + 1 + + goto st49 + st49: if p++; p == pe { - goto _test_eof143 + goto _test_eof49 } - st_case_143: -//line msg_parse.go:6785 + st_case_49: +//line msg_parse.go:2480 switch data[p] { case 9: - goto st144 + goto st50 case 32: - goto st144 + goto st50 } goto st0 - st144: + st50: if p++; p == pe { - goto _test_eof144 + goto _test_eof50 } - st_case_144: + st_case_50: switch data[p] { case 9: - goto st144 + goto st50 case 32: - goto st144 + goto st50 } - goto tr238 - st145: + goto tr69 + st51: if p++; p == pe { - goto _test_eof145 + goto _test_eof51 } - st_case_145: + st_case_51: switch data[p] { case 13: - goto st146 + goto st52 case 65: - goto tr244 + goto tr75 case 66: - goto tr245 + goto tr76 case 67: - goto tr246 + goto tr77 case 68: - goto tr247 + goto tr78 case 69: - goto tr248 + goto tr79 case 70: - goto tr249 + goto tr80 case 73: - goto tr250 + goto tr81 case 75: - goto tr251 + goto tr82 case 76: - goto st372 + goto st279 case 77: - goto tr253 + goto tr84 case 79: - goto tr254 + goto tr85 case 80: - goto tr255 + goto tr86 case 82: - goto tr256 + goto tr87 case 83: - goto tr257 + goto tr88 case 84: - goto tr258 + goto tr89 case 85: - goto tr259 + goto tr90 case 86: - goto st598 + goto st505 case 87: - goto tr261 + goto tr92 case 97: - goto tr244 + goto tr75 case 98: - goto tr245 + goto tr76 case 99: - goto tr246 + goto tr77 case 100: - goto tr247 + goto tr78 case 101: - goto tr248 + goto tr79 case 102: - goto tr249 + goto tr80 case 105: - goto tr250 + goto tr81 case 107: - goto tr251 + goto tr82 case 108: - goto st372 + goto st279 case 109: - goto tr253 + goto tr84 case 111: - goto tr254 + goto tr85 case 112: - goto tr255 + goto tr86 case 114: - goto tr256 + goto tr87 case 115: - goto tr257 + goto tr88 case 116: - goto tr258 + goto tr89 case 117: - goto tr259 + goto tr90 case 118: - goto st598 + goto st505 case 119: - goto tr261 + goto tr92 } - goto tr242 - st146: + goto tr73 + st52: if p++; p == pe { - goto _test_eof146 + goto _test_eof52 } - st_case_146: + st_case_52: if data[p] == 10 { - goto tr262 + goto tr93 } goto st0 -tr387: -//line msg_parse.rl:238 - line++; linep = p; -//line msg_parse.rl:129 +tr217: +//line msg_parse.rl:50 - {goto st145 } + line++ + linep = p + 1 - goto st645 -tr262: -//line msg_parse.rl:238 - line++; linep = p; -//line msg_parse.rl:55 +//line msg_parse.rl:116 + + {goto st51 } + + goto st545 +tr93: +//line msg_parse.rl:50 + + line++ + linep = p + 1 + +//line msg_parse.rl:46 - {p++; cs = 645; goto _out } + {p++; cs = 545; goto _out } - goto st645 -tr270: -//line msg_parse.rl:133 + goto st545 +tr101: +//line msg_parse.rl:355 +addr=nil +//line msg_parse.rl:120 p-- - {goto st129 } + {goto st34 } - goto st645 -tr421: -//line msg_parse.rl:124 + goto st545 +tr251: +//line msg_parse.rl:354 +value=nil +//line msg_parse.rl:120 p-- {goto st34 } - goto st645 - st645: + goto st545 + st545: if p++; p == pe { - goto _test_eof645 + goto _test_eof545 } - st_case_645: -//line msg_parse.go:6933 + st_case_545: +//line msg_parse.go:2638 goto st0 -tr244: -//line msg_parse.rl:59 +tr75: +//line msg_parse.rl:55 mark = p - goto st147 - st147: + goto st53 + st53: if p++; p == pe { - goto _test_eof147 + goto _test_eof53 } - st_case_147: -//line msg_parse.go:6946 + st_case_53: +//line msg_parse.go:2651 switch data[p] { case 9: - goto tr263 + goto tr94 case 32: - goto tr263 + goto tr94 case 58: - goto tr264 + goto tr95 case 67: - goto st153 + goto st59 case 76: - goto st182 + goto st88 case 85: - goto st201 + goto st107 case 99: - goto st153 + goto st59 case 108: - goto st182 + goto st88 case 117: - goto st201 + goto st107 } goto st0 -tr263: -//line msg_parse.rl:334 +tr94: +//line msg_parse.rl:302 value=&msg.AcceptContact - goto st148 -tr279: -//line msg_parse.rl:333 + goto st54 +tr110: +//line msg_parse.rl:301 value=&msg.Accept - goto st148 -tr298: -//line msg_parse.rl:335 + goto st54 +tr129: +//line msg_parse.rl:303 value=&msg.AcceptEncoding - goto st148 -tr307: -//line msg_parse.rl:336 + goto st54 +tr138: +//line msg_parse.rl:304 value=&msg.AcceptLanguage - goto st148 -tr318: -//line msg_parse.rl:339 + goto st54 +tr149: +//line msg_parse.rl:307 value=&msg.AlertInfo - goto st148 -tr322: -//line msg_parse.rl:337 + goto st54 +tr153: +//line msg_parse.rl:305 value=&msg.Allow - goto st148 -tr331: -//line msg_parse.rl:338 + goto st54 +tr162: +//line msg_parse.rl:306 value=&msg.AllowEvents - goto st148 -tr351: -//line msg_parse.rl:340 + goto st54 +tr182: +//line msg_parse.rl:308 value=&msg.AuthenticationInfo - goto st148 -tr361: -//line msg_parse.rl:341 + goto st54 +tr192: +//line msg_parse.rl:309 value=&msg.Authorization - goto st148 -tr363: -//line msg_parse.rl:358 + goto st54 +tr194: +//line msg_parse.rl:326 value=&msg.ReferredBy - goto st148 -tr409: -//line msg_parse.rl:345 + goto st54 +tr239: +//line msg_parse.rl:313 value=&msg.CallInfo - goto st148 -tr442: -//line msg_parse.rl:342 + goto st54 +tr272: +//line msg_parse.rl:310 value=&msg.ContentDisposition - goto st148 -tr451: -//line msg_parse.rl:344 + goto st54 +tr281: +//line msg_parse.rl:312 value=&msg.ContentEncoding - goto st148 -tr461: -//line msg_parse.rl:343 + goto st54 +tr291: +//line msg_parse.rl:311 value=&msg.ContentLanguage - goto st148 -tr494: -//line msg_parse.rl:346 + goto st54 +tr324: +//line msg_parse.rl:314 value=&msg.Date - goto st148 -tr507: -//line msg_parse.rl:347 + goto st54 +tr337: +//line msg_parse.rl:315 value=&msg.ErrorInfo - goto st148 -tr512: -//line msg_parse.rl:348 + goto st54 +tr342: +//line msg_parse.rl:316 value=&msg.Event - goto st148 -tr540: -//line msg_parse.rl:349 + goto st54 +tr370: +//line msg_parse.rl:317 value=&msg.InReplyTo - goto st148 -tr542: -//line msg_parse.rl:363 + goto st54 +tr372: +//line msg_parse.rl:331 value=&msg.Supported - goto st148 -tr579: -//line msg_parse.rl:351 + goto st54 +tr409: +//line msg_parse.rl:319 value=&msg.MIMEVersion - goto st148 -tr606: -//line msg_parse.rl:352 + goto st54 +tr436: +//line msg_parse.rl:320 value=&msg.Organization - goto st148 -tr636: -//line msg_parse.rl:353 + goto st54 +tr466: +//line msg_parse.rl:321 value=&msg.Priority - goto st148 -tr655: -//line msg_parse.rl:354 + goto st54 +tr485: +//line msg_parse.rl:322 value=&msg.ProxyAuthenticate - goto st148 -tr665: -//line msg_parse.rl:355 + goto st54 +tr495: +//line msg_parse.rl:323 value=&msg.ProxyAuthorization - goto st148 -tr673: -//line msg_parse.rl:356 + goto st54 +tr503: +//line msg_parse.rl:324 value=&msg.ProxyRequire - goto st148 -tr675: -//line msg_parse.rl:357 + goto st54 +tr505: +//line msg_parse.rl:325 value=&msg.ReferTo - goto st148 -tr726: -//line msg_parse.rl:350 + goto st54 +tr556: +//line msg_parse.rl:318 value=&msg.ReplyTo - goto st148 -tr732: -//line msg_parse.rl:359 + goto st54 +tr562: +//line msg_parse.rl:327 value=&msg.Require - goto st148 -tr742: -//line msg_parse.rl:360 + goto st54 +tr572: +//line msg_parse.rl:328 value=&msg.RetryAfter - goto st148 -tr749: -//line msg_parse.rl:362 + goto st54 +tr579: +//line msg_parse.rl:330 value=&msg.Subject - goto st148 -tr757: -//line msg_parse.rl:361 + goto st54 +tr587: +//line msg_parse.rl:329 value=&msg.Server - goto st148 -tr782: -//line msg_parse.rl:364 + goto st54 +tr612: +//line msg_parse.rl:332 value=&msg.Timestamp - goto st148 -tr784: -//line msg_parse.rl:337 + goto st54 +tr614: +//line msg_parse.rl:305 value=&msg.Allow -//line msg_parse.rl:338 +//line msg_parse.rl:306 value=&msg.AllowEvents - goto st148 -tr797: -//line msg_parse.rl:365 + goto st54 +tr627: +//line msg_parse.rl:333 value=&msg.Unsupported - goto st148 -tr807: -//line msg_parse.rl:366 + goto st54 +tr637: +//line msg_parse.rl:334 value=&msg.UserAgent - goto st148 -tr840: -//line msg_parse.rl:367 + goto st54 +tr669: +//line msg_parse.rl:335 value=&msg.Warning - goto st148 -tr856: -//line msg_parse.rl:368 + goto st54 +tr685: +//line msg_parse.rl:336 value=&msg.WWWAuthenticate - goto st148 - st148: + goto st54 + st54: if p++; p == pe { - goto _test_eof148 + goto _test_eof54 } - st_case_148: -//line msg_parse.go:7123 + st_case_54: +//line msg_parse.go:2828 switch data[p] { case 9: - goto st148 + goto st54 case 32: - goto st148 + goto st54 case 58: - goto st149 + goto st55 } goto st0 -tr264: -//line msg_parse.rl:334 +tr95: +//line msg_parse.rl:302 value=&msg.AcceptContact - goto st149 -tr281: -//line msg_parse.rl:333 + goto st55 +tr112: +//line msg_parse.rl:301 value=&msg.Accept - goto st149 -tr299: -//line msg_parse.rl:335 + goto st55 +tr130: +//line msg_parse.rl:303 value=&msg.AcceptEncoding - goto st149 -tr308: -//line msg_parse.rl:336 + goto st55 +tr139: +//line msg_parse.rl:304 value=&msg.AcceptLanguage - goto st149 -tr319: -//line msg_parse.rl:339 + goto st55 +tr150: +//line msg_parse.rl:307 value=&msg.AlertInfo - goto st149 -tr324: -//line msg_parse.rl:337 + goto st55 +tr155: +//line msg_parse.rl:305 value=&msg.Allow - goto st149 -tr332: -//line msg_parse.rl:338 + goto st55 +tr163: +//line msg_parse.rl:306 value=&msg.AllowEvents - goto st149 -tr352: -//line msg_parse.rl:340 + goto st55 +tr183: +//line msg_parse.rl:308 value=&msg.AuthenticationInfo - goto st149 -tr362: -//line msg_parse.rl:341 + goto st55 +tr193: +//line msg_parse.rl:309 value=&msg.Authorization - goto st149 -tr364: -//line msg_parse.rl:358 + goto st55 +tr195: +//line msg_parse.rl:326 value=&msg.ReferredBy - goto st149 -tr410: -//line msg_parse.rl:345 + goto st55 +tr240: +//line msg_parse.rl:313 value=&msg.CallInfo - goto st149 -tr443: -//line msg_parse.rl:342 + goto st55 +tr273: +//line msg_parse.rl:310 value=&msg.ContentDisposition - goto st149 -tr452: -//line msg_parse.rl:344 + goto st55 +tr282: +//line msg_parse.rl:312 value=&msg.ContentEncoding - goto st149 -tr462: -//line msg_parse.rl:343 + goto st55 +tr292: +//line msg_parse.rl:311 value=&msg.ContentLanguage - goto st149 -tr495: -//line msg_parse.rl:346 + goto st55 +tr325: +//line msg_parse.rl:314 value=&msg.Date - goto st149 -tr508: -//line msg_parse.rl:347 + goto st55 +tr338: +//line msg_parse.rl:315 value=&msg.ErrorInfo - goto st149 -tr513: -//line msg_parse.rl:348 + goto st55 +tr343: +//line msg_parse.rl:316 value=&msg.Event - goto st149 -tr541: -//line msg_parse.rl:349 + goto st55 +tr371: +//line msg_parse.rl:317 value=&msg.InReplyTo - goto st149 -tr543: -//line msg_parse.rl:363 + goto st55 +tr373: +//line msg_parse.rl:331 value=&msg.Supported - goto st149 -tr580: -//line msg_parse.rl:351 + goto st55 +tr410: +//line msg_parse.rl:319 value=&msg.MIMEVersion - goto st149 -tr607: -//line msg_parse.rl:352 + goto st55 +tr437: +//line msg_parse.rl:320 value=&msg.Organization - goto st149 -tr637: -//line msg_parse.rl:353 + goto st55 +tr467: +//line msg_parse.rl:321 value=&msg.Priority - goto st149 -tr656: -//line msg_parse.rl:354 + goto st55 +tr486: +//line msg_parse.rl:322 value=&msg.ProxyAuthenticate - goto st149 -tr666: -//line msg_parse.rl:355 + goto st55 +tr496: +//line msg_parse.rl:323 value=&msg.ProxyAuthorization - goto st149 -tr674: -//line msg_parse.rl:356 + goto st55 +tr504: +//line msg_parse.rl:324 value=&msg.ProxyRequire - goto st149 -tr676: -//line msg_parse.rl:357 + goto st55 +tr506: +//line msg_parse.rl:325 value=&msg.ReferTo - goto st149 -tr727: -//line msg_parse.rl:350 + goto st55 +tr557: +//line msg_parse.rl:318 value=&msg.ReplyTo - goto st149 -tr733: -//line msg_parse.rl:359 + goto st55 +tr563: +//line msg_parse.rl:327 value=&msg.Require - goto st149 -tr743: -//line msg_parse.rl:360 + goto st55 +tr573: +//line msg_parse.rl:328 value=&msg.RetryAfter - goto st149 -tr750: -//line msg_parse.rl:362 + goto st55 +tr580: +//line msg_parse.rl:330 value=&msg.Subject - goto st149 -tr758: -//line msg_parse.rl:361 + goto st55 +tr588: +//line msg_parse.rl:329 value=&msg.Server - goto st149 -tr783: -//line msg_parse.rl:364 + goto st55 +tr613: +//line msg_parse.rl:332 value=&msg.Timestamp - goto st149 -tr785: -//line msg_parse.rl:337 + goto st55 +tr615: +//line msg_parse.rl:305 value=&msg.Allow -//line msg_parse.rl:338 +//line msg_parse.rl:306 value=&msg.AllowEvents - goto st149 -tr798: -//line msg_parse.rl:365 + goto st55 +tr628: +//line msg_parse.rl:333 value=&msg.Unsupported - goto st149 -tr808: -//line msg_parse.rl:366 + goto st55 +tr638: +//line msg_parse.rl:334 value=&msg.UserAgent - goto st149 -tr841: -//line msg_parse.rl:367 + goto st55 +tr670: +//line msg_parse.rl:335 value=&msg.Warning - goto st149 -tr857: -//line msg_parse.rl:368 + goto st55 +tr686: +//line msg_parse.rl:336 value=&msg.WWWAuthenticate - goto st149 - st149: + goto st55 + st55: if p++; p == pe { - goto _test_eof149 + goto _test_eof55 } - st_case_149: -//line msg_parse.go:7288 + st_case_55: +//line msg_parse.go:2993 _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st149 + goto st55 case 32: - goto st149 + goto st55 case 269: - goto tr270 + goto tr101 case 525: - goto st150 + goto st56 } switch { case _widec > 12: if 14 <= _widec { - goto tr270 + goto tr101 } default: - goto tr270 + goto tr101 } goto st0 - st150: + st56: if p++; p == pe { - goto _test_eof150 + goto _test_eof56 } - st_case_150: + st_case_56: if data[p] == 10 { - goto tr272 + goto tr103 } goto st0 -tr272: -//line msg_parse.rl:238 - line++; linep = p; - goto st151 - st151: +tr103: +//line msg_parse.rl:50 + + line++ + linep = p + 1 + + goto st57 + st57: if p++; p == pe { - goto _test_eof151 + goto _test_eof57 } - st_case_151: -//line msg_parse.go:7333 + st_case_57: +//line msg_parse.go:3041 switch data[p] { case 9: - goto st152 + goto st58 case 32: - goto st152 + goto st58 } goto st0 - st152: + st58: if p++; p == pe { - goto _test_eof152 + goto _test_eof58 } - st_case_152: + st_case_58: switch data[p] { case 9: - goto st152 + goto st58 case 32: - goto st152 + goto st58 } - goto tr270 - st153: + goto tr101 + st59: if p++; p == pe { - goto _test_eof153 + goto _test_eof59 } - st_case_153: + st_case_59: switch data[p] { case 67: - goto st154 + goto st60 case 99: - goto st154 + goto st60 } - goto tr274 - st154: + goto tr105 + st60: if p++; p == pe { - goto _test_eof154 + goto _test_eof60 } - st_case_154: + st_case_60: switch data[p] { case 69: - goto st155 + goto st61 case 101: - goto st155 + goto st61 } - goto tr274 - st155: + goto tr105 + st61: if p++; p == pe { - goto _test_eof155 + goto _test_eof61 } - st_case_155: + st_case_61: switch data[p] { case 80: - goto st156 + goto st62 case 112: - goto st156 + goto st62 } - goto tr274 - st156: + goto tr105 + st62: if p++; p == pe { - goto _test_eof156 + goto _test_eof62 } - st_case_156: + st_case_62: switch data[p] { case 84: - goto st157 + goto st63 case 116: - goto st157 + goto st63 } - goto tr274 - st157: + goto tr105 + st63: if p++; p == pe { - goto _test_eof157 + goto _test_eof63 } - st_case_157: + st_case_63: switch data[p] { case 9: - goto tr279 + goto tr110 case 32: - goto tr279 + goto tr110 case 45: - goto st158 + goto st64 case 58: - goto tr281 + goto tr112 } goto st0 - st158: + st64: if p++; p == pe { - goto _test_eof158 + goto _test_eof64 } - st_case_158: + st_case_64: switch data[p] { case 67: - goto st159 + goto st65 case 69: - goto st166 + goto st72 case 76: - goto st174 + goto st80 case 99: - goto st159 + goto st65 case 101: - goto st166 + goto st72 case 108: - goto st174 + goto st80 } - goto tr274 - st159: + goto tr105 + st65: if p++; p == pe { - goto _test_eof159 + goto _test_eof65 } - st_case_159: + st_case_65: switch data[p] { case 79: - goto st160 + goto st66 case 111: - goto st160 + goto st66 } - goto tr274 - st160: + goto tr105 + st66: if p++; p == pe { - goto _test_eof160 + goto _test_eof66 } - st_case_160: + st_case_66: switch data[p] { case 78: - goto st161 + goto st67 case 110: - goto st161 + goto st67 } - goto tr274 - st161: + goto tr105 + st67: if p++; p == pe { - goto _test_eof161 + goto _test_eof67 } - st_case_161: + st_case_67: switch data[p] { case 84: - goto st162 + goto st68 case 116: - goto st162 + goto st68 } - goto tr274 - st162: + goto tr105 + st68: if p++; p == pe { - goto _test_eof162 + goto _test_eof68 } - st_case_162: + st_case_68: switch data[p] { case 65: - goto st163 + goto st69 case 97: - goto st163 + goto st69 } - goto tr274 - st163: + goto tr105 + st69: if p++; p == pe { - goto _test_eof163 + goto _test_eof69 } - st_case_163: + st_case_69: switch data[p] { case 67: - goto st164 + goto st70 case 99: - goto st164 + goto st70 } - goto tr274 - st164: + goto tr105 + st70: if p++; p == pe { - goto _test_eof164 + goto _test_eof70 } - st_case_164: + st_case_70: switch data[p] { case 84: - goto st165 + goto st71 case 116: - goto st165 + goto st71 } - goto tr274 - st165: + goto tr105 + st71: if p++; p == pe { - goto _test_eof165 + goto _test_eof71 } - st_case_165: + st_case_71: switch data[p] { case 9: - goto tr263 + goto tr94 case 32: - goto tr263 + goto tr94 case 58: - goto tr264 + goto tr95 } goto st0 - st166: + st72: if p++; p == pe { - goto _test_eof166 + goto _test_eof72 } - st_case_166: + st_case_72: switch data[p] { case 78: - goto st167 + goto st73 case 110: - goto st167 + goto st73 } - goto tr274 - st167: + goto tr105 + st73: if p++; p == pe { - goto _test_eof167 + goto _test_eof73 } - st_case_167: + st_case_73: switch data[p] { case 67: - goto st168 + goto st74 case 99: - goto st168 + goto st74 } - goto tr274 - st168: + goto tr105 + st74: if p++; p == pe { - goto _test_eof168 + goto _test_eof74 } - st_case_168: + st_case_74: switch data[p] { case 79: - goto st169 + goto st75 case 111: - goto st169 + goto st75 } - goto tr274 - st169: + goto tr105 + st75: if p++; p == pe { - goto _test_eof169 + goto _test_eof75 } - st_case_169: + st_case_75: switch data[p] { case 68: - goto st170 + goto st76 case 100: - goto st170 + goto st76 } - goto tr274 - st170: + goto tr105 + st76: if p++; p == pe { - goto _test_eof170 + goto _test_eof76 } - st_case_170: + st_case_76: switch data[p] { case 73: - goto st171 + goto st77 case 105: - goto st171 + goto st77 } - goto tr274 - st171: + goto tr105 + st77: if p++; p == pe { - goto _test_eof171 + goto _test_eof77 } - st_case_171: + st_case_77: switch data[p] { case 78: - goto st172 + goto st78 case 110: - goto st172 + goto st78 } - goto tr274 - st172: + goto tr105 + st78: if p++; p == pe { - goto _test_eof172 + goto _test_eof78 } - st_case_172: + st_case_78: switch data[p] { case 71: - goto st173 + goto st79 case 103: - goto st173 + goto st79 } - goto tr274 - st173: + goto tr105 + st79: if p++; p == pe { - goto _test_eof173 + goto _test_eof79 } - st_case_173: + st_case_79: switch data[p] { case 9: - goto tr298 + goto tr129 case 32: - goto tr298 + goto tr129 case 58: - goto tr299 + goto tr130 } goto st0 - st174: + st80: if p++; p == pe { - goto _test_eof174 + goto _test_eof80 } - st_case_174: + st_case_80: switch data[p] { case 65: - goto st175 + goto st81 case 97: - goto st175 + goto st81 } - goto tr274 - st175: + goto tr105 + st81: if p++; p == pe { - goto _test_eof175 + goto _test_eof81 } - st_case_175: + st_case_81: switch data[p] { case 78: - goto st176 + goto st82 case 110: - goto st176 + goto st82 } - goto tr274 - st176: + goto tr105 + st82: if p++; p == pe { - goto _test_eof176 + goto _test_eof82 } - st_case_176: + st_case_82: switch data[p] { case 71: - goto st177 + goto st83 case 103: - goto st177 + goto st83 } - goto tr274 - st177: + goto tr105 + st83: if p++; p == pe { - goto _test_eof177 + goto _test_eof83 } - st_case_177: + st_case_83: switch data[p] { case 85: - goto st178 + goto st84 case 117: - goto st178 + goto st84 } - goto tr274 - st178: + goto tr105 + st84: if p++; p == pe { - goto _test_eof178 + goto _test_eof84 } - st_case_178: + st_case_84: switch data[p] { case 65: - goto st179 + goto st85 case 97: - goto st179 + goto st85 } - goto tr274 - st179: + goto tr105 + st85: if p++; p == pe { - goto _test_eof179 + goto _test_eof85 } - st_case_179: + st_case_85: switch data[p] { case 71: - goto st180 + goto st86 case 103: - goto st180 + goto st86 } - goto tr274 - st180: + goto tr105 + st86: if p++; p == pe { - goto _test_eof180 + goto _test_eof86 } - st_case_180: + st_case_86: switch data[p] { case 69: - goto st181 + goto st87 case 101: - goto st181 + goto st87 } - goto tr274 - st181: + goto tr105 + st87: if p++; p == pe { - goto _test_eof181 + goto _test_eof87 } - st_case_181: + st_case_87: switch data[p] { case 9: - goto tr307 + goto tr138 case 32: - goto tr307 + goto tr138 case 58: - goto tr308 + goto tr139 } goto st0 - st182: + st88: if p++; p == pe { - goto _test_eof182 + goto _test_eof88 } - st_case_182: + st_case_88: switch data[p] { case 69: - goto st183 + goto st89 case 76: - goto st191 + goto st97 case 101: - goto st183 + goto st89 case 108: - goto st191 + goto st97 } - goto tr274 - st183: + goto tr105 + st89: if p++; p == pe { - goto _test_eof183 + goto _test_eof89 } - st_case_183: + st_case_89: switch data[p] { case 82: - goto st184 + goto st90 case 114: - goto st184 + goto st90 } - goto tr274 - st184: + goto tr105 + st90: if p++; p == pe { - goto _test_eof184 + goto _test_eof90 } - st_case_184: + st_case_90: switch data[p] { case 84: - goto st185 + goto st91 case 116: - goto st185 + goto st91 } - goto tr274 - st185: + goto tr105 + st91: if p++; p == pe { - goto _test_eof185 + goto _test_eof91 } - st_case_185: + st_case_91: if data[p] == 45 { - goto st186 + goto st92 } - goto tr274 - st186: + goto tr105 + st92: if p++; p == pe { - goto _test_eof186 + goto _test_eof92 } - st_case_186: + st_case_92: switch data[p] { case 73: - goto st187 + goto st93 case 105: - goto st187 + goto st93 } - goto tr274 - st187: + goto tr105 + st93: if p++; p == pe { - goto _test_eof187 + goto _test_eof93 } - st_case_187: + st_case_93: switch data[p] { case 78: - goto st188 + goto st94 case 110: - goto st188 + goto st94 } - goto tr274 - st188: + goto tr105 + st94: if p++; p == pe { - goto _test_eof188 + goto _test_eof94 } - st_case_188: + st_case_94: switch data[p] { case 70: - goto st189 + goto st95 case 102: - goto st189 + goto st95 } - goto tr274 - st189: + goto tr105 + st95: if p++; p == pe { - goto _test_eof189 + goto _test_eof95 } - st_case_189: + st_case_95: switch data[p] { case 79: - goto st190 + goto st96 case 111: - goto st190 + goto st96 } - goto tr274 - st190: + goto tr105 + st96: if p++; p == pe { - goto _test_eof190 + goto _test_eof96 } - st_case_190: + st_case_96: switch data[p] { case 9: - goto tr318 + goto tr149 case 32: - goto tr318 + goto tr149 case 58: - goto tr319 + goto tr150 } goto st0 - st191: + st97: if p++; p == pe { - goto _test_eof191 + goto _test_eof97 } - st_case_191: + st_case_97: switch data[p] { case 79: - goto st192 + goto st98 case 111: - goto st192 + goto st98 } - goto tr274 - st192: + goto tr105 + st98: if p++; p == pe { - goto _test_eof192 + goto _test_eof98 } - st_case_192: + st_case_98: switch data[p] { case 87: - goto st193 + goto st99 case 119: - goto st193 + goto st99 } - goto tr274 - st193: + goto tr105 + st99: if p++; p == pe { - goto _test_eof193 + goto _test_eof99 } - st_case_193: + st_case_99: switch data[p] { case 9: - goto tr322 + goto tr153 case 32: - goto tr322 + goto tr153 case 45: - goto st194 + goto st100 case 58: - goto tr324 + goto tr155 } goto st0 - st194: + st100: if p++; p == pe { - goto _test_eof194 + goto _test_eof100 } - st_case_194: + st_case_100: switch data[p] { case 69: - goto st195 + goto st101 case 101: - goto st195 + goto st101 } - goto tr274 - st195: + goto tr105 + st101: if p++; p == pe { - goto _test_eof195 + goto _test_eof101 } - st_case_195: + st_case_101: switch data[p] { case 86: - goto st196 + goto st102 case 118: - goto st196 + goto st102 } - goto tr274 - st196: + goto tr105 + st102: if p++; p == pe { - goto _test_eof196 + goto _test_eof102 } - st_case_196: + st_case_102: switch data[p] { case 69: - goto st197 + goto st103 case 101: - goto st197 + goto st103 } - goto tr274 - st197: + goto tr105 + st103: if p++; p == pe { - goto _test_eof197 + goto _test_eof103 } - st_case_197: + st_case_103: switch data[p] { case 78: - goto st198 + goto st104 case 110: - goto st198 + goto st104 } - goto tr274 - st198: + goto tr105 + st104: if p++; p == pe { - goto _test_eof198 + goto _test_eof104 } - st_case_198: + st_case_104: switch data[p] { case 84: - goto st199 + goto st105 case 116: - goto st199 + goto st105 } - goto tr274 - st199: + goto tr105 + st105: if p++; p == pe { - goto _test_eof199 + goto _test_eof105 } - st_case_199: + st_case_105: switch data[p] { case 83: - goto st200 + goto st106 case 115: - goto st200 + goto st106 } - goto tr274 - st200: + goto tr105 + st106: if p++; p == pe { - goto _test_eof200 + goto _test_eof106 } - st_case_200: + st_case_106: switch data[p] { case 9: - goto tr331 + goto tr162 case 32: - goto tr331 + goto tr162 case 58: - goto tr332 + goto tr163 } goto st0 - st201: + st107: if p++; p == pe { - goto _test_eof201 + goto _test_eof107 } - st_case_201: + st_case_107: switch data[p] { case 84: - goto st202 + goto st108 case 116: - goto st202 + goto st108 } - goto tr274 - st202: + goto tr105 + st108: if p++; p == pe { - goto _test_eof202 + goto _test_eof108 } - st_case_202: + st_case_108: switch data[p] { case 72: - goto st203 + goto st109 case 104: - goto st203 + goto st109 } - goto tr274 - st203: + goto tr105 + st109: if p++; p == pe { - goto _test_eof203 + goto _test_eof109 } - st_case_203: + st_case_109: switch data[p] { case 69: - goto st204 + goto st110 case 79: - goto st219 + goto st125 case 101: - goto st204 + goto st110 case 111: - goto st219 + goto st125 } - goto tr274 - st204: + goto tr105 + st110: if p++; p == pe { - goto _test_eof204 + goto _test_eof110 } - st_case_204: + st_case_110: switch data[p] { case 78: - goto st205 + goto st111 case 110: - goto st205 + goto st111 } - goto tr274 - st205: + goto tr105 + st111: if p++; p == pe { - goto _test_eof205 + goto _test_eof111 } - st_case_205: + st_case_111: switch data[p] { case 84: - goto st206 + goto st112 case 116: - goto st206 + goto st112 } - goto tr274 - st206: + goto tr105 + st112: if p++; p == pe { - goto _test_eof206 + goto _test_eof112 } - st_case_206: + st_case_112: switch data[p] { case 73: - goto st207 + goto st113 case 105: - goto st207 + goto st113 } - goto tr274 - st207: + goto tr105 + st113: if p++; p == pe { - goto _test_eof207 + goto _test_eof113 } - st_case_207: + st_case_113: switch data[p] { case 67: - goto st208 + goto st114 case 99: - goto st208 + goto st114 } - goto tr274 - st208: + goto tr105 + st114: if p++; p == pe { - goto _test_eof208 + goto _test_eof114 } - st_case_208: + st_case_114: switch data[p] { case 65: - goto st209 + goto st115 case 97: - goto st209 + goto st115 } - goto tr274 - st209: + goto tr105 + st115: if p++; p == pe { - goto _test_eof209 + goto _test_eof115 } - st_case_209: + st_case_115: switch data[p] { case 84: - goto st210 + goto st116 case 116: - goto st210 + goto st116 } - goto tr274 - st210: + goto tr105 + st116: if p++; p == pe { - goto _test_eof210 + goto _test_eof116 } - st_case_210: + st_case_116: switch data[p] { case 73: - goto st211 + goto st117 case 105: - goto st211 + goto st117 } - goto tr274 - st211: + goto tr105 + st117: if p++; p == pe { - goto _test_eof211 + goto _test_eof117 } - st_case_211: + st_case_117: switch data[p] { case 79: - goto st212 + goto st118 case 111: - goto st212 + goto st118 } - goto tr274 - st212: + goto tr105 + st118: if p++; p == pe { - goto _test_eof212 + goto _test_eof118 } - st_case_212: + st_case_118: switch data[p] { case 78: - goto st213 + goto st119 case 110: - goto st213 + goto st119 } - goto tr274 - st213: + goto tr105 + st119: if p++; p == pe { - goto _test_eof213 + goto _test_eof119 } - st_case_213: + st_case_119: if data[p] == 45 { - goto st214 + goto st120 } - goto tr274 - st214: + goto tr105 + st120: if p++; p == pe { - goto _test_eof214 + goto _test_eof120 } - st_case_214: + st_case_120: switch data[p] { case 73: - goto st215 + goto st121 case 105: - goto st215 + goto st121 } - goto tr274 - st215: + goto tr105 + st121: if p++; p == pe { - goto _test_eof215 + goto _test_eof121 } - st_case_215: + st_case_121: switch data[p] { case 78: - goto st216 + goto st122 case 110: - goto st216 + goto st122 } - goto tr274 - st216: + goto tr105 + st122: if p++; p == pe { - goto _test_eof216 + goto _test_eof122 } - st_case_216: + st_case_122: switch data[p] { case 70: - goto st217 + goto st123 case 102: - goto st217 + goto st123 } - goto tr274 - st217: + goto tr105 + st123: if p++; p == pe { - goto _test_eof217 + goto _test_eof123 } - st_case_217: + st_case_123: switch data[p] { case 79: - goto st218 + goto st124 case 111: - goto st218 + goto st124 } - goto tr274 - st218: + goto tr105 + st124: if p++; p == pe { - goto _test_eof218 + goto _test_eof124 } - st_case_218: + st_case_124: switch data[p] { case 9: - goto tr351 + goto tr182 case 32: - goto tr351 + goto tr182 case 58: - goto tr352 + goto tr183 } goto st0 - st219: + st125: if p++; p == pe { - goto _test_eof219 + goto _test_eof125 } - st_case_219: + st_case_125: switch data[p] { case 82: - goto st220 + goto st126 case 114: - goto st220 + goto st126 } - goto tr274 - st220: + goto tr105 + st126: if p++; p == pe { - goto _test_eof220 + goto _test_eof126 } - st_case_220: + st_case_126: switch data[p] { case 73: - goto st221 + goto st127 case 105: - goto st221 + goto st127 } - goto tr274 - st221: + goto tr105 + st127: if p++; p == pe { - goto _test_eof221 + goto _test_eof127 } - st_case_221: + st_case_127: switch data[p] { case 90: - goto st222 + goto st128 case 122: - goto st222 + goto st128 } - goto tr274 - st222: + goto tr105 + st128: if p++; p == pe { - goto _test_eof222 + goto _test_eof128 } - st_case_222: + st_case_128: switch data[p] { case 65: - goto st223 + goto st129 case 97: - goto st223 + goto st129 } - goto tr274 - st223: + goto tr105 + st129: if p++; p == pe { - goto _test_eof223 + goto _test_eof129 } - st_case_223: + st_case_129: switch data[p] { case 84: - goto st224 + goto st130 case 116: - goto st224 + goto st130 } - goto tr274 - st224: + goto tr105 + st130: if p++; p == pe { - goto _test_eof224 + goto _test_eof130 } - st_case_224: + st_case_130: switch data[p] { case 73: - goto st225 + goto st131 case 105: - goto st225 + goto st131 } - goto tr274 - st225: + goto tr105 + st131: if p++; p == pe { - goto _test_eof225 + goto _test_eof131 } - st_case_225: + st_case_131: switch data[p] { case 79: - goto st226 + goto st132 case 111: - goto st226 + goto st132 } - goto tr274 - st226: + goto tr105 + st132: if p++; p == pe { - goto _test_eof226 + goto _test_eof132 } - st_case_226: + st_case_132: switch data[p] { case 78: - goto st227 + goto st133 case 110: - goto st227 + goto st133 } - goto tr274 - st227: + goto tr105 + st133: if p++; p == pe { - goto _test_eof227 + goto _test_eof133 } - st_case_227: + st_case_133: switch data[p] { case 9: - goto tr361 + goto tr192 case 32: - goto tr361 + goto tr192 case 58: - goto tr362 + goto tr193 } goto st0 -tr245: -//line msg_parse.rl:59 +tr76: +//line msg_parse.rl:55 mark = p - goto st228 - st228: + goto st134 + st134: if p++; p == pe { - goto _test_eof228 + goto _test_eof134 } - st_case_228: -//line msg_parse.go:8296 + st_case_134: +//line msg_parse.go:4004 switch data[p] { case 9: - goto tr363 + goto tr194 case 32: - goto tr363 + goto tr194 case 58: - goto tr364 + goto tr195 } goto st0 -tr246: -//line msg_parse.rl:59 +tr77: +//line msg_parse.rl:55 mark = p - goto st229 - st229: + goto st135 + st135: if p++; p == pe { - goto _test_eof229 + goto _test_eof135 } - st_case_229: -//line msg_parse.go:8317 + st_case_135: +//line msg_parse.go:4025 switch data[p] { case 9: - goto st230 + goto st136 case 32: - goto st230 + goto st136 case 58: - goto st231 + goto st137 case 65: - goto st243 + goto st150 case 79: - goto st259 + goto st166 case 83: - goto st314 + goto st221 case 97: - goto st243 + goto st150 case 111: - goto st259 + goto st166 case 115: - goto st314 + goto st221 } - goto tr242 - st230: + goto tr73 + st136: if p++; p == pe { - goto _test_eof230 + goto _test_eof136 } - st_case_230: + st_case_136: switch data[p] { case 9: - goto st230 + goto st136 case 32: - goto st230 + goto st136 case 58: - goto st231 + goto st137 } goto st0 - st231: + st137: if p++; p == pe { - goto _test_eof231 + goto _test_eof137 } - st_case_231: + st_case_137: _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st231 + goto st137 case 32: - goto st231 + goto st137 case 269: - goto tr376 + goto tr207 case 525: - goto st240 + goto st147 } switch { case _widec < 224: switch { case _widec > 127: if 192 <= _widec && _widec <= 223 { - goto tr371 + goto tr202 } case _widec >= 33: - goto tr370 + goto tr201 } case _widec > 239: switch { case _widec < 248: if 240 <= _widec && _widec <= 247 { - goto tr373 + goto tr204 } case _widec > 251: if 252 <= _widec && _widec <= 253 { - goto tr375 + goto tr206 } default: - goto tr374 + goto tr205 } default: - goto tr372 + goto tr203 } goto st0 -tr379: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st232 -tr370: -//line msg_parse.rl:59 +tr201: +//line msg_parse.rl:55 mark = p -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st232 - st232: + goto st138 + st138: if p++; p == pe { - goto _test_eof232 + goto _test_eof138 } - st_case_232: -//line msg_parse.go:8425 + st_case_138: +//line msg_parse.go:4121 _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st232 - case 32: - goto st232 + goto st138 case 269: - goto tr385 + goto tr215 case 525: - goto tr386 + goto st145 } switch { case _widec < 224: switch { case _widec > 127: if 192 <= _widec && _widec <= 223 { - goto tr380 + goto st139 } - case _widec >= 33: - goto tr379 + case _widec >= 32: + goto st138 } case _widec > 239: switch { case _widec < 248: if 240 <= _widec && _widec <= 247 { - goto tr382 + goto st141 } case _widec > 251: if 252 <= _widec && _widec <= 253 { - goto tr384 + goto st143 } default: - goto tr383 + goto st142 } default: - goto tr381 + goto st140 } goto st0 -tr380: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st233 -tr371: -//line msg_parse.rl:59 +tr202: +//line msg_parse.rl:55 mark = p -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st233 - st233: + goto st139 + st139: if p++; p == pe { - goto _test_eof233 + goto _test_eof139 } - st_case_233: -//line msg_parse.go:8493 + st_case_139: +//line msg_parse.go:4175 if 128 <= data[p] && data[p] <= 191 { - goto tr379 + goto st138 } goto st0 -tr381: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st234 -tr372: -//line msg_parse.rl:59 +tr203: +//line msg_parse.rl:55 mark = p -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st234 - st234: + goto st140 + st140: if p++; p == pe { - goto _test_eof234 + goto _test_eof140 } - st_case_234: -//line msg_parse.go:8521 + st_case_140: +//line msg_parse.go:4191 if 128 <= data[p] && data[p] <= 191 { - goto tr380 + goto st139 } goto st0 -tr382: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st235 -tr373: -//line msg_parse.rl:59 +tr204: +//line msg_parse.rl:55 mark = p -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st235 - st235: + goto st141 + st141: if p++; p == pe { - goto _test_eof235 + goto _test_eof141 } - st_case_235: -//line msg_parse.go:8549 + st_case_141: +//line msg_parse.go:4207 if 128 <= data[p] && data[p] <= 191 { - goto tr381 + goto st140 } goto st0 -tr383: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st236 -tr374: -//line msg_parse.rl:59 +tr205: +//line msg_parse.rl:55 mark = p -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st236 - st236: + goto st142 + st142: if p++; p == pe { - goto _test_eof236 + goto _test_eof142 } - st_case_236: -//line msg_parse.go:8577 + st_case_142: +//line msg_parse.go:4223 if 128 <= data[p] && data[p] <= 191 { - goto tr382 + goto st141 } goto st0 -tr384: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st237 -tr375: -//line msg_parse.rl:59 +tr206: +//line msg_parse.rl:55 mark = p -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st237 - st237: + goto st143 + st143: if p++; p == pe { - goto _test_eof237 + goto _test_eof143 } - st_case_237: -//line msg_parse.go:8605 + st_case_143: +//line msg_parse.go:4239 if 128 <= data[p] && data[p] <= 191 { - goto tr383 + goto st142 } goto st0 -tr376: -//line msg_parse.rl:59 +tr207: +//line msg_parse.rl:55 mark = p -//line msg_parse.rl:202 +//line msg_parse.rl:183 ctype = string(data[mark:p]) - goto st238 -tr385: -//line msg_parse.rl:202 + goto st144 +tr215: +//line msg_parse.rl:183 ctype = string(data[mark:p]) - goto st238 -tr401: -//line msg_parse.rl:194 + goto st144 +tr231: +//line msg_parse.rl:175 msg.CallID = string(data[mark:p]) - goto st238 -tr485: -//line msg_parse.rl:210 + goto st144 +tr315: +//line msg_parse.rl:191 msg.CSeqMethod = string(data[mark:p]) - goto st238 -tr818: -//line msg_parse.rl:59 + goto st144 +tr648: +//line msg_parse.rl:55 mark = p -//line msg_parse.rl:226 +//line msg_parse.rl:207 *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 + goto st144 +tr656: +//line msg_parse.rl:207 *viap, err = ParseVia(string(data[mark:p])) if err != nil { return nil, err } for *viap != nil { viap = &(*viap).Next } - goto st238 - st238: + goto st144 + st144: if p++; p == pe { - goto _test_eof238 + goto _test_eof144 } - st_case_238: -//line msg_parse.go:8663 + st_case_144: +//line msg_parse.go:4297 if data[p] == 10 { - goto tr387 + goto tr217 } goto st0 -tr391: -//line msg_parse.rl:59 +tr221: +//line msg_parse.rl:55 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: + goto st145 + st145: if p++; p == pe { - goto _test_eof239 + goto _test_eof145 } - st_case_239: -//line msg_parse.go:8689 + st_case_145: +//line msg_parse.go:4313 if data[p] == 10 { - goto tr388 + goto tr218 } goto st0 -tr388: -//line msg_parse.rl:238 - line++; linep = p; -//line msg_parse.rl:129 +tr218: +//line msg_parse.rl:50 - {goto st145 } + line++ + linep = p + 1 - goto st646 - st646: + goto st146 + st146: if p++; p == pe { - goto _test_eof646 + goto _test_eof146 } - st_case_646: -//line msg_parse.go:8707 + st_case_146: +//line msg_parse.go:4330 switch data[p] { case 9: - goto st232 + goto st138 case 32: - goto st232 + goto st138 } goto st0 - st240: + st147: if p++; p == pe { - goto _test_eof240 + goto _test_eof147 } - st_case_240: + st_case_147: if data[p] == 10 { - goto tr389 + goto tr219 } goto st0 -tr389: -//line msg_parse.rl:238 - line++; linep = p; - goto st241 - st241: +tr219: +//line msg_parse.rl:50 + + line++ + linep = p + 1 + + goto st148 + st148: if p++; p == pe { - goto _test_eof241 + goto _test_eof148 } - st_case_241: -//line msg_parse.go:8733 + st_case_148: +//line msg_parse.go:4359 switch data[p] { case 9: - goto st242 + goto st149 case 32: - goto st242 + goto st149 } goto st0 - st242: + st149: if p++; p == pe { - goto _test_eof242 + goto _test_eof149 } - st_case_242: + st_case_149: _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st242 + goto st149 case 32: - goto st242 + goto st149 case 269: - goto tr376 + goto tr207 case 525: - goto tr391 + goto tr221 } switch { case _widec < 224: switch { case _widec > 127: if 192 <= _widec && _widec <= 223 { - goto tr371 + goto tr202 } case _widec >= 33: - goto tr370 + goto tr201 } case _widec > 239: switch { case _widec < 248: if 240 <= _widec && _widec <= 247 { - goto tr373 + goto tr204 } case _widec > 251: if 252 <= _widec && _widec <= 253 { - goto tr375 + goto tr206 } default: - goto tr374 + goto tr205 } default: - goto tr372 + goto tr203 } goto st0 - st243: + st150: if p++; p == pe { - goto _test_eof243 + goto _test_eof150 } - st_case_243: + st_case_150: switch data[p] { case 76: - goto st244 + goto st151 case 108: - goto st244 + goto st151 } - goto tr242 - st244: + goto tr73 + st151: if p++; p == pe { - goto _test_eof244 + goto _test_eof151 } - st_case_244: + st_case_151: switch data[p] { case 76: - goto st245 + goto st152 case 108: - goto st245 + goto st152 } - goto tr242 - st245: + goto tr73 + st152: if p++; p == pe { - goto _test_eof245 + goto _test_eof152 } - st_case_245: + st_case_152: if data[p] == 45 { - goto st246 + goto st153 } - goto tr242 - st246: + goto tr73 + st153: if p++; p == pe { - goto _test_eof246 + goto _test_eof153 } - st_case_246: + st_case_153: switch data[p] { case 73: - goto st247 + goto st154 case 105: - goto st247 + goto st154 } - goto tr242 - st247: + goto tr73 + st154: if p++; p == pe { - goto _test_eof247 + goto _test_eof154 } - st_case_247: + st_case_154: switch data[p] { case 68: - goto st248 + goto st155 case 78: - goto st256 + goto st163 case 100: - goto st248 + goto st155 case 110: - goto st256 + goto st163 } - goto tr242 - st248: + goto tr73 + st155: if p++; p == pe { - goto _test_eof248 + goto _test_eof155 } - st_case_248: + st_case_155: switch data[p] { case 9: - goto st248 + goto st155 case 32: - goto st248 + goto st155 case 58: - goto st249 + goto st156 } goto st0 - st249: + st156: if p++; p == pe { - goto _test_eof249 + goto _test_eof156 } - st_case_249: + st_case_156: _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st249 + goto st156 case 32: - goto st249 + goto st156 case 37: - goto tr399 + goto tr229 case 60: - goto tr399 + goto tr229 case 525: - goto st253 + goto st160 } switch { case _widec < 62: switch { case _widec < 39: if 33 <= _widec && _widec <= 34 { - goto tr399 + goto tr229 } case _widec > 43: if 45 <= _widec && _widec <= 58 { - goto tr399 + goto tr229 } default: - goto tr399 + goto tr229 } case _widec > 63: switch { case _widec < 95: if 65 <= _widec && _widec <= 93 { - goto tr399 + goto tr229 } case _widec > 123: if 125 <= _widec && _widec <= 126 { - goto tr399 + goto tr229 } default: - goto tr399 + goto tr229 } default: - goto tr399 + goto tr229 } goto st0 -tr399: -//line msg_parse.rl:59 +tr229: +//line msg_parse.rl:55 mark = p - goto st250 - st250: + goto st157 + st157: if p++; p == pe { - goto _test_eof250 + goto _test_eof157 } - st_case_250: -//line msg_parse.go:8931 + st_case_157: +//line msg_parse.go:4557 switch data[p] { case 13: - goto tr401 + goto tr231 case 37: - goto st250 + goto st157 case 60: - goto st250 + goto st157 case 64: - goto st251 + goto st158 } switch { case data[p] < 45: switch { case data[p] > 34: if 39 <= data[p] && data[p] <= 43 { - goto st250 + goto st157 } case data[p] >= 33: - goto st250 + goto st157 } case data[p] > 58: switch { case data[p] < 95: if 62 <= data[p] && data[p] <= 93 { - goto st250 + goto st157 } case data[p] > 123: if 125 <= data[p] && data[p] <= 126 { - goto st250 + goto st157 } default: - goto st250 + goto st157 } default: - goto st250 + goto st157 } goto st0 - st251: + st158: if p++; p == pe { - goto _test_eof251 + goto _test_eof158 } - st_case_251: + st_case_158: switch data[p] { case 37: - goto st252 + goto st159 case 60: - goto st252 + goto st159 } switch { case data[p] < 62: switch { case data[p] < 39: if 33 <= data[p] && data[p] <= 34 { - goto st252 + goto st159 } case data[p] > 43: if 45 <= data[p] && data[p] <= 58 { - goto st252 + goto st159 } default: - goto st252 + goto st159 } case data[p] > 63: switch { case data[p] < 95: if 65 <= data[p] && data[p] <= 93 { - goto st252 + goto st159 } case data[p] > 123: if 125 <= data[p] && data[p] <= 126 { - goto st252 + goto st159 } default: - goto st252 + goto st159 } default: - goto st252 + goto st159 } goto st0 - st252: + st159: if p++; p == pe { - goto _test_eof252 + goto _test_eof159 } - st_case_252: + st_case_159: switch data[p] { case 13: - goto tr401 + goto tr231 case 37: - goto st252 + goto st159 case 60: - goto st252 + goto st159 } switch { case data[p] < 62: switch { case data[p] < 39: if 33 <= data[p] && data[p] <= 34 { - goto st252 + goto st159 } case data[p] > 43: if 45 <= data[p] && data[p] <= 58 { - goto st252 + goto st159 } default: - goto st252 + goto st159 } case data[p] > 63: switch { case data[p] < 95: if 65 <= data[p] && data[p] <= 93 { - goto st252 + goto st159 } case data[p] > 123: if 125 <= data[p] && data[p] <= 126 { - goto st252 + goto st159 } default: - goto st252 + goto st159 } default: - goto st252 + goto st159 } goto st0 - st253: + st160: if p++; p == pe { - goto _test_eof253 + goto _test_eof160 } - st_case_253: + st_case_160: if data[p] == 10 { - goto tr405 + goto tr235 } goto st0 -tr405: -//line msg_parse.rl:238 - line++; linep = p; - goto st254 - st254: +tr235: +//line msg_parse.rl:50 + + line++ + linep = p + 1 + + goto st161 + st161: if p++; p == pe { - goto _test_eof254 + goto _test_eof161 } - st_case_254: -//line msg_parse.go:9073 + st_case_161: +//line msg_parse.go:4702 switch data[p] { case 9: - goto st255 + goto st162 case 32: - goto st255 + goto st162 } goto st0 - st255: + st162: if p++; p == pe { - goto _test_eof255 + goto _test_eof162 } - st_case_255: + st_case_162: switch data[p] { case 9: - goto st255 + goto st162 case 32: - goto st255 + goto st162 case 37: - goto tr399 + goto tr229 case 60: - goto tr399 + goto tr229 } switch { case data[p] < 62: switch { case data[p] < 39: if 33 <= data[p] && data[p] <= 34 { - goto tr399 + goto tr229 } case data[p] > 43: if 45 <= data[p] && data[p] <= 58 { - goto tr399 + goto tr229 } default: - goto tr399 + goto tr229 } case data[p] > 63: switch { case data[p] < 95: if 65 <= data[p] && data[p] <= 93 { - goto tr399 + goto tr229 } case data[p] > 123: if 125 <= data[p] && data[p] <= 126 { - goto tr399 + goto tr229 } default: - goto tr399 + goto tr229 } default: - goto tr399 + goto tr229 } goto st0 - st256: + st163: if p++; p == pe { - goto _test_eof256 + goto _test_eof163 } - st_case_256: + st_case_163: switch data[p] { case 70: - goto st257 + goto st164 case 102: - goto st257 + goto st164 } - goto tr274 - st257: + goto tr105 + st164: if p++; p == pe { - goto _test_eof257 + goto _test_eof164 } - st_case_257: + st_case_164: switch data[p] { case 79: - goto st258 + goto st165 case 111: - goto st258 + goto st165 } - goto tr274 - st258: + goto tr105 + st165: if p++; p == pe { - goto _test_eof258 + goto _test_eof165 } - st_case_258: + st_case_165: switch data[p] { case 9: - goto tr409 + goto tr239 case 32: - goto tr409 + goto tr239 case 58: - goto tr410 + goto tr240 } goto st0 - st259: + st166: if p++; p == pe { - goto _test_eof259 + goto _test_eof166 } - st_case_259: + st_case_166: switch data[p] { case 78: - goto st260 + goto st167 case 110: - goto st260 + goto st167 } - goto tr242 - st260: + goto tr73 + st167: if p++; p == pe { - goto _test_eof260 + goto _test_eof167 } - st_case_260: + st_case_167: switch data[p] { case 84: - goto st261 + goto st168 case 116: - goto st261 + goto st168 } - goto tr242 - st261: + goto tr73 + st168: if p++; p == pe { - goto _test_eof261 + goto _test_eof168 } - st_case_261: + st_case_168: switch data[p] { case 65: - goto st262 + goto st169 case 69: - goto st270 + goto st177 case 97: - goto st262 + goto st169 case 101: - goto st270 + goto st177 } - goto tr242 - st262: + goto tr73 + st169: if p++; p == pe { - goto _test_eof262 + goto _test_eof169 } - st_case_262: + st_case_169: switch data[p] { case 67: - goto st263 + goto st170 case 99: - goto st263 + goto st170 } - goto tr274 - st263: + goto tr105 + st170: if p++; p == pe { - goto _test_eof263 + goto _test_eof170 } - st_case_263: + st_case_170: switch data[p] { case 84: - goto st264 + goto st171 case 116: - goto st264 + goto st171 } - goto tr274 - st264: + goto tr105 + st171: if p++; p == pe { - goto _test_eof264 + goto _test_eof171 } - st_case_264: + st_case_171: switch data[p] { case 9: - goto tr417 + goto tr247 case 32: - goto tr417 + goto tr247 case 58: - goto tr418 + goto tr248 } goto st0 -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: +tr247: +//line msg_parse.rl:291 +addr=&msg.Contact + goto st172 +tr355: +//line msg_parse.rl:292 +addr=&msg.From + goto st172 +tr457: +//line msg_parse.rl:293 +addr=&msg.PAssertedIdentity + goto st172 +tr524: +//line msg_parse.rl:294 +addr=&msg.RecordRoute + goto st172 +tr549: +//line msg_parse.rl:295 +addr=&msg.RemotePartyID + goto st172 +tr577: +//line msg_parse.rl:296 +addr=&msg.Route + goto st172 +tr601: +//line msg_parse.rl:297 +addr=&msg.To + goto st172 + st172: if p++; p == pe { - goto _test_eof265 + goto _test_eof172 } - st_case_265: -//line msg_parse.go:9276 + st_case_172: +//line msg_parse.go:4905 switch data[p] { case 9: - 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: + goto st172 + case 32: + goto st172 + case 58: + goto st173 + } + goto st0 +tr248: +//line msg_parse.rl:291 +addr=&msg.Contact + goto st173 +tr356: +//line msg_parse.rl:292 +addr=&msg.From + goto st173 +tr458: +//line msg_parse.rl:293 +addr=&msg.PAssertedIdentity + goto st173 +tr525: +//line msg_parse.rl:294 +addr=&msg.RecordRoute + goto st173 +tr550: +//line msg_parse.rl:295 +addr=&msg.RemotePartyID + goto st173 +tr578: +//line msg_parse.rl:296 +addr=&msg.Route + goto st173 +tr602: +//line msg_parse.rl:297 +addr=&msg.To + goto st173 + st173: if p++; p == pe { - goto _test_eof266 + goto _test_eof173 } - st_case_266: -//line msg_parse.go:9319 + st_case_173: +//line msg_parse.go:4948 _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st266 + goto st173 case 32: - goto st266 + goto st173 case 269: - goto tr421 + goto tr251 case 525: - goto st267 + goto st174 } switch { case _widec > 12: if 14 <= _widec { - goto tr421 + goto tr251 } default: - goto tr421 + goto tr251 } goto st0 - st267: + st174: if p++; p == pe { - goto _test_eof267 + goto _test_eof174 } - st_case_267: + st_case_174: if data[p] == 10 { - goto tr423 + goto tr253 } goto st0 -tr423: -//line msg_parse.rl:238 - line++; linep = p; - goto st268 - st268: +tr253: +//line msg_parse.rl:50 + + line++ + linep = p + 1 + + goto st175 + st175: if p++; p == pe { - goto _test_eof268 + goto _test_eof175 } - st_case_268: -//line msg_parse.go:9364 + st_case_175: +//line msg_parse.go:4996 switch data[p] { case 9: - goto st269 + goto st176 case 32: - goto st269 + goto st176 } goto st0 - st269: + st176: if p++; p == pe { - goto _test_eof269 + goto _test_eof176 } - st_case_269: + st_case_176: switch data[p] { case 9: - goto st269 + goto st176 case 32: - goto st269 + goto st176 } - goto tr421 - st270: + goto tr251 + st177: if p++; p == pe { - goto _test_eof270 + goto _test_eof177 } - st_case_270: + st_case_177: switch data[p] { case 78: - goto st271 + goto st178 case 110: - goto st271 + goto st178 } - goto tr242 - st271: + goto tr73 + st178: if p++; p == pe { - goto _test_eof271 + goto _test_eof178 } - st_case_271: + st_case_178: switch data[p] { case 84: - goto st272 + goto st179 case 116: - goto st272 + goto st179 } - goto tr242 - st272: + goto tr73 + st179: if p++; p == pe { - goto _test_eof272 + goto _test_eof179 } - st_case_272: + st_case_179: if data[p] == 45 { - goto st273 + goto st180 } - goto tr242 - st273: + goto tr73 + st180: if p++; p == pe { - goto _test_eof273 + goto _test_eof180 } - st_case_273: + st_case_180: switch data[p] { case 68: - goto st274 + goto st181 case 69: - goto st285 + goto st192 case 76: - goto st293 + goto st200 case 84: - goto st311 + goto st218 case 100: - goto st274 + goto st181 case 101: - goto st285 + goto st192 case 108: - goto st293 + goto st200 case 116: - goto st311 + goto st218 } - goto tr242 - st274: + goto tr73 + st181: if p++; p == pe { - goto _test_eof274 + goto _test_eof181 } - st_case_274: + st_case_181: switch data[p] { case 73: - goto st275 + goto st182 case 105: - goto st275 + goto st182 } - goto tr274 - st275: + goto tr105 + st182: if p++; p == pe { - goto _test_eof275 + goto _test_eof182 } - st_case_275: + st_case_182: switch data[p] { case 83: - goto st276 + goto st183 case 115: - goto st276 + goto st183 } - goto tr274 - st276: + goto tr105 + st183: if p++; p == pe { - goto _test_eof276 + goto _test_eof183 } - st_case_276: + st_case_183: switch data[p] { case 80: - goto st277 + goto st184 case 112: - goto st277 + goto st184 } - goto tr274 - st277: + goto tr105 + st184: if p++; p == pe { - goto _test_eof277 + goto _test_eof184 } - st_case_277: + st_case_184: switch data[p] { case 79: - goto st278 + goto st185 case 111: - goto st278 + goto st185 } - goto tr274 - st278: + goto tr105 + st185: if p++; p == pe { - goto _test_eof278 + goto _test_eof185 } - st_case_278: + st_case_185: switch data[p] { case 83: - goto st279 + goto st186 case 115: - goto st279 + goto st186 } - goto tr274 - st279: + goto tr105 + st186: if p++; p == pe { - goto _test_eof279 + goto _test_eof186 } - st_case_279: + st_case_186: switch data[p] { case 73: - goto st280 + goto st187 case 105: - goto st280 + goto st187 } - goto tr274 - st280: + goto tr105 + st187: if p++; p == pe { - goto _test_eof280 + goto _test_eof187 } - st_case_280: + st_case_187: switch data[p] { case 84: - goto st281 + goto st188 case 116: - goto st281 + goto st188 } - goto tr274 - st281: + goto tr105 + st188: if p++; p == pe { - goto _test_eof281 + goto _test_eof188 } - st_case_281: + st_case_188: switch data[p] { case 73: - goto st282 + goto st189 case 105: - goto st282 + goto st189 } - goto tr274 - st282: + goto tr105 + st189: if p++; p == pe { - goto _test_eof282 + goto _test_eof189 } - st_case_282: + st_case_189: switch data[p] { case 79: - goto st283 + goto st190 case 111: - goto st283 + goto st190 } - goto tr274 - st283: + goto tr105 + st190: if p++; p == pe { - goto _test_eof283 + goto _test_eof190 } - st_case_283: + st_case_190: switch data[p] { case 78: - goto st284 + goto st191 case 110: - goto st284 + goto st191 } - goto tr274 - st284: + goto tr105 + st191: if p++; p == pe { - goto _test_eof284 + goto _test_eof191 } - st_case_284: + st_case_191: switch data[p] { case 9: - goto tr442 + goto tr272 case 32: - goto tr442 + goto tr272 case 58: - goto tr443 + goto tr273 } goto st0 - st285: + st192: if p++; p == pe { - goto _test_eof285 + goto _test_eof192 } - st_case_285: + st_case_192: switch data[p] { case 78: - goto st286 + goto st193 case 110: - goto st286 + goto st193 } - goto tr274 - st286: + goto tr105 + st193: if p++; p == pe { - goto _test_eof286 + goto _test_eof193 } - st_case_286: + st_case_193: switch data[p] { case 67: - goto st287 + goto st194 case 99: - goto st287 + goto st194 } - goto tr274 - st287: + goto tr105 + st194: if p++; p == pe { - goto _test_eof287 + goto _test_eof194 } - st_case_287: + st_case_194: switch data[p] { case 79: - goto st288 + goto st195 case 111: - goto st288 + goto st195 } - goto tr274 - st288: + goto tr105 + st195: if p++; p == pe { - goto _test_eof288 + goto _test_eof195 } - st_case_288: + st_case_195: switch data[p] { case 68: - goto st289 + goto st196 case 100: - goto st289 + goto st196 } - goto tr274 - st289: + goto tr105 + st196: if p++; p == pe { - goto _test_eof289 + goto _test_eof196 } - st_case_289: + st_case_196: switch data[p] { case 73: - goto st290 + goto st197 case 105: - goto st290 + goto st197 } - goto tr274 - st290: + goto tr105 + st197: if p++; p == pe { - goto _test_eof290 + goto _test_eof197 } - st_case_290: + st_case_197: switch data[p] { case 78: - goto st291 + goto st198 case 110: - goto st291 + goto st198 } - goto tr274 - st291: + goto tr105 + st198: if p++; p == pe { - goto _test_eof291 + goto _test_eof198 } - st_case_291: + st_case_198: switch data[p] { case 71: - goto st292 + goto st199 case 103: - goto st292 + goto st199 } - goto tr274 - st292: + goto tr105 + st199: if p++; p == pe { - goto _test_eof292 + goto _test_eof199 } - st_case_292: + st_case_199: switch data[p] { case 9: - goto tr451 + goto tr281 case 32: - goto tr451 + goto tr281 case 58: - goto tr452 + goto tr282 } goto st0 - st293: + st200: if p++; p == pe { - goto _test_eof293 + goto _test_eof200 } - st_case_293: + st_case_200: switch data[p] { case 65: - goto st294 + goto st201 case 69: - goto st301 + goto st208 case 97: - goto st294 + goto st201 case 101: - goto st301 + goto st208 } - goto tr242 - st294: + goto tr73 + st201: if p++; p == pe { - goto _test_eof294 + goto _test_eof201 } - st_case_294: + st_case_201: switch data[p] { case 78: - goto st295 + goto st202 case 110: - goto st295 + goto st202 } - goto tr274 - st295: + goto tr105 + st202: if p++; p == pe { - goto _test_eof295 + goto _test_eof202 } - st_case_295: + st_case_202: switch data[p] { case 71: - goto st296 + goto st203 case 103: - goto st296 + goto st203 } - goto tr274 - st296: + goto tr105 + st203: if p++; p == pe { - goto _test_eof296 + goto _test_eof203 } - st_case_296: + st_case_203: switch data[p] { case 85: - goto st297 + goto st204 case 117: - goto st297 + goto st204 } - goto tr274 - st297: + goto tr105 + st204: if p++; p == pe { - goto _test_eof297 + goto _test_eof204 } - st_case_297: + st_case_204: switch data[p] { case 65: - goto st298 + goto st205 case 97: - goto st298 + goto st205 } - goto tr274 - st298: + goto tr105 + st205: if p++; p == pe { - goto _test_eof298 + goto _test_eof205 } - st_case_298: + st_case_205: switch data[p] { case 71: - goto st299 + goto st206 case 103: - goto st299 + goto st206 } - goto tr274 - st299: + goto tr105 + st206: if p++; p == pe { - goto _test_eof299 + goto _test_eof206 } - st_case_299: + st_case_206: switch data[p] { case 69: - goto st300 + goto st207 case 101: - goto st300 + goto st207 } - goto tr274 - st300: + goto tr105 + st207: if p++; p == pe { - goto _test_eof300 + goto _test_eof207 } - st_case_300: + st_case_207: switch data[p] { case 9: - goto tr461 + goto tr291 case 32: - goto tr461 + goto tr291 case 58: - goto tr462 + goto tr292 } goto st0 - st301: + st208: if p++; p == pe { - goto _test_eof301 + goto _test_eof208 } - st_case_301: + st_case_208: switch data[p] { case 78: - goto st302 + goto st209 case 110: - goto st302 + goto st209 } - goto tr463 - st302: + goto tr293 + st209: if p++; p == pe { - goto _test_eof302 + goto _test_eof209 } - st_case_302: + st_case_209: switch data[p] { case 71: - goto st303 + goto st210 case 103: - goto st303 + goto st210 } - goto tr463 - st303: + goto tr293 + st210: if p++; p == pe { - goto _test_eof303 + goto _test_eof210 } - st_case_303: + st_case_210: switch data[p] { case 84: - goto st304 + goto st211 case 116: - goto st304 + goto st211 } - goto tr463 - st304: + goto tr293 + st211: if p++; p == pe { - goto _test_eof304 + goto _test_eof211 } - st_case_304: + st_case_211: switch data[p] { case 72: - goto st305 + goto st212 case 104: - goto st305 + goto st212 } - goto tr463 - st305: + goto tr293 + st212: if p++; p == pe { - goto _test_eof305 + goto _test_eof212 } - st_case_305: + st_case_212: switch data[p] { case 9: - goto st305 + goto st212 case 32: - goto st305 + goto st212 case 58: - goto st306 + goto st213 } goto st0 - st306: + st213: if p++; p == pe { - goto _test_eof306 + goto _test_eof213 } - st_case_306: + st_case_213: _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st306 + goto st213 case 32: - goto st306 + goto st213 case 525: - goto st308 + goto st215 } if 48 <= _widec && _widec <= 57 { - goto tr469 + goto tr299 } goto st0 -tr469: -//line msg_parse.rl:324 +tr299: +//line msg_parse.rl:341 clen=0 -//line msg_parse.rl:198 +//line msg_parse.rl:179 clen = clen * 10 + (int(data[p]) - 0x30) - goto st307 -tr472: -//line msg_parse.rl:198 + goto st214 +tr302: +//line msg_parse.rl:179 clen = clen * 10 + (int(data[p]) - 0x30) - goto st307 - st307: + goto st214 + st214: if p++; p == pe { - goto _test_eof307 + goto _test_eof214 } - st_case_307: -//line msg_parse.go:9880 + st_case_214: +//line msg_parse.go:5512 if data[p] == 13 { - goto st238 + goto st144 } if 48 <= data[p] && data[p] <= 57 { - goto tr472 + goto tr302 } goto st0 - st308: + st215: if p++; p == pe { - goto _test_eof308 + goto _test_eof215 } - st_case_308: + st_case_215: if data[p] == 10 { - goto tr473 + goto tr303 } goto st0 -tr473: -//line msg_parse.rl:238 - line++; linep = p; - goto st309 - st309: +tr303: +//line msg_parse.rl:50 + + line++ + linep = p + 1 + + goto st216 + st216: if p++; p == pe { - goto _test_eof309 + goto _test_eof216 } - st_case_309: -//line msg_parse.go:9906 + st_case_216: +//line msg_parse.go:5541 switch data[p] { case 9: - goto st310 + goto st217 case 32: - goto st310 + goto st217 } goto st0 - st310: + st217: if p++; p == pe { - goto _test_eof310 + goto _test_eof217 } - st_case_310: + st_case_217: switch data[p] { case 9: - goto st310 + goto st217 case 32: - goto st310 + goto st217 } if 48 <= data[p] && data[p] <= 57 { - goto tr469 + goto tr299 } goto st0 - st311: + st218: if p++; p == pe { - goto _test_eof311 + goto _test_eof218 } - st_case_311: + st_case_218: switch data[p] { case 89: - goto st312 + goto st219 case 121: - goto st312 + goto st219 } - goto tr463 - st312: + goto tr293 + st219: if p++; p == pe { - goto _test_eof312 + goto _test_eof219 } - st_case_312: + st_case_219: switch data[p] { case 80: - goto st313 + goto st220 case 112: - goto st313 + goto st220 } - goto tr463 - st313: + goto tr293 + st220: if p++; p == pe { - goto _test_eof313 + goto _test_eof220 } - st_case_313: + st_case_220: switch data[p] { case 69: - goto st230 + goto st136 case 101: - goto st230 + goto st136 } - goto tr463 - st314: + goto tr293 + st221: if p++; p == pe { - goto _test_eof314 + goto _test_eof221 } - st_case_314: + st_case_221: switch data[p] { case 69: - goto st315 + goto st222 case 101: - goto st315 + goto st222 } - goto tr463 - st315: + goto tr293 + st222: if p++; p == pe { - goto _test_eof315 + goto _test_eof222 } - st_case_315: + st_case_222: switch data[p] { case 81: - goto st316 + goto st223 case 113: - goto st316 + goto st223 } - goto tr463 - st316: + goto tr293 + st223: if p++; p == pe { - goto _test_eof316 + goto _test_eof223 } - st_case_316: + st_case_223: switch data[p] { case 9: - goto st316 + goto st223 case 32: - goto st316 + goto st223 case 58: - goto st317 + goto st224 } goto st0 - st317: + st224: if p++; p == pe { - goto _test_eof317 + goto _test_eof224 } - st_case_317: + st_case_224: _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st317 + goto st224 case 32: - goto st317 + goto st224 case 525: - goto st324 + goto st231 } if 48 <= _widec && _widec <= 57 { - goto tr480 + goto tr310 } goto st0 -tr480: -//line msg_parse.rl:206 +tr310: +//line msg_parse.rl:187 msg.CSeq = msg.CSeq * 10 + (int(data[p]) - 0x30) - goto st318 - st318: + goto st225 + st225: if p++; p == pe { - goto _test_eof318 + goto _test_eof225 } - st_case_318: -//line msg_parse.go:10038 + st_case_225: +//line msg_parse.go:5673 _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st319 + goto st226 case 32: - goto st319 + goto st226 case 525: - goto st321 + goto st228 } if 48 <= _widec && _widec <= 57 { - goto tr480 + goto tr310 } goto st0 - st319: + st226: if p++; p == pe { - goto _test_eof319 + goto _test_eof226 } - st_case_319: + st_case_226: _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st319 + goto st226 case 32: - goto st319 + goto st226 case 33: - goto tr484 + goto tr314 case 37: - goto tr484 + goto tr314 case 39: - goto tr484 + goto tr314 case 126: - goto tr484 + goto tr314 case 525: - goto st321 + goto st228 } switch { case _widec < 48: switch { case _widec > 43: if 45 <= _widec && _widec <= 46 { - goto tr484 + goto tr314 } case _widec >= 42: - goto tr484 + goto tr314 } case _widec > 57: switch { case _widec > 90: if 95 <= _widec && _widec <= 122 { - goto tr484 + goto tr314 } case _widec >= 65: - goto tr484 + goto tr314 } default: - goto tr484 + goto tr314 } goto st0 -tr484: -//line msg_parse.rl:59 +tr314: +//line msg_parse.rl:55 mark = p - goto st320 - st320: + goto st227 + st227: if p++; p == pe { - goto _test_eof320 + goto _test_eof227 } - st_case_320: -//line msg_parse.go:10120 + st_case_227: +//line msg_parse.go:5755 switch data[p] { case 13: - goto tr485 + goto tr315 case 33: - goto st320 + goto st227 case 37: - goto st320 + goto st227 case 39: - goto st320 + goto st227 case 126: - goto st320 + goto st227 } switch { case data[p] < 48: switch { case data[p] > 43: if 45 <= data[p] && data[p] <= 46 { - goto st320 + goto st227 } case data[p] >= 42: - goto st320 + goto st227 } case data[p] > 57: switch { case data[p] > 90: if 95 <= data[p] && data[p] <= 122 { - goto st320 + goto st227 } case data[p] >= 65: - goto st320 + goto st227 } default: - goto st320 + goto st227 } goto st0 - st321: + st228: if p++; p == pe { - goto _test_eof321 + goto _test_eof228 } - st_case_321: + st_case_228: if data[p] == 10 { - goto tr487 + goto tr317 } goto st0 -tr487: -//line msg_parse.rl:238 - line++; linep = p; - goto st322 - st322: +tr317: +//line msg_parse.rl:50 + + line++ + linep = p + 1 + + goto st229 + st229: if p++; p == pe { - goto _test_eof322 + goto _test_eof229 } - st_case_322: -//line msg_parse.go:10174 + st_case_229: +//line msg_parse.go:5812 switch data[p] { case 9: - goto st323 + goto st230 case 32: - goto st323 + goto st230 } goto st0 - st323: + st230: if p++; p == pe { - goto _test_eof323 + goto _test_eof230 } - st_case_323: + st_case_230: switch data[p] { case 9: - goto st323 + goto st230 case 32: - goto st323 + goto st230 case 33: - goto tr484 + goto tr314 case 37: - goto tr484 + goto tr314 case 39: - goto tr484 + goto tr314 case 126: - goto tr484 + goto tr314 } switch { case data[p] < 48: switch { case data[p] > 43: if 45 <= data[p] && data[p] <= 46 { - goto tr484 + goto tr314 } case data[p] >= 42: - goto tr484 + goto tr314 } case data[p] > 57: switch { case data[p] > 90: if 95 <= data[p] && data[p] <= 122 { - goto tr484 + goto tr314 } case data[p] >= 65: - goto tr484 + goto tr314 } default: - goto tr484 + goto tr314 } goto st0 - st324: + st231: if p++; p == pe { - goto _test_eof324 + goto _test_eof231 } - st_case_324: + st_case_231: if data[p] == 10 { - goto tr489 + goto tr319 } goto st0 -tr489: -//line msg_parse.rl:238 - line++; linep = p; - goto st325 - st325: +tr319: +//line msg_parse.rl:50 + + line++ + linep = p + 1 + + goto st232 + st232: if p++; p == pe { - goto _test_eof325 + goto _test_eof232 } - st_case_325: -//line msg_parse.go:10242 + st_case_232: +//line msg_parse.go:5883 switch data[p] { case 9: - goto st326 + goto st233 case 32: - goto st326 + goto st233 } goto st0 - st326: + st233: if p++; p == pe { - goto _test_eof326 + goto _test_eof233 } - st_case_326: + st_case_233: switch data[p] { case 9: - goto st326 + goto st233 case 32: - goto st326 + goto st233 } if 48 <= data[p] && data[p] <= 57 { - goto tr480 + goto tr310 } goto st0 -tr247: -//line msg_parse.rl:59 +tr78: +//line msg_parse.rl:55 mark = p - goto st327 - st327: + goto st234 + st234: if p++; p == pe { - goto _test_eof327 + goto _test_eof234 } - st_case_327: -//line msg_parse.go:10276 + st_case_234: +//line msg_parse.go:5917 switch data[p] { case 65: - goto st328 + goto st235 case 97: - goto st328 + goto st235 } - goto tr274 - st328: + goto tr105 + st235: if p++; p == pe { - goto _test_eof328 + goto _test_eof235 } - st_case_328: + st_case_235: switch data[p] { case 84: - goto st329 + goto st236 case 116: - goto st329 + goto st236 } - goto tr274 - st329: + goto tr105 + st236: if p++; p == pe { - goto _test_eof329 + goto _test_eof236 } - st_case_329: + st_case_236: switch data[p] { case 69: - goto st330 + goto st237 case 101: - goto st330 + goto st237 } - goto tr274 - st330: + goto tr105 + st237: if p++; p == pe { - goto _test_eof330 + goto _test_eof237 } - st_case_330: + st_case_237: switch data[p] { case 9: - goto tr494 + goto tr324 case 32: - goto tr494 + goto tr324 case 58: - goto tr495 + goto tr325 } goto st0 -tr248: -//line msg_parse.rl:59 +tr79: +//line msg_parse.rl:55 mark = p - goto st331 - st331: + goto st238 + st238: if p++; p == pe { - goto _test_eof331 + goto _test_eof238 } - st_case_331: -//line msg_parse.go:10333 + st_case_238: +//line msg_parse.go:5974 switch data[p] { case 9: - goto tr451 + goto tr281 case 32: - goto tr451 + goto tr281 case 58: - goto tr452 + goto tr282 case 82: - goto st332 + goto st239 case 86: - goto st341 + goto st248 case 88: - goto st345 + goto st252 case 114: - goto st332 + goto st239 case 118: - goto st341 + goto st248 case 120: - goto st345 + goto st252 } - goto tr463 - st332: + goto tr293 + st239: if p++; p == pe { - goto _test_eof332 + goto _test_eof239 } - st_case_332: + st_case_239: switch data[p] { case 82: - goto st333 + goto st240 case 114: - goto st333 + goto st240 } - goto tr274 - st333: + goto tr105 + st240: if p++; p == pe { - goto _test_eof333 + goto _test_eof240 } - st_case_333: + st_case_240: switch data[p] { case 79: - goto st334 + goto st241 case 111: - goto st334 + goto st241 } - goto tr274 - st334: + goto tr105 + st241: if p++; p == pe { - goto _test_eof334 + goto _test_eof241 } - st_case_334: + st_case_241: switch data[p] { case 82: - goto st335 + goto st242 case 114: - goto st335 + goto st242 } - goto tr274 - st335: + goto tr105 + st242: if p++; p == pe { - goto _test_eof335 + goto _test_eof242 } - st_case_335: + st_case_242: if data[p] == 45 { - goto st336 + goto st243 } - goto tr274 - st336: + goto tr105 + st243: if p++; p == pe { - goto _test_eof336 + goto _test_eof243 } - st_case_336: + st_case_243: switch data[p] { case 73: - goto st337 + goto st244 case 105: - goto st337 + goto st244 } - goto tr274 - st337: + goto tr105 + st244: if p++; p == pe { - goto _test_eof337 + goto _test_eof244 } - st_case_337: + st_case_244: switch data[p] { case 78: - goto st338 + goto st245 case 110: - goto st338 + goto st245 } - goto tr274 - st338: + goto tr105 + st245: if p++; p == pe { - goto _test_eof338 + goto _test_eof245 } - st_case_338: + st_case_245: switch data[p] { case 70: - goto st339 + goto st246 case 102: - goto st339 + goto st246 } - goto tr274 - st339: + goto tr105 + st246: if p++; p == pe { - goto _test_eof339 + goto _test_eof246 } - st_case_339: + st_case_246: switch data[p] { case 79: - goto st340 + goto st247 case 111: - goto st340 + goto st247 } - goto tr274 - st340: + goto tr105 + st247: if p++; p == pe { - goto _test_eof340 + goto _test_eof247 } - st_case_340: + st_case_247: switch data[p] { case 9: - goto tr507 + goto tr337 case 32: - goto tr507 + goto tr337 case 58: - goto tr508 + goto tr338 } goto st0 - st341: + st248: if p++; p == pe { - goto _test_eof341 + goto _test_eof248 } - st_case_341: + st_case_248: switch data[p] { case 69: - goto st342 + goto st249 case 101: - goto st342 + goto st249 } - goto tr274 - st342: + goto tr105 + st249: if p++; p == pe { - goto _test_eof342 + goto _test_eof249 } - st_case_342: + st_case_249: switch data[p] { case 78: - goto st343 + goto st250 case 110: - goto st343 + goto st250 } - goto tr274 - st343: + goto tr105 + st250: if p++; p == pe { - goto _test_eof343 + goto _test_eof250 } - st_case_343: + st_case_250: switch data[p] { case 84: - goto st344 + goto st251 case 116: - goto st344 + goto st251 } - goto tr274 - st344: + goto tr105 + st251: if p++; p == pe { - goto _test_eof344 + goto _test_eof251 } - st_case_344: + st_case_251: switch data[p] { case 9: - goto tr512 + goto tr342 case 32: - goto tr512 + goto tr342 case 58: - goto tr513 + goto tr343 } goto st0 - st345: + st252: if p++; p == pe { - goto _test_eof345 + goto _test_eof252 } - st_case_345: + st_case_252: switch data[p] { case 80: - goto st346 + goto st253 case 112: - goto st346 + goto st253 } - goto tr463 - st346: + goto tr293 + st253: if p++; p == pe { - goto _test_eof346 + goto _test_eof253 } - st_case_346: + st_case_253: switch data[p] { case 73: - goto st347 + goto st254 case 105: - goto st347 + goto st254 } - goto tr463 - st347: + goto tr293 + st254: if p++; p == pe { - goto _test_eof347 + goto _test_eof254 } - st_case_347: + st_case_254: switch data[p] { case 82: - goto st348 + goto st255 case 114: - goto st348 + goto st255 } - goto tr463 - st348: + goto tr293 + st255: if p++; p == pe { - goto _test_eof348 + goto _test_eof255 } - st_case_348: + st_case_255: switch data[p] { case 69: - goto st349 + goto st256 case 101: - goto st349 + goto st256 } - goto tr463 - st349: + goto tr293 + st256: if p++; p == pe { - goto _test_eof349 + goto _test_eof256 } - st_case_349: + st_case_256: switch data[p] { case 83: - goto st350 + goto st257 case 115: - goto st350 + goto st257 } - goto tr463 - st350: + goto tr293 + st257: if p++; p == pe { - goto _test_eof350 + goto _test_eof257 } - st_case_350: + st_case_257: switch data[p] { case 9: - goto st350 + goto st257 case 32: - goto st350 + goto st257 case 58: - goto st351 + goto st258 } goto st0 - st351: + st258: if p++; p == pe { - goto _test_eof351 + goto _test_eof258 } - st_case_351: + st_case_258: _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st351 + goto st258 case 32: - goto st351 + goto st258 case 525: - goto st353 + goto st260 } if 48 <= _widec && _widec <= 57 { - goto tr520 + goto tr350 } goto st0 -tr520: -//line msg_parse.rl:327 +tr350: +//line msg_parse.rl:344 msg.Expires=0 -//line msg_parse.rl:214 +//line msg_parse.rl:195 msg.Expires = msg.Expires * 10 + (int(data[p]) - 0x30) - goto st352 -tr522: -//line msg_parse.rl:214 + goto st259 +tr352: +//line msg_parse.rl:195 msg.Expires = msg.Expires * 10 + (int(data[p]) - 0x30) - goto st352 - st352: + goto st259 + st259: if p++; p == pe { - goto _test_eof352 + goto _test_eof259 } - st_case_352: -//line msg_parse.go:10629 + st_case_259: +//line msg_parse.go:6270 if data[p] == 13 { - goto st238 + goto st144 } if 48 <= data[p] && data[p] <= 57 { - goto tr522 + goto tr352 } goto st0 - st353: + st260: if p++; p == pe { - goto _test_eof353 + goto _test_eof260 } - st_case_353: + st_case_260: if data[p] == 10 { - goto tr523 + goto tr353 } goto st0 -tr523: -//line msg_parse.rl:238 - line++; linep = p; - goto st354 - st354: +tr353: +//line msg_parse.rl:50 + + line++ + linep = p + 1 + + goto st261 + st261: if p++; p == pe { - goto _test_eof354 + goto _test_eof261 } - st_case_354: -//line msg_parse.go:10655 + st_case_261: +//line msg_parse.go:6299 switch data[p] { case 9: - goto st355 + goto st262 case 32: - goto st355 + goto st262 } goto st0 - st355: + st262: if p++; p == pe { - goto _test_eof355 + goto _test_eof262 } - st_case_355: + st_case_262: switch data[p] { case 9: - goto st355 + goto st262 case 32: - goto st355 + goto st262 } if 48 <= data[p] && data[p] <= 57 { - goto tr520 + goto tr350 } goto st0 -tr249: -//line msg_parse.rl:59 +tr80: +//line msg_parse.rl:55 mark = p - goto st356 - st356: + goto st263 + st263: if p++; p == pe { - goto _test_eof356 + goto _test_eof263 } - st_case_356: -//line msg_parse.go:10689 + st_case_263: +//line msg_parse.go:6333 switch data[p] { case 9: - goto tr525 + goto tr355 case 32: - goto tr525 + goto tr355 case 58: - goto tr526 + goto tr356 case 82: - goto st357 + goto st264 case 114: - goto st357 + goto st264 } goto st0 - st357: + st264: if p++; p == pe { - goto _test_eof357 + goto _test_eof264 } - st_case_357: + st_case_264: switch data[p] { case 79: - goto st358 + goto st265 case 111: - goto st358 + goto st265 } - goto tr274 - st358: + goto tr105 + st265: if p++; p == pe { - goto _test_eof358 + goto _test_eof265 } - st_case_358: + st_case_265: switch data[p] { case 77: - goto st359 + goto st266 case 109: - goto st359 + goto st266 } - goto tr274 - st359: + goto tr105 + st266: if p++; p == pe { - goto _test_eof359 + goto _test_eof266 } - st_case_359: + st_case_266: switch data[p] { case 9: - goto tr525 + goto tr355 case 32: - goto tr525 + goto tr355 case 58: - goto tr526 + goto tr356 } goto st0 -tr250: -//line msg_parse.rl:59 +tr81: +//line msg_parse.rl:55 mark = p - goto st360 - st360: + goto st267 + st267: if p++; p == pe { - goto _test_eof360 + goto _test_eof267 } - st_case_360: -//line msg_parse.go:10752 + st_case_267: +//line msg_parse.go:6396 switch data[p] { case 9: - goto st248 + goto st155 case 32: - goto st248 + goto st155 case 58: - goto st249 + goto st156 case 78: - goto st361 + goto st268 case 110: - goto st361 + goto st268 } - goto tr274 - st361: + goto tr105 + st268: if p++; p == pe { - goto _test_eof361 + goto _test_eof268 } - st_case_361: + st_case_268: if data[p] == 45 { - goto st362 + goto st269 } - goto tr274 - st362: + goto tr105 + st269: if p++; p == pe { - goto _test_eof362 + goto _test_eof269 } - st_case_362: + st_case_269: switch data[p] { case 82: - goto st363 + goto st270 case 114: - goto st363 + goto st270 } - goto tr274 - st363: + goto tr105 + st270: if p++; p == pe { - goto _test_eof363 + goto _test_eof270 } - st_case_363: + st_case_270: switch data[p] { case 69: - goto st364 + goto st271 case 101: - goto st364 + goto st271 } - goto tr274 - st364: + goto tr105 + st271: if p++; p == pe { - goto _test_eof364 + goto _test_eof271 } - st_case_364: + st_case_271: switch data[p] { case 80: - goto st365 + goto st272 case 112: - goto st365 + goto st272 } - goto tr274 - st365: + goto tr105 + st272: if p++; p == pe { - goto _test_eof365 + goto _test_eof272 } - st_case_365: + st_case_272: switch data[p] { case 76: - goto st366 + goto st273 case 108: - goto st366 + goto st273 } - goto tr274 - st366: + goto tr105 + st273: if p++; p == pe { - goto _test_eof366 + goto _test_eof273 } - st_case_366: + st_case_273: switch data[p] { case 89: - goto st367 + goto st274 case 121: - goto st367 + goto st274 } - goto tr274 - st367: + goto tr105 + st274: if p++; p == pe { - goto _test_eof367 + goto _test_eof274 } - st_case_367: + st_case_274: if data[p] == 45 { - goto st368 + goto st275 } - goto tr274 - st368: + goto tr105 + st275: if p++; p == pe { - goto _test_eof368 + goto _test_eof275 } - st_case_368: + st_case_275: switch data[p] { case 84: - goto st369 + goto st276 case 116: - goto st369 + goto st276 } - goto tr274 - st369: + goto tr105 + st276: if p++; p == pe { - goto _test_eof369 + goto _test_eof276 } - st_case_369: + st_case_276: switch data[p] { case 79: - goto st370 + goto st277 case 111: - goto st370 + goto st277 } - goto tr274 - st370: + goto tr105 + st277: if p++; p == pe { - goto _test_eof370 + goto _test_eof277 } - st_case_370: + st_case_277: switch data[p] { case 9: - goto tr540 + goto tr370 case 32: - goto tr540 + goto tr370 case 58: - goto tr541 + goto tr371 } goto st0 -tr251: -//line msg_parse.rl:59 +tr82: +//line msg_parse.rl:55 mark = p - goto st371 - st371: + goto st278 + st278: if p++; p == pe { - goto _test_eof371 + goto _test_eof278 } - st_case_371: -//line msg_parse.go:10893 + st_case_278: +//line msg_parse.go:6537 switch data[p] { case 9: - goto tr542 + goto tr372 case 32: - goto tr542 + goto tr372 case 58: - goto tr543 + goto tr373 } goto st0 - st372: + st279: if p++; p == pe { - goto _test_eof372 + goto _test_eof279 } - st_case_372: + st_case_279: switch data[p] { case 9: - goto st372 + goto st279 case 32: - goto st372 + goto st279 case 58: - goto st373 + goto st280 } goto st0 - st373: + st280: if p++; p == pe { - goto _test_eof373 + goto _test_eof280 } - st_case_373: + st_case_280: _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st373 + goto st280 case 32: - goto st373 + goto st280 case 525: - goto st375 + goto st282 } if 48 <= _widec && _widec <= 57 { - goto tr545 + goto tr375 } goto st0 -tr545: -//line msg_parse.rl:324 +tr375: +//line msg_parse.rl:341 clen=0 -//line msg_parse.rl:198 +//line msg_parse.rl:179 clen = clen * 10 + (int(data[p]) - 0x30) -//line msg_parse.rl:327 +//line msg_parse.rl:344 msg.Expires=0 -//line msg_parse.rl:214 +//line msg_parse.rl:195 msg.Expires = msg.Expires * 10 + (int(data[p]) - 0x30) -//line msg_parse.rl:328 +//line msg_parse.rl:345 msg.MaxForwards=0 -//line msg_parse.rl:218 +//line msg_parse.rl:199 msg.MaxForwards = msg.MaxForwards * 10 + (int(data[p]) - 0x30) -//line msg_parse.rl:329 +//line msg_parse.rl:346 msg.MinExpires=0 -//line msg_parse.rl:222 +//line msg_parse.rl:203 msg.MinExpires = msg.MinExpires * 10 + (int(data[p]) - 0x30) - goto st374 -tr547: -//line msg_parse.rl:198 + goto st281 +tr377: +//line msg_parse.rl:179 clen = clen * 10 + (int(data[p]) - 0x30) -//line msg_parse.rl:214 +//line msg_parse.rl:195 msg.Expires = msg.Expires * 10 + (int(data[p]) - 0x30) -//line msg_parse.rl:218 +//line msg_parse.rl:199 msg.MaxForwards = msg.MaxForwards * 10 + (int(data[p]) - 0x30) -//line msg_parse.rl:222 +//line msg_parse.rl:203 msg.MinExpires = msg.MinExpires * 10 + (int(data[p]) - 0x30) - goto st374 - st374: + goto st281 + st281: if p++; p == pe { - goto _test_eof374 + goto _test_eof281 } - st_case_374: -//line msg_parse.go:10990 + st_case_281: +//line msg_parse.go:6634 if data[p] == 13 { - goto st238 + goto st144 } if 48 <= data[p] && data[p] <= 57 { - goto tr547 + goto tr377 } goto st0 - st375: + st282: if p++; p == pe { - goto _test_eof375 + goto _test_eof282 } - st_case_375: + st_case_282: if data[p] == 10 { - goto tr548 + goto tr378 } goto st0 -tr548: -//line msg_parse.rl:238 - line++; linep = p; - goto st376 - st376: +tr378: +//line msg_parse.rl:50 + + line++ + linep = p + 1 + + goto st283 + st283: if p++; p == pe { - goto _test_eof376 + goto _test_eof283 } - st_case_376: -//line msg_parse.go:11016 + st_case_283: +//line msg_parse.go:6663 switch data[p] { case 9: - goto st377 + goto st284 case 32: - goto st377 + goto st284 } goto st0 - st377: + st284: if p++; p == pe { - goto _test_eof377 + goto _test_eof284 } - st_case_377: + st_case_284: switch data[p] { case 9: - goto st377 + goto st284 case 32: - goto st377 + goto st284 } if 48 <= data[p] && data[p] <= 57 { - goto tr545 + goto tr375 } goto st0 -tr253: -//line msg_parse.rl:59 +tr84: +//line msg_parse.rl:55 mark = p - goto st378 - st378: + goto st285 + st285: if p++; p == pe { - goto _test_eof378 + goto _test_eof285 } - st_case_378: -//line msg_parse.go:11050 + st_case_285: +//line msg_parse.go:6697 switch data[p] { case 9: - goto tr417 + goto tr247 case 32: - goto tr417 + goto tr247 case 58: - goto tr418 + goto tr248 case 65: - goto st379 + goto st286 case 73: - goto st395 + goto st302 case 97: - goto st379 + goto st286 case 105: - goto st395 + goto st302 } - goto tr242 - st379: + goto tr73 + st286: if p++; p == pe { - goto _test_eof379 + goto _test_eof286 } - st_case_379: + st_case_286: switch data[p] { case 88: - goto st380 + goto st287 case 120: - goto st380 + goto st287 } - goto tr463 - st380: + goto tr293 + st287: if p++; p == pe { - goto _test_eof380 + goto _test_eof287 } - st_case_380: + st_case_287: if data[p] == 45 { - goto st381 + goto st288 } - goto tr463 - st381: + goto tr293 + st288: if p++; p == pe { - goto _test_eof381 + goto _test_eof288 } - st_case_381: + st_case_288: switch data[p] { case 70: - goto st382 + goto st289 case 102: - goto st382 + goto st289 } - goto tr463 - st382: + goto tr293 + st289: if p++; p == pe { - goto _test_eof382 + goto _test_eof289 } - st_case_382: + st_case_289: switch data[p] { case 79: - goto st383 + goto st290 case 111: - goto st383 + goto st290 } - goto tr463 - st383: + goto tr293 + st290: if p++; p == pe { - goto _test_eof383 + goto _test_eof290 } - st_case_383: + st_case_290: switch data[p] { case 82: - goto st384 + goto st291 case 114: - goto st384 + goto st291 } - goto tr463 - st384: + goto tr293 + st291: if p++; p == pe { - goto _test_eof384 + goto _test_eof291 } - st_case_384: + st_case_291: switch data[p] { case 87: - goto st385 + goto st292 case 119: - goto st385 + goto st292 } - goto tr463 - st385: + goto tr293 + st292: if p++; p == pe { - goto _test_eof385 + goto _test_eof292 } - st_case_385: + st_case_292: switch data[p] { case 65: - goto st386 + goto st293 case 97: - goto st386 + goto st293 } - goto tr463 - st386: + goto tr293 + st293: if p++; p == pe { - goto _test_eof386 + goto _test_eof293 } - st_case_386: + st_case_293: switch data[p] { case 82: - goto st387 + goto st294 case 114: - goto st387 + goto st294 } - goto tr463 - st387: + goto tr293 + st294: if p++; p == pe { - goto _test_eof387 + goto _test_eof294 } - st_case_387: + st_case_294: switch data[p] { case 68: - goto st388 + goto st295 case 100: - goto st388 + goto st295 } - goto tr463 - st388: + goto tr293 + st295: if p++; p == pe { - goto _test_eof388 + goto _test_eof295 } - st_case_388: + st_case_295: switch data[p] { case 83: - goto st389 + goto st296 case 115: - goto st389 + goto st296 } - goto tr463 - st389: + goto tr293 + st296: if p++; p == pe { - goto _test_eof389 + goto _test_eof296 } - st_case_389: + st_case_296: switch data[p] { case 9: - goto st389 + goto st296 case 32: - goto st389 + goto st296 case 58: - goto st390 + goto st297 } goto st0 - st390: + st297: if p++; p == pe { - goto _test_eof390 + goto _test_eof297 } - st_case_390: + st_case_297: _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st390 + goto st297 case 32: - goto st390 + goto st297 case 525: - goto st392 + goto st299 } if 48 <= _widec && _widec <= 57 { - goto tr563 + goto tr393 } goto st0 -tr563: -//line msg_parse.rl:328 +tr393: +//line msg_parse.rl:345 msg.MaxForwards=0 -//line msg_parse.rl:218 +//line msg_parse.rl:199 msg.MaxForwards = msg.MaxForwards * 10 + (int(data[p]) - 0x30) - goto st391 -tr565: -//line msg_parse.rl:218 + goto st298 +tr395: +//line msg_parse.rl:199 msg.MaxForwards = msg.MaxForwards * 10 + (int(data[p]) - 0x30) - goto st391 - st391: + goto st298 + st298: if p++; p == pe { - goto _test_eof391 + goto _test_eof298 } - st_case_391: -//line msg_parse.go:11242 + st_case_298: +//line msg_parse.go:6889 if data[p] == 13 { - goto st238 + goto st144 } if 48 <= data[p] && data[p] <= 57 { - goto tr565 + goto tr395 } goto st0 - st392: + st299: if p++; p == pe { - goto _test_eof392 + goto _test_eof299 } - st_case_392: + st_case_299: if data[p] == 10 { - goto tr566 + goto tr396 } goto st0 -tr566: -//line msg_parse.rl:238 - line++; linep = p; - goto st393 - st393: +tr396: +//line msg_parse.rl:50 + + line++ + linep = p + 1 + + goto st300 + st300: if p++; p == pe { - goto _test_eof393 + goto _test_eof300 } - st_case_393: -//line msg_parse.go:11268 + st_case_300: +//line msg_parse.go:6918 switch data[p] { case 9: - goto st394 + goto st301 case 32: - goto st394 + goto st301 } goto st0 - st394: + st301: if p++; p == pe { - goto _test_eof394 + goto _test_eof301 } - st_case_394: + st_case_301: switch data[p] { case 9: - goto st394 + goto st301 case 32: - goto st394 + goto st301 } if 48 <= data[p] && data[p] <= 57 { - goto tr563 + goto tr393 } goto st0 - st395: + st302: if p++; p == pe { - goto _test_eof395 + goto _test_eof302 } - st_case_395: + st_case_302: switch data[p] { case 77: - goto st396 + goto st303 case 78: - goto st406 + goto st313 case 109: - goto st396 + goto st303 case 110: - goto st406 + goto st313 } - goto tr242 - st396: + goto tr73 + st303: if p++; p == pe { - goto _test_eof396 + goto _test_eof303 } - st_case_396: + st_case_303: switch data[p] { case 69: - goto st397 + goto st304 case 101: - goto st397 + goto st304 } - goto tr274 - st397: + goto tr105 + st304: if p++; p == pe { - goto _test_eof397 + goto _test_eof304 } - st_case_397: + st_case_304: if data[p] == 45 { - goto st398 + goto st305 } - goto tr274 - st398: + goto tr105 + st305: if p++; p == pe { - goto _test_eof398 + goto _test_eof305 } - st_case_398: + st_case_305: switch data[p] { case 86: - goto st399 + goto st306 case 118: - goto st399 + goto st306 } - goto tr274 - st399: + goto tr105 + st306: if p++; p == pe { - goto _test_eof399 + goto _test_eof306 } - st_case_399: + st_case_306: switch data[p] { case 69: - goto st400 + goto st307 case 101: - goto st400 + goto st307 } - goto tr274 - st400: + goto tr105 + st307: if p++; p == pe { - goto _test_eof400 + goto _test_eof307 } - st_case_400: + st_case_307: switch data[p] { case 82: - goto st401 + goto st308 case 114: - goto st401 + goto st308 } - goto tr274 - st401: + goto tr105 + st308: if p++; p == pe { - goto _test_eof401 + goto _test_eof308 } - st_case_401: + st_case_308: switch data[p] { case 83: - goto st402 + goto st309 case 115: - goto st402 + goto st309 } - goto tr274 - st402: + goto tr105 + st309: if p++; p == pe { - goto _test_eof402 + goto _test_eof309 } - st_case_402: + st_case_309: switch data[p] { case 73: - goto st403 + goto st310 case 105: - goto st403 + goto st310 } - goto tr274 - st403: + goto tr105 + st310: if p++; p == pe { - goto _test_eof403 + goto _test_eof310 } - st_case_403: + st_case_310: switch data[p] { case 79: - goto st404 + goto st311 case 111: - goto st404 + goto st311 } - goto tr274 - st404: + goto tr105 + st311: if p++; p == pe { - goto _test_eof404 + goto _test_eof311 } - st_case_404: + st_case_311: switch data[p] { case 78: - goto st405 + goto st312 case 110: - goto st405 + goto st312 } - goto tr274 - st405: + goto tr105 + st312: if p++; p == pe { - goto _test_eof405 + goto _test_eof312 } - st_case_405: + st_case_312: switch data[p] { case 9: - goto tr579 + goto tr409 case 32: - goto tr579 + goto tr409 case 58: - goto tr580 + goto tr410 } goto st0 - st406: + st313: if p++; p == pe { - goto _test_eof406 + goto _test_eof313 } - st_case_406: + st_case_313: if data[p] == 45 { - goto st407 + goto st314 } - goto tr463 - st407: + goto tr293 + st314: if p++; p == pe { - goto _test_eof407 + goto _test_eof314 } - st_case_407: + st_case_314: switch data[p] { case 69: - goto st408 + goto st315 case 101: - goto st408 + goto st315 } - goto tr463 - st408: + goto tr293 + st315: if p++; p == pe { - goto _test_eof408 + goto _test_eof315 } - st_case_408: + st_case_315: switch data[p] { case 88: - goto st409 + goto st316 case 120: - goto st409 + goto st316 } - goto tr463 - st409: + goto tr293 + st316: if p++; p == pe { - goto _test_eof409 + goto _test_eof316 } - st_case_409: + st_case_316: switch data[p] { case 80: - goto st410 + goto st317 case 112: - goto st410 + goto st317 } - goto tr463 - st410: + goto tr293 + st317: if p++; p == pe { - goto _test_eof410 + goto _test_eof317 } - st_case_410: + st_case_317: switch data[p] { case 73: - goto st411 + goto st318 case 105: - goto st411 + goto st318 } - goto tr463 - st411: + goto tr293 + st318: if p++; p == pe { - goto _test_eof411 + goto _test_eof318 } - st_case_411: + st_case_318: switch data[p] { case 82: - goto st412 + goto st319 case 114: - goto st412 + goto st319 } - goto tr463 - st412: + goto tr293 + st319: if p++; p == pe { - goto _test_eof412 + goto _test_eof319 } - st_case_412: + st_case_319: switch data[p] { case 69: - goto st413 + goto st320 case 101: - goto st413 + goto st320 } - goto tr463 - st413: + goto tr293 + st320: if p++; p == pe { - goto _test_eof413 + goto _test_eof320 } - st_case_413: + st_case_320: switch data[p] { case 83: - goto st414 + goto st321 case 115: - goto st414 + goto st321 } - goto tr463 - st414: + goto tr293 + st321: if p++; p == pe { - goto _test_eof414 + goto _test_eof321 } - st_case_414: + st_case_321: switch data[p] { case 9: - goto st414 + goto st321 case 32: - goto st414 + goto st321 case 58: - goto st415 + goto st322 } goto st0 - st415: + st322: if p++; p == pe { - goto _test_eof415 + goto _test_eof322 } - st_case_415: + st_case_322: _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st415 + goto st322 case 32: - goto st415 + goto st322 case 525: - goto st417 + goto st324 } if 48 <= _widec && _widec <= 57 { - goto tr590 + goto tr420 } goto st0 -tr590: -//line msg_parse.rl:329 +tr420: +//line msg_parse.rl:346 msg.MinExpires=0 -//line msg_parse.rl:222 +//line msg_parse.rl:203 msg.MinExpires = msg.MinExpires * 10 + (int(data[p]) - 0x30) - goto st416 -tr592: -//line msg_parse.rl:222 + goto st323 +tr422: +//line msg_parse.rl:203 msg.MinExpires = msg.MinExpires * 10 + (int(data[p]) - 0x30) - goto st416 - st416: + goto st323 + st323: if p++; p == pe { - goto _test_eof416 + goto _test_eof323 } - st_case_416: -//line msg_parse.go:11576 + st_case_323: +//line msg_parse.go:7226 if data[p] == 13 { - goto st238 + goto st144 } if 48 <= data[p] && data[p] <= 57 { - goto tr592 + goto tr422 } goto st0 - st417: + st324: if p++; p == pe { - goto _test_eof417 + goto _test_eof324 } - st_case_417: + st_case_324: if data[p] == 10 { - goto tr593 + goto tr423 } goto st0 -tr593: -//line msg_parse.rl:238 - line++; linep = p; - goto st418 - st418: +tr423: +//line msg_parse.rl:50 + + line++ + linep = p + 1 + + goto st325 + st325: if p++; p == pe { - goto _test_eof418 + goto _test_eof325 } - st_case_418: -//line msg_parse.go:11602 + st_case_325: +//line msg_parse.go:7255 switch data[p] { case 9: - goto st419 + goto st326 case 32: - goto st419 + goto st326 } goto st0 - st419: + st326: if p++; p == pe { - goto _test_eof419 + goto _test_eof326 } - st_case_419: + st_case_326: switch data[p] { case 9: - goto st419 + goto st326 case 32: - goto st419 + goto st326 } if 48 <= data[p] && data[p] <= 57 { - goto tr590 + goto tr420 } goto st0 -tr254: -//line msg_parse.rl:59 +tr85: +//line msg_parse.rl:55 mark = p - goto st420 - st420: + goto st327 + st327: if p++; p == pe { - goto _test_eof420 + goto _test_eof327 } - st_case_420: -//line msg_parse.go:11636 + st_case_327: +//line msg_parse.go:7289 switch data[p] { case 9: - goto tr512 + goto tr342 case 32: - goto tr512 + goto tr342 case 58: - goto tr513 + goto tr343 case 82: - goto st421 + goto st328 case 114: - goto st421 + goto st328 } goto st0 - st421: + st328: if p++; p == pe { - goto _test_eof421 + goto _test_eof328 } - st_case_421: + st_case_328: switch data[p] { case 71: - goto st422 + goto st329 case 103: - goto st422 + goto st329 } - goto tr274 - st422: + goto tr105 + st329: if p++; p == pe { - goto _test_eof422 + goto _test_eof329 } - st_case_422: + st_case_329: switch data[p] { case 65: - goto st423 + goto st330 case 97: - goto st423 + goto st330 } - goto tr274 - st423: + goto tr105 + st330: if p++; p == pe { - goto _test_eof423 + goto _test_eof330 } - st_case_423: + st_case_330: switch data[p] { case 78: - goto st424 + goto st331 case 110: - goto st424 + goto st331 } - goto tr274 - st424: + goto tr105 + st331: if p++; p == pe { - goto _test_eof424 + goto _test_eof331 } - st_case_424: + st_case_331: switch data[p] { case 73: - goto st425 + goto st332 case 105: - goto st425 + goto st332 } - goto tr274 - st425: + goto tr105 + st332: if p++; p == pe { - goto _test_eof425 + goto _test_eof332 } - st_case_425: + st_case_332: switch data[p] { case 90: - goto st426 + goto st333 case 122: - goto st426 + goto st333 } - goto tr274 - st426: + goto tr105 + st333: if p++; p == pe { - goto _test_eof426 + goto _test_eof333 } - st_case_426: + st_case_333: switch data[p] { case 65: - goto st427 + goto st334 case 97: - goto st427 + goto st334 } - goto tr274 - st427: + goto tr105 + st334: if p++; p == pe { - goto _test_eof427 + goto _test_eof334 } - st_case_427: + st_case_334: switch data[p] { case 84: - goto st428 + goto st335 case 116: - goto st428 + goto st335 } - goto tr274 - st428: + goto tr105 + st335: if p++; p == pe { - goto _test_eof428 + goto _test_eof335 } - st_case_428: + st_case_335: switch data[p] { case 73: - goto st429 + goto st336 case 105: - goto st429 + goto st336 } - goto tr274 - st429: + goto tr105 + st336: if p++; p == pe { - goto _test_eof429 + goto _test_eof336 } - st_case_429: + st_case_336: switch data[p] { case 79: - goto st430 + goto st337 case 111: - goto st430 + goto st337 } - goto tr274 - st430: + goto tr105 + st337: if p++; p == pe { - goto _test_eof430 + goto _test_eof337 } - st_case_430: + st_case_337: switch data[p] { case 78: - goto st431 + goto st338 case 110: - goto st431 + goto st338 } - goto tr274 - st431: + goto tr105 + st338: if p++; p == pe { - goto _test_eof431 + goto _test_eof338 } - st_case_431: + st_case_338: switch data[p] { case 9: - goto tr606 + goto tr436 case 32: - goto tr606 + goto tr436 case 58: - goto tr607 + goto tr437 } goto st0 -tr255: -//line msg_parse.rl:59 +tr86: +//line msg_parse.rl:55 mark = p - goto st432 - st432: + goto st339 + st339: if p++; p == pe { - goto _test_eof432 + goto _test_eof339 } - st_case_432: -//line msg_parse.go:11795 + st_case_339: +//line msg_parse.go:7448 switch data[p] { case 45: - goto st433 + goto st340 case 82: - goto st451 + goto st358 case 114: - goto st451 + goto st358 } - goto tr274 - st433: + goto tr105 + st340: if p++; p == pe { - goto _test_eof433 + goto _test_eof340 } - st_case_433: + st_case_340: switch data[p] { case 65: - goto st434 + goto st341 case 97: - goto st434 + goto st341 } - goto tr274 - st434: + goto tr105 + st341: if p++; p == pe { - goto _test_eof434 + goto _test_eof341 } - st_case_434: + st_case_341: switch data[p] { case 83: - goto st435 + goto st342 case 115: - goto st435 + goto st342 } - goto tr274 - st435: + goto tr105 + st342: if p++; p == pe { - goto _test_eof435 + goto _test_eof342 } - st_case_435: + st_case_342: switch data[p] { case 83: - goto st436 + goto st343 case 115: - goto st436 + goto st343 } - goto tr274 - st436: + goto tr105 + st343: if p++; p == pe { - goto _test_eof436 + goto _test_eof343 } - st_case_436: + st_case_343: switch data[p] { case 69: - goto st437 + goto st344 case 101: - goto st437 + goto st344 } - goto tr274 - st437: + goto tr105 + st344: if p++; p == pe { - goto _test_eof437 + goto _test_eof344 } - st_case_437: + st_case_344: switch data[p] { case 82: - goto st438 + goto st345 case 114: - goto st438 + goto st345 } - goto tr274 - st438: + goto tr105 + st345: if p++; p == pe { - goto _test_eof438 + goto _test_eof345 } - st_case_438: + st_case_345: switch data[p] { case 84: - goto st439 + goto st346 case 116: - goto st439 + goto st346 } - goto tr274 - st439: + goto tr105 + st346: if p++; p == pe { - goto _test_eof439 + goto _test_eof346 } - st_case_439: + st_case_346: switch data[p] { case 69: - goto st440 + goto st347 case 101: - goto st440 + goto st347 } - goto tr274 - st440: + goto tr105 + st347: if p++; p == pe { - goto _test_eof440 + goto _test_eof347 } - st_case_440: + st_case_347: switch data[p] { case 68: - goto st441 + goto st348 case 100: - goto st441 + goto st348 } - goto tr274 - st441: + goto tr105 + st348: if p++; p == pe { - goto _test_eof441 + goto _test_eof348 } - st_case_441: + st_case_348: if data[p] == 45 { - goto st442 + goto st349 } - goto tr274 - st442: + goto tr105 + st349: if p++; p == pe { - goto _test_eof442 + goto _test_eof349 } - st_case_442: + st_case_349: switch data[p] { case 73: - goto st443 + goto st350 case 105: - goto st443 + goto st350 } - goto tr274 - st443: + goto tr105 + st350: if p++; p == pe { - goto _test_eof443 + goto _test_eof350 } - st_case_443: + st_case_350: switch data[p] { case 68: - goto st444 + goto st351 case 100: - goto st444 + goto st351 } - goto tr274 - st444: + goto tr105 + st351: if p++; p == pe { - goto _test_eof444 + goto _test_eof351 } - st_case_444: + st_case_351: switch data[p] { case 69: - goto st445 + goto st352 case 101: - goto st445 + goto st352 } - goto tr274 - st445: + goto tr105 + st352: if p++; p == pe { - goto _test_eof445 + goto _test_eof352 } - st_case_445: + st_case_352: switch data[p] { case 78: - goto st446 + goto st353 case 110: - goto st446 + goto st353 } - goto tr274 - st446: + goto tr105 + st353: if p++; p == pe { - goto _test_eof446 + goto _test_eof353 } - st_case_446: + st_case_353: switch data[p] { case 84: - goto st447 + goto st354 case 116: - goto st447 + goto st354 } - goto tr274 - st447: + goto tr105 + st354: if p++; p == pe { - goto _test_eof447 + goto _test_eof354 } - st_case_447: + st_case_354: switch data[p] { case 73: - goto st448 + goto st355 case 105: - goto st448 + goto st355 } - goto tr274 - st448: + goto tr105 + st355: if p++; p == pe { - goto _test_eof448 + goto _test_eof355 } - st_case_448: + st_case_355: switch data[p] { case 84: - goto st449 + goto st356 case 116: - goto st449 + goto st356 } - goto tr274 - st449: + goto tr105 + st356: if p++; p == pe { - goto _test_eof449 + goto _test_eof356 } - st_case_449: + st_case_356: switch data[p] { case 89: - goto st450 + goto st357 case 121: - goto st450 + goto st357 } - goto tr274 - st450: + goto tr105 + st357: if p++; p == pe { - goto _test_eof450 + goto _test_eof357 } - st_case_450: + st_case_357: switch data[p] { case 9: - goto tr627 + goto tr457 case 32: - goto tr627 + goto tr457 case 58: - goto tr628 + goto tr458 } goto st0 - st451: + st358: if p++; p == pe { - goto _test_eof451 + goto _test_eof358 } - st_case_451: + st_case_358: switch data[p] { case 73: - goto st452 + goto st359 case 79: - goto st458 + goto st365 case 105: - goto st452 + goto st359 case 111: - goto st458 + goto st365 } - goto tr274 - st452: + goto tr105 + st359: if p++; p == pe { - goto _test_eof452 + goto _test_eof359 } - st_case_452: + st_case_359: switch data[p] { case 79: - goto st453 + goto st360 case 111: - goto st453 + goto st360 } - goto tr274 - st453: + goto tr105 + st360: if p++; p == pe { - goto _test_eof453 + goto _test_eof360 } - st_case_453: + st_case_360: switch data[p] { case 82: - goto st454 + goto st361 case 114: - goto st454 + goto st361 } - goto tr274 - st454: + goto tr105 + st361: if p++; p == pe { - goto _test_eof454 + goto _test_eof361 } - st_case_454: + st_case_361: switch data[p] { case 73: - goto st455 + goto st362 case 105: - goto st455 + goto st362 } - goto tr274 - st455: + goto tr105 + st362: if p++; p == pe { - goto _test_eof455 + goto _test_eof362 } - st_case_455: + st_case_362: switch data[p] { case 84: - goto st456 + goto st363 case 116: - goto st456 + goto st363 } - goto tr274 - st456: + goto tr105 + st363: if p++; p == pe { - goto _test_eof456 + goto _test_eof363 } - st_case_456: + st_case_363: switch data[p] { case 89: - goto st457 + goto st364 case 121: - goto st457 + goto st364 } - goto tr274 - st457: + goto tr105 + st364: if p++; p == pe { - goto _test_eof457 + goto _test_eof364 } - st_case_457: + st_case_364: switch data[p] { case 9: - goto tr636 + goto tr466 case 32: - goto tr636 + goto tr466 case 58: - goto tr637 + goto tr467 } goto st0 - st458: + st365: if p++; p == pe { - goto _test_eof458 + goto _test_eof365 } - st_case_458: + st_case_365: switch data[p] { case 88: - goto st459 + goto st366 case 120: - goto st459 + goto st366 } - goto tr274 - st459: + goto tr105 + st366: if p++; p == pe { - goto _test_eof459 + goto _test_eof366 } - st_case_459: + st_case_366: switch data[p] { case 89: - goto st460 + goto st367 case 121: - goto st460 + goto st367 } - goto tr274 - st460: + goto tr105 + st367: if p++; p == pe { - goto _test_eof460 + goto _test_eof367 } - st_case_460: + st_case_367: if data[p] == 45 { - goto st461 + goto st368 } - goto tr274 - st461: + goto tr105 + st368: if p++; p == pe { - goto _test_eof461 + goto _test_eof368 } - st_case_461: + st_case_368: switch data[p] { case 65: - goto st462 + goto st369 case 82: - goto st483 + goto st390 case 97: - goto st462 + goto st369 case 114: - goto st483 + goto st390 } - goto tr274 - st462: + goto tr105 + st369: if p++; p == pe { - goto _test_eof462 + goto _test_eof369 } - st_case_462: + st_case_369: switch data[p] { case 85: - goto st463 + goto st370 case 117: - goto st463 + goto st370 } - goto tr274 - st463: + goto tr105 + st370: if p++; p == pe { - goto _test_eof463 + goto _test_eof370 } - st_case_463: + st_case_370: switch data[p] { case 84: - goto st464 + goto st371 case 116: - goto st464 + goto st371 } - goto tr274 - st464: + goto tr105 + st371: if p++; p == pe { - goto _test_eof464 + goto _test_eof371 } - st_case_464: + st_case_371: switch data[p] { case 72: - goto st465 + goto st372 case 104: - goto st465 + goto st372 } - goto tr274 - st465: + goto tr105 + st372: if p++; p == pe { - goto _test_eof465 + goto _test_eof372 } - st_case_465: + st_case_372: switch data[p] { case 69: - goto st466 + goto st373 case 79: - goto st474 + goto st381 case 101: - goto st466 + goto st373 case 111: - goto st474 + goto st381 } - goto tr274 - st466: + goto tr105 + st373: if p++; p == pe { - goto _test_eof466 + goto _test_eof373 } - st_case_466: + st_case_373: switch data[p] { case 78: - goto st467 + goto st374 case 110: - goto st467 + goto st374 } - goto tr274 - st467: + goto tr105 + st374: if p++; p == pe { - goto _test_eof467 + goto _test_eof374 } - st_case_467: + st_case_374: switch data[p] { case 84: - goto st468 + goto st375 case 116: - goto st468 + goto st375 } - goto tr274 - st468: + goto tr105 + st375: if p++; p == pe { - goto _test_eof468 + goto _test_eof375 } - st_case_468: + st_case_375: switch data[p] { case 73: - goto st469 + goto st376 case 105: - goto st469 + goto st376 } - goto tr274 - st469: + goto tr105 + st376: if p++; p == pe { - goto _test_eof469 + goto _test_eof376 } - st_case_469: + st_case_376: switch data[p] { case 67: - goto st470 + goto st377 case 99: - goto st470 + goto st377 } - goto tr274 - st470: + goto tr105 + st377: if p++; p == pe { - goto _test_eof470 + goto _test_eof377 } - st_case_470: + st_case_377: switch data[p] { case 65: - goto st471 + goto st378 case 97: - goto st471 + goto st378 } - goto tr274 - st471: + goto tr105 + st378: if p++; p == pe { - goto _test_eof471 + goto _test_eof378 } - st_case_471: + st_case_378: switch data[p] { case 84: - goto st472 + goto st379 case 116: - goto st472 + goto st379 } - goto tr274 - st472: + goto tr105 + st379: if p++; p == pe { - goto _test_eof472 + goto _test_eof379 } - st_case_472: + st_case_379: switch data[p] { case 69: - goto st473 + goto st380 case 101: - goto st473 + goto st380 } - goto tr274 - st473: + goto tr105 + st380: if p++; p == pe { - goto _test_eof473 + goto _test_eof380 } - st_case_473: + st_case_380: switch data[p] { case 9: - goto tr655 + goto tr485 case 32: - goto tr655 + goto tr485 case 58: - goto tr656 + goto tr486 } goto st0 - st474: + st381: if p++; p == pe { - goto _test_eof474 + goto _test_eof381 } - st_case_474: + st_case_381: switch data[p] { case 82: - goto st475 + goto st382 case 114: - goto st475 + goto st382 } - goto tr274 - st475: + goto tr105 + st382: if p++; p == pe { - goto _test_eof475 + goto _test_eof382 } - st_case_475: + st_case_382: switch data[p] { case 73: - goto st476 + goto st383 case 105: - goto st476 + goto st383 } - goto tr274 - st476: + goto tr105 + st383: if p++; p == pe { - goto _test_eof476 + goto _test_eof383 } - st_case_476: + st_case_383: switch data[p] { case 90: - goto st477 + goto st384 case 122: - goto st477 + goto st384 } - goto tr274 - st477: + goto tr105 + st384: if p++; p == pe { - goto _test_eof477 + goto _test_eof384 } - st_case_477: + st_case_384: switch data[p] { case 65: - goto st478 + goto st385 case 97: - goto st478 + goto st385 } - goto tr274 - st478: + goto tr105 + st385: if p++; p == pe { - goto _test_eof478 + goto _test_eof385 } - st_case_478: + st_case_385: switch data[p] { case 84: - goto st479 + goto st386 case 116: - goto st479 + goto st386 } - goto tr274 - st479: + goto tr105 + st386: if p++; p == pe { - goto _test_eof479 + goto _test_eof386 } - st_case_479: + st_case_386: switch data[p] { case 73: - goto st480 + goto st387 case 105: - goto st480 + goto st387 } - goto tr274 - st480: + goto tr105 + st387: if p++; p == pe { - goto _test_eof480 + goto _test_eof387 } - st_case_480: + st_case_387: switch data[p] { case 79: - goto st481 + goto st388 case 111: - goto st481 + goto st388 } - goto tr274 - st481: + goto tr105 + st388: if p++; p == pe { - goto _test_eof481 + goto _test_eof388 } - st_case_481: + st_case_388: switch data[p] { case 78: - goto st482 + goto st389 case 110: - goto st482 + goto st389 } - goto tr274 - st482: + goto tr105 + st389: if p++; p == pe { - goto _test_eof482 + goto _test_eof389 } - st_case_482: + st_case_389: switch data[p] { case 9: - goto tr665 + goto tr495 case 32: - goto tr665 + goto tr495 case 58: - goto tr666 + goto tr496 } goto st0 - st483: + st390: if p++; p == pe { - goto _test_eof483 + goto _test_eof390 } - st_case_483: + st_case_390: switch data[p] { case 69: - goto st484 + goto st391 case 101: - goto st484 + goto st391 } - goto tr274 - st484: + goto tr105 + st391: if p++; p == pe { - goto _test_eof484 + goto _test_eof391 } - st_case_484: + st_case_391: switch data[p] { case 81: - goto st485 + goto st392 case 113: - goto st485 + goto st392 } - goto tr274 - st485: + goto tr105 + st392: if p++; p == pe { - goto _test_eof485 + goto _test_eof392 } - st_case_485: + st_case_392: switch data[p] { case 85: - goto st486 + goto st393 case 117: - goto st486 + goto st393 } - goto tr274 - st486: + goto tr105 + st393: if p++; p == pe { - goto _test_eof486 + goto _test_eof393 } - st_case_486: + st_case_393: switch data[p] { case 73: - goto st487 + goto st394 case 105: - goto st487 + goto st394 } - goto tr274 - st487: + goto tr105 + st394: if p++; p == pe { - goto _test_eof487 + goto _test_eof394 } - st_case_487: + st_case_394: switch data[p] { case 82: - goto st488 + goto st395 case 114: - goto st488 + goto st395 } - goto tr274 - st488: + goto tr105 + st395: if p++; p == pe { - goto _test_eof488 + goto _test_eof395 } - st_case_488: + st_case_395: switch data[p] { case 69: - goto st489 + goto st396 case 101: - goto st489 + goto st396 } - goto tr274 - st489: + goto tr105 + st396: if p++; p == pe { - goto _test_eof489 + goto _test_eof396 } - st_case_489: + st_case_396: switch data[p] { case 9: - goto tr673 + goto tr503 case 32: - goto tr673 + goto tr503 case 58: - goto tr674 + goto tr504 } goto st0 -tr256: -//line msg_parse.rl:59 +tr87: +//line msg_parse.rl:55 mark = p - goto st490 - st490: + goto st397 + st397: if p++; p == pe { - goto _test_eof490 + goto _test_eof397 } - st_case_490: -//line msg_parse.go:12516 + st_case_397: +//line msg_parse.go:8169 switch data[p] { case 9: - goto tr675 + goto tr505 case 32: - goto tr675 + goto tr505 case 58: - goto tr676 + goto tr506 case 69: - goto st491 + goto st398 case 79: - goto st546 + goto st453 case 101: - goto st491 + goto st398 case 111: - goto st546 + goto st453 } - goto tr274 - st491: + goto tr105 + st398: if p++; p == pe { - goto _test_eof491 + goto _test_eof398 } - st_case_491: + st_case_398: switch data[p] { case 67: - goto st492 + goto st399 case 70: - goto st502 + goto st409 case 77: - goto st513 + goto st420 case 80: - goto st526 + goto st433 case 81: - goto st532 + goto st439 case 84: - goto st537 + goto st444 case 99: - goto st492 + goto st399 case 102: - goto st502 + goto st409 case 109: - goto st513 + goto st420 case 112: - goto st526 + goto st433 case 113: - goto st532 + goto st439 case 116: - goto st537 + goto st444 } - goto tr274 - st492: + goto tr105 + st399: if p++; p == pe { - goto _test_eof492 + goto _test_eof399 } - st_case_492: + st_case_399: switch data[p] { case 79: - goto st493 + goto st400 case 111: - goto st493 + goto st400 } - goto tr274 - st493: + goto tr105 + st400: if p++; p == pe { - goto _test_eof493 + goto _test_eof400 } - st_case_493: + st_case_400: switch data[p] { case 82: - goto st494 + goto st401 case 114: - goto st494 + goto st401 } - goto tr274 - st494: + goto tr105 + st401: if p++; p == pe { - goto _test_eof494 + goto _test_eof401 } - st_case_494: + st_case_401: switch data[p] { case 68: - goto st495 + goto st402 case 100: - goto st495 + goto st402 } - goto tr274 - st495: + goto tr105 + st402: if p++; p == pe { - goto _test_eof495 + goto _test_eof402 } - st_case_495: + st_case_402: if data[p] == 45 { - goto st496 + goto st403 } - goto tr274 - st496: + goto tr105 + st403: if p++; p == pe { - goto _test_eof496 + goto _test_eof403 } - st_case_496: + st_case_403: switch data[p] { case 82: - goto st497 + goto st404 case 114: - goto st497 + goto st404 } - goto tr274 - st497: + goto tr105 + st404: if p++; p == pe { - goto _test_eof497 + goto _test_eof404 } - st_case_497: + st_case_404: switch data[p] { case 79: - goto st498 + goto st405 case 111: - goto st498 + goto st405 } - goto tr274 - st498: + goto tr105 + st405: if p++; p == pe { - goto _test_eof498 + goto _test_eof405 } - st_case_498: + st_case_405: switch data[p] { case 85: - goto st499 + goto st406 case 117: - goto st499 + goto st406 } - goto tr274 - st499: + goto tr105 + st406: if p++; p == pe { - goto _test_eof499 + goto _test_eof406 } - st_case_499: + st_case_406: switch data[p] { case 84: - goto st500 + goto st407 case 116: - goto st500 + goto st407 } - goto tr274 - st500: + goto tr105 + st407: if p++; p == pe { - goto _test_eof500 + goto _test_eof407 } - st_case_500: + st_case_407: switch data[p] { case 69: - goto st501 + goto st408 case 101: - goto st501 + goto st408 } - goto tr274 - st501: + goto tr105 + st408: if p++; p == pe { - goto _test_eof501 + goto _test_eof408 } - st_case_501: + st_case_408: switch data[p] { case 9: - goto tr694 + goto tr524 case 32: - goto tr694 + goto tr524 case 58: - goto tr695 + goto tr525 } goto st0 - st502: + st409: if p++; p == pe { - goto _test_eof502 + goto _test_eof409 } - st_case_502: + st_case_409: switch data[p] { case 69: - goto st503 + goto st410 case 101: - goto st503 + goto st410 } - goto tr274 - st503: + goto tr105 + st410: if p++; p == pe { - goto _test_eof503 + goto _test_eof410 } - st_case_503: + st_case_410: switch data[p] { case 82: - goto st504 + goto st411 case 114: - goto st504 + goto st411 } - goto tr274 - st504: + goto tr105 + st411: if p++; p == pe { - goto _test_eof504 + goto _test_eof411 } - st_case_504: + st_case_411: switch data[p] { case 45: - goto st505 + goto st412 case 82: - goto st508 + goto st415 case 114: - goto st508 + goto st415 } - goto tr274 - st505: + goto tr105 + st412: if p++; p == pe { - goto _test_eof505 + goto _test_eof412 } - st_case_505: + st_case_412: switch data[p] { case 84: - goto st506 + goto st413 case 116: - goto st506 + goto st413 } - goto tr274 - st506: + goto tr105 + st413: if p++; p == pe { - goto _test_eof506 + goto _test_eof413 } - st_case_506: + st_case_413: switch data[p] { case 79: - goto st507 + goto st414 case 111: - goto st507 + goto st414 } - goto tr274 - st507: + goto tr105 + st414: if p++; p == pe { - goto _test_eof507 + goto _test_eof414 } - st_case_507: + st_case_414: switch data[p] { case 9: - goto tr675 + goto tr505 case 32: - goto tr675 + goto tr505 case 58: - goto tr676 + goto tr506 } goto st0 - st508: + st415: if p++; p == pe { - goto _test_eof508 + goto _test_eof415 } - st_case_508: + st_case_415: switch data[p] { case 69: - goto st509 + goto st416 case 101: - goto st509 + goto st416 } - goto tr274 - st509: + goto tr105 + st416: if p++; p == pe { - goto _test_eof509 + goto _test_eof416 } - st_case_509: + st_case_416: switch data[p] { case 68: - goto st510 + goto st417 case 100: - goto st510 + goto st417 } - goto tr274 - st510: + goto tr105 + st417: if p++; p == pe { - goto _test_eof510 + goto _test_eof417 } - st_case_510: + st_case_417: if data[p] == 45 { - goto st511 + goto st418 } - goto tr274 - st511: + goto tr105 + st418: if p++; p == pe { - goto _test_eof511 + goto _test_eof418 } - st_case_511: + st_case_418: switch data[p] { case 66: - goto st512 + goto st419 case 98: - goto st512 + goto st419 } - goto tr274 - st512: + goto tr105 + st419: if p++; p == pe { - goto _test_eof512 + goto _test_eof419 } - st_case_512: + st_case_419: switch data[p] { case 89: - goto st228 + goto st134 case 121: - goto st228 + goto st134 } - goto tr274 - st513: + goto tr105 + st420: if p++; p == pe { - goto _test_eof513 + goto _test_eof420 } - st_case_513: + st_case_420: switch data[p] { case 79: - goto st514 + goto st421 case 111: - goto st514 + goto st421 } - goto tr274 - st514: + goto tr105 + st421: if p++; p == pe { - goto _test_eof514 + goto _test_eof421 } - st_case_514: + st_case_421: switch data[p] { case 84: - goto st515 + goto st422 case 116: - goto st515 + goto st422 } - goto tr274 - st515: + goto tr105 + st422: if p++; p == pe { - goto _test_eof515 + goto _test_eof422 } - st_case_515: + st_case_422: switch data[p] { case 69: - goto st516 + goto st423 case 101: - goto st516 + goto st423 } - goto tr274 - st516: + goto tr105 + st423: if p++; p == pe { - goto _test_eof516 + goto _test_eof423 } - st_case_516: + st_case_423: if data[p] == 45 { - goto st517 + goto st424 } - goto tr274 - st517: + goto tr105 + st424: if p++; p == pe { - goto _test_eof517 + goto _test_eof424 } - st_case_517: + st_case_424: switch data[p] { case 80: - goto st518 + goto st425 case 112: - goto st518 + goto st425 } - goto tr274 - st518: + goto tr105 + st425: if p++; p == pe { - goto _test_eof518 + goto _test_eof425 } - st_case_518: + st_case_425: switch data[p] { case 65: - goto st519 + goto st426 case 97: - goto st519 + goto st426 } - goto tr274 - st519: + goto tr105 + st426: if p++; p == pe { - goto _test_eof519 + goto _test_eof426 } - st_case_519: + st_case_426: switch data[p] { case 82: - goto st520 + goto st427 case 114: - goto st520 + goto st427 } - goto tr274 - st520: + goto tr105 + st427: if p++; p == pe { - goto _test_eof520 + goto _test_eof427 } - st_case_520: + st_case_427: switch data[p] { case 84: - goto st521 + goto st428 case 116: - goto st521 + goto st428 } - goto tr274 - st521: + goto tr105 + st428: if p++; p == pe { - goto _test_eof521 + goto _test_eof428 } - st_case_521: + st_case_428: switch data[p] { case 89: - goto st522 + goto st429 case 121: - goto st522 + goto st429 } - goto tr274 - st522: + goto tr105 + st429: if p++; p == pe { - goto _test_eof522 + goto _test_eof429 } - st_case_522: + st_case_429: if data[p] == 45 { - goto st523 + goto st430 } - goto tr274 - st523: + goto tr105 + st430: if p++; p == pe { - goto _test_eof523 + goto _test_eof430 } - st_case_523: + st_case_430: switch data[p] { case 73: - goto st524 + goto st431 case 105: - goto st524 + goto st431 } - goto tr274 - st524: + goto tr105 + st431: if p++; p == pe { - goto _test_eof524 + goto _test_eof431 } - st_case_524: + st_case_431: switch data[p] { case 68: - goto st525 + goto st432 case 100: - goto st525 + goto st432 } - goto tr274 - st525: + goto tr105 + st432: if p++; p == pe { - goto _test_eof525 + goto _test_eof432 } - st_case_525: + st_case_432: switch data[p] { case 9: - goto tr719 + goto tr549 case 32: - goto tr719 + goto tr549 case 58: - goto tr720 + goto tr550 } goto st0 - st526: + st433: if p++; p == pe { - goto _test_eof526 + goto _test_eof433 } - st_case_526: + st_case_433: switch data[p] { case 76: - goto st527 + goto st434 case 108: - goto st527 + goto st434 } - goto tr274 - st527: + goto tr105 + st434: if p++; p == pe { - goto _test_eof527 + goto _test_eof434 } - st_case_527: + st_case_434: switch data[p] { case 89: - goto st528 + goto st435 case 121: - goto st528 + goto st435 } - goto tr274 - st528: + goto tr105 + st435: if p++; p == pe { - goto _test_eof528 + goto _test_eof435 } - st_case_528: + st_case_435: if data[p] == 45 { - goto st529 + goto st436 } - goto tr274 - st529: + goto tr105 + st436: if p++; p == pe { - goto _test_eof529 + goto _test_eof436 } - st_case_529: + st_case_436: switch data[p] { case 84: - goto st530 + goto st437 case 116: - goto st530 + goto st437 } - goto tr274 - st530: + goto tr105 + st437: if p++; p == pe { - goto _test_eof530 + goto _test_eof437 } - st_case_530: + st_case_437: switch data[p] { case 79: - goto st531 + goto st438 case 111: - goto st531 + goto st438 } - goto tr274 - st531: + goto tr105 + st438: if p++; p == pe { - goto _test_eof531 + goto _test_eof438 } - st_case_531: + st_case_438: switch data[p] { case 9: - goto tr726 + goto tr556 case 32: - goto tr726 + goto tr556 case 58: - goto tr727 + goto tr557 } goto st0 - st532: + st439: if p++; p == pe { - goto _test_eof532 + goto _test_eof439 } - st_case_532: + st_case_439: switch data[p] { case 85: - goto st533 + goto st440 case 117: - goto st533 + goto st440 } - goto tr274 - st533: + goto tr105 + st440: if p++; p == pe { - goto _test_eof533 + goto _test_eof440 } - st_case_533: + st_case_440: switch data[p] { case 73: - goto st534 + goto st441 case 105: - goto st534 + goto st441 } - goto tr274 - st534: + goto tr105 + st441: if p++; p == pe { - goto _test_eof534 + goto _test_eof441 } - st_case_534: + st_case_441: switch data[p] { case 82: - goto st535 + goto st442 case 114: - goto st535 + goto st442 } - goto tr274 - st535: + goto tr105 + st442: if p++; p == pe { - goto _test_eof535 + goto _test_eof442 } - st_case_535: + st_case_442: switch data[p] { case 69: - goto st536 + goto st443 case 101: - goto st536 + goto st443 } - goto tr274 - st536: + goto tr105 + st443: if p++; p == pe { - goto _test_eof536 + goto _test_eof443 } - st_case_536: + st_case_443: switch data[p] { case 9: - goto tr732 + goto tr562 case 32: - goto tr732 + goto tr562 case 58: - goto tr733 + goto tr563 } goto st0 - st537: + st444: if p++; p == pe { - goto _test_eof537 + goto _test_eof444 } - st_case_537: + st_case_444: switch data[p] { case 82: - goto st538 + goto st445 case 114: - goto st538 + goto st445 } - goto tr274 - st538: + goto tr105 + st445: if p++; p == pe { - goto _test_eof538 + goto _test_eof445 } - st_case_538: + st_case_445: switch data[p] { case 89: - goto st539 + goto st446 case 121: - goto st539 + goto st446 } - goto tr274 - st539: + goto tr105 + st446: if p++; p == pe { - goto _test_eof539 + goto _test_eof446 } - st_case_539: + st_case_446: if data[p] == 45 { - goto st540 + goto st447 } - goto tr274 - st540: + goto tr105 + st447: if p++; p == pe { - goto _test_eof540 + goto _test_eof447 } - st_case_540: + st_case_447: switch data[p] { case 65: - goto st541 + goto st448 case 97: - goto st541 + goto st448 } - goto tr274 - st541: + goto tr105 + st448: if p++; p == pe { - goto _test_eof541 + goto _test_eof448 } - st_case_541: + st_case_448: switch data[p] { case 70: - goto st542 + goto st449 case 102: - goto st542 + goto st449 } - goto tr274 - st542: + goto tr105 + st449: if p++; p == pe { - goto _test_eof542 + goto _test_eof449 } - st_case_542: + st_case_449: switch data[p] { case 84: - goto st543 + goto st450 case 116: - goto st543 + goto st450 } - goto tr274 - st543: + goto tr105 + st450: if p++; p == pe { - goto _test_eof543 + goto _test_eof450 } - st_case_543: + st_case_450: switch data[p] { case 69: - goto st544 + goto st451 case 101: - goto st544 + goto st451 } - goto tr274 - st544: + goto tr105 + st451: if p++; p == pe { - goto _test_eof544 + goto _test_eof451 } - st_case_544: + st_case_451: switch data[p] { case 82: - goto st545 + goto st452 case 114: - goto st545 + goto st452 } - goto tr274 - st545: + goto tr105 + st452: if p++; p == pe { - goto _test_eof545 + goto _test_eof452 } - st_case_545: + st_case_452: switch data[p] { case 9: - goto tr742 + goto tr572 case 32: - goto tr742 + goto tr572 case 58: - goto tr743 + goto tr573 } goto st0 - st546: + st453: if p++; p == pe { - goto _test_eof546 + goto _test_eof453 } - st_case_546: + st_case_453: switch data[p] { case 85: - goto st547 + goto st454 case 117: - goto st547 + goto st454 } - goto tr274 - st547: + goto tr105 + st454: if p++; p == pe { - goto _test_eof547 + goto _test_eof454 } - st_case_547: + st_case_454: switch data[p] { case 84: - goto st548 + goto st455 case 116: - goto st548 + goto st455 } - goto tr274 - st548: + goto tr105 + st455: if p++; p == pe { - goto _test_eof548 + goto _test_eof455 } - st_case_548: + st_case_455: switch data[p] { case 69: - goto st549 + goto st456 case 101: - goto st549 + goto st456 } - goto tr274 - st549: + goto tr105 + st456: if p++; p == pe { - goto _test_eof549 + goto _test_eof456 } - st_case_549: + st_case_456: switch data[p] { case 9: - goto tr747 + goto tr577 case 32: - goto tr747 + goto tr577 case 58: - goto tr748 + goto tr578 } goto st0 -tr257: -//line msg_parse.rl:59 +tr88: +//line msg_parse.rl:55 mark = p - goto st550 - st550: + goto st457 + st457: if p++; p == pe { - goto _test_eof550 + goto _test_eof457 } - st_case_550: -//line msg_parse.go:13271 + st_case_457: +//line msg_parse.go:8924 switch data[p] { case 9: - goto tr749 + goto tr579 case 32: - goto tr749 + goto tr579 case 58: - goto tr750 + goto tr580 case 69: - goto st551 + goto st458 case 85: - goto st556 + goto st463 case 101: - goto st551 + goto st458 case 117: - goto st556 + goto st463 } goto st0 - st551: + st458: if p++; p == pe { - goto _test_eof551 + goto _test_eof458 } - st_case_551: + st_case_458: switch data[p] { case 82: - goto st552 + goto st459 case 114: - goto st552 + goto st459 } - goto tr274 - st552: + goto tr105 + st459: if p++; p == pe { - goto _test_eof552 + goto _test_eof459 } - st_case_552: + st_case_459: switch data[p] { case 86: - goto st553 + goto st460 case 118: - goto st553 + goto st460 } - goto tr274 - st553: + goto tr105 + st460: if p++; p == pe { - goto _test_eof553 + goto _test_eof460 } - st_case_553: + st_case_460: switch data[p] { case 69: - goto st554 + goto st461 case 101: - goto st554 + goto st461 } - goto tr274 - st554: + goto tr105 + st461: if p++; p == pe { - goto _test_eof554 + goto _test_eof461 } - st_case_554: + st_case_461: switch data[p] { case 82: - goto st555 + goto st462 case 114: - goto st555 + goto st462 } - goto tr274 - st555: + goto tr105 + st462: if p++; p == pe { - goto _test_eof555 + goto _test_eof462 } - st_case_555: + st_case_462: switch data[p] { case 9: - goto tr757 + goto tr587 case 32: - goto tr757 + goto tr587 case 58: - goto tr758 + goto tr588 } goto st0 - st556: + st463: if p++; p == pe { - goto _test_eof556 + goto _test_eof463 } - st_case_556: + st_case_463: switch data[p] { case 66: - goto st557 + goto st464 case 80: - goto st562 + goto st469 case 98: - goto st557 + goto st464 case 112: - goto st562 + goto st469 } - goto tr274 - st557: + goto tr105 + st464: if p++; p == pe { - goto _test_eof557 + goto _test_eof464 } - st_case_557: + st_case_464: switch data[p] { case 74: - goto st558 + goto st465 case 106: - goto st558 + goto st465 } - goto tr274 - st558: + goto tr105 + st465: if p++; p == pe { - goto _test_eof558 + goto _test_eof465 } - st_case_558: + st_case_465: switch data[p] { case 69: - goto st559 + goto st466 case 101: - goto st559 + goto st466 } - goto tr274 - st559: + goto tr105 + st466: if p++; p == pe { - goto _test_eof559 + goto _test_eof466 } - st_case_559: + st_case_466: switch data[p] { case 67: - goto st560 + goto st467 case 99: - goto st560 + goto st467 } - goto tr274 - st560: + goto tr105 + st467: if p++; p == pe { - goto _test_eof560 + goto _test_eof467 } - st_case_560: + st_case_467: switch data[p] { case 84: - goto st561 + goto st468 case 116: - goto st561 + goto st468 } - goto tr274 - st561: + goto tr105 + st468: if p++; p == pe { - goto _test_eof561 + goto _test_eof468 } - st_case_561: + st_case_468: switch data[p] { case 9: - goto tr749 + goto tr579 case 32: - goto tr749 + goto tr579 case 58: - goto tr750 + goto tr580 } goto st0 - st562: + st469: if p++; p == pe { - goto _test_eof562 + goto _test_eof469 } - st_case_562: + st_case_469: switch data[p] { case 80: - goto st563 + goto st470 case 112: - goto st563 + goto st470 } - goto tr274 - st563: + goto tr105 + st470: if p++; p == pe { - goto _test_eof563 + goto _test_eof470 } - st_case_563: + st_case_470: switch data[p] { case 79: - goto st564 + goto st471 case 111: - goto st564 + goto st471 } - goto tr274 - st564: + goto tr105 + st471: if p++; p == pe { - goto _test_eof564 + goto _test_eof471 } - st_case_564: + st_case_471: switch data[p] { case 82: - goto st565 + goto st472 case 114: - goto st565 + goto st472 } - goto tr274 - st565: + goto tr105 + st472: if p++; p == pe { - goto _test_eof565 + goto _test_eof472 } - st_case_565: + st_case_472: switch data[p] { case 84: - goto st566 + goto st473 case 116: - goto st566 + goto st473 } - goto tr274 - st566: + goto tr105 + st473: if p++; p == pe { - goto _test_eof566 + goto _test_eof473 } - st_case_566: + st_case_473: switch data[p] { case 69: - goto st567 + goto st474 case 101: - goto st567 + goto st474 } - goto tr274 - st567: + goto tr105 + st474: if p++; p == pe { - goto _test_eof567 + goto _test_eof474 } - st_case_567: + st_case_474: switch data[p] { case 68: - goto st371 + goto st278 case 100: - goto st371 + goto st278 } - goto tr274 -tr258: -//line msg_parse.rl:59 + goto tr105 +tr89: +//line msg_parse.rl:55 mark = p - goto st568 - st568: + goto st475 + st475: if p++; p == pe { - goto _test_eof568 + goto _test_eof475 } - st_case_568: -//line msg_parse.go:13512 + st_case_475: +//line msg_parse.go:9165 switch data[p] { case 9: - goto tr771 + goto tr601 case 32: - goto tr771 + goto tr601 case 58: - goto tr772 + goto tr602 case 73: - goto st569 + goto st476 case 79: - goto st577 + goto st484 case 105: - goto st569 + goto st476 case 111: - goto st577 + goto st484 } - goto tr274 - st569: + goto tr105 + st476: if p++; p == pe { - goto _test_eof569 + goto _test_eof476 } - st_case_569: + st_case_476: switch data[p] { case 77: - goto st570 + goto st477 case 109: - goto st570 + goto st477 } - goto tr274 - st570: + goto tr105 + st477: if p++; p == pe { - goto _test_eof570 + goto _test_eof477 } - st_case_570: + st_case_477: switch data[p] { case 69: - goto st571 + goto st478 case 101: - goto st571 + goto st478 } - goto tr274 - st571: + goto tr105 + st478: if p++; p == pe { - goto _test_eof571 + goto _test_eof478 } - st_case_571: + st_case_478: switch data[p] { case 83: - goto st572 + goto st479 case 115: - goto st572 + goto st479 } - goto tr274 - st572: + goto tr105 + st479: if p++; p == pe { - goto _test_eof572 + goto _test_eof479 } - st_case_572: + st_case_479: switch data[p] { case 84: - goto st573 + goto st480 case 116: - goto st573 + goto st480 } - goto tr274 - st573: + goto tr105 + st480: if p++; p == pe { - goto _test_eof573 + goto _test_eof480 } - st_case_573: + st_case_480: switch data[p] { case 65: - goto st574 + goto st481 case 97: - goto st574 + goto st481 } - goto tr274 - st574: + goto tr105 + st481: if p++; p == pe { - goto _test_eof574 + goto _test_eof481 } - st_case_574: + st_case_481: switch data[p] { case 77: - goto st575 + goto st482 case 109: - goto st575 + goto st482 } - goto tr274 - st575: + goto tr105 + st482: if p++; p == pe { - goto _test_eof575 + goto _test_eof482 } - st_case_575: + st_case_482: switch data[p] { case 80: - goto st576 + goto st483 case 112: - goto st576 + goto st483 } - goto tr274 - st576: + goto tr105 + st483: if p++; p == pe { - goto _test_eof576 + goto _test_eof483 } - st_case_576: + st_case_483: switch data[p] { case 9: - goto tr782 + goto tr612 case 32: - goto tr782 + goto tr612 case 58: - goto tr783 + goto tr613 } goto st0 - st577: + st484: if p++; p == pe { - goto _test_eof577 + goto _test_eof484 } - st_case_577: + st_case_484: switch data[p] { case 9: - goto tr771 + goto tr601 case 32: - goto tr771 + goto tr601 case 58: - goto tr772 + goto tr602 } goto st0 -tr259: -//line msg_parse.rl:59 +tr90: +//line msg_parse.rl:55 mark = p - goto st578 - st578: + goto st485 + st485: if p++; p == pe { - goto _test_eof578 + goto _test_eof485 } - st_case_578: -//line msg_parse.go:13653 + st_case_485: +//line msg_parse.go:9306 switch data[p] { case 9: - goto tr784 + goto tr614 case 32: - goto tr784 + goto tr614 case 58: - goto tr785 + goto tr615 case 78: - goto st579 + goto st486 case 83: - goto st589 + goto st496 case 110: - goto st579 + goto st486 case 115: - goto st589 + goto st496 } goto st0 - st579: + st486: if p++; p == pe { - goto _test_eof579 + goto _test_eof486 } - st_case_579: + st_case_486: switch data[p] { case 83: - goto st580 + goto st487 case 115: - goto st580 + goto st487 } - goto tr274 - st580: + goto tr105 + st487: if p++; p == pe { - goto _test_eof580 + goto _test_eof487 } - st_case_580: + st_case_487: switch data[p] { case 85: - goto st581 + goto st488 case 117: - goto st581 + goto st488 } - goto tr274 - st581: + goto tr105 + st488: if p++; p == pe { - goto _test_eof581 + goto _test_eof488 } - st_case_581: + st_case_488: switch data[p] { case 80: - goto st582 + goto st489 case 112: - goto st582 + goto st489 } - goto tr274 - st582: + goto tr105 + st489: if p++; p == pe { - goto _test_eof582 + goto _test_eof489 } - st_case_582: + st_case_489: switch data[p] { case 80: - goto st583 + goto st490 case 112: - goto st583 + goto st490 } - goto tr274 - st583: + goto tr105 + st490: if p++; p == pe { - goto _test_eof583 + goto _test_eof490 } - st_case_583: + st_case_490: switch data[p] { case 79: - goto st584 + goto st491 case 111: - goto st584 + goto st491 } - goto tr274 - st584: + goto tr105 + st491: if p++; p == pe { - goto _test_eof584 + goto _test_eof491 } - st_case_584: + st_case_491: switch data[p] { case 82: - goto st585 + goto st492 case 114: - goto st585 + goto st492 } - goto tr274 - st585: + goto tr105 + st492: if p++; p == pe { - goto _test_eof585 + goto _test_eof492 } - st_case_585: + st_case_492: switch data[p] { case 84: - goto st586 + goto st493 case 116: - goto st586 + goto st493 } - goto tr274 - st586: + goto tr105 + st493: if p++; p == pe { - goto _test_eof586 + goto _test_eof493 } - st_case_586: + st_case_493: switch data[p] { case 69: - goto st587 + goto st494 case 101: - goto st587 + goto st494 } - goto tr274 - st587: + goto tr105 + st494: if p++; p == pe { - goto _test_eof587 + goto _test_eof494 } - st_case_587: + st_case_494: switch data[p] { case 68: - goto st588 + goto st495 case 100: - goto st588 + goto st495 } - goto tr274 - st588: + goto tr105 + st495: if p++; p == pe { - goto _test_eof588 + goto _test_eof495 } - st_case_588: + st_case_495: switch data[p] { case 9: - goto tr797 + goto tr627 case 32: - goto tr797 + goto tr627 case 58: - goto tr798 + goto tr628 } goto st0 - st589: + st496: if p++; p == pe { - goto _test_eof589 + goto _test_eof496 } - st_case_589: + st_case_496: switch data[p] { case 69: - goto st590 + goto st497 case 101: - goto st590 + goto st497 } - goto tr274 - st590: + goto tr105 + st497: if p++; p == pe { - goto _test_eof590 + goto _test_eof497 } - st_case_590: + st_case_497: switch data[p] { case 82: - goto st591 + goto st498 case 114: - goto st591 + goto st498 } - goto tr274 - st591: + goto tr105 + st498: if p++; p == pe { - goto _test_eof591 + goto _test_eof498 } - st_case_591: + st_case_498: if data[p] == 45 { - goto st592 + goto st499 } - goto tr274 - st592: + goto tr105 + st499: if p++; p == pe { - goto _test_eof592 + goto _test_eof499 } - st_case_592: + st_case_499: switch data[p] { case 65: - goto st593 + goto st500 case 97: - goto st593 + goto st500 } - goto tr274 - st593: + goto tr105 + st500: if p++; p == pe { - goto _test_eof593 + goto _test_eof500 } - st_case_593: + st_case_500: switch data[p] { case 71: - goto st594 + goto st501 case 103: - goto st594 + goto st501 } - goto tr274 - st594: + goto tr105 + st501: if p++; p == pe { - goto _test_eof594 + goto _test_eof501 } - st_case_594: + st_case_501: switch data[p] { case 69: - goto st595 + goto st502 case 101: - goto st595 + goto st502 } - goto tr274 - st595: + goto tr105 + st502: if p++; p == pe { - goto _test_eof595 + goto _test_eof502 } - st_case_595: + st_case_502: switch data[p] { case 78: - goto st596 + goto st503 case 110: - goto st596 + goto st503 } - goto tr274 - st596: + goto tr105 + st503: if p++; p == pe { - goto _test_eof596 + goto _test_eof503 } - st_case_596: + st_case_503: switch data[p] { case 84: - goto st597 + goto st504 case 116: - goto st597 + goto st504 } - goto tr274 - st597: + goto tr105 + st504: if p++; p == pe { - goto _test_eof597 + goto _test_eof504 } - st_case_597: + st_case_504: switch data[p] { case 9: - goto tr807 + goto tr637 case 32: - goto tr807 + goto tr637 case 58: - goto tr808 + goto tr638 } goto st0 - st598: + st505: if p++; p == pe { - goto _test_eof598 + goto _test_eof505 } - st_case_598: + st_case_505: switch data[p] { case 9: - goto st599 + goto st506 case 32: - goto st599 + goto st506 case 58: - goto st600 + goto st507 case 73: - goto st611 + goto st519 case 105: - goto st611 + goto st519 } goto st0 - st599: + st506: if p++; p == pe { - goto _test_eof599 + goto _test_eof506 } - st_case_599: + st_case_506: switch data[p] { case 9: - goto st599 + goto st506 case 32: - goto st599 + goto st506 case 58: - goto st600 + goto st507 } goto st0 - st600: + st507: if p++; p == pe { - goto _test_eof600 + goto _test_eof507 } - st_case_600: + st_case_507: _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st600 + goto st507 case 32: - goto st600 + goto st507 case 269: - goto tr818 + goto tr648 case 525: - goto st608 + goto st516 } switch { case _widec < 224: switch { case _widec > 127: if 192 <= _widec && _widec <= 223 { - goto tr813 + goto tr643 } case _widec >= 33: - goto tr812 + goto tr642 } case _widec > 239: switch { case _widec < 248: if 240 <= _widec && _widec <= 247 { - goto tr815 + goto tr645 } case _widec > 251: if 252 <= _widec && _widec <= 253 { - goto tr817 + goto tr647 } default: - goto tr816 + goto tr646 } default: - goto tr814 + goto tr644 } goto st0 -tr821: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st601 -tr812: -//line msg_parse.rl:59 +tr642: +//line msg_parse.rl:55 mark = p -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st601 - st601: + goto st508 + st508: if p++; p == pe { - goto _test_eof601 + goto _test_eof508 } - st_case_601: -//line msg_parse.go:14004 + st_case_508: +//line msg_parse.go:9645 _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st601 - case 32: - goto st601 + goto st508 case 269: - goto tr827 + goto tr656 case 525: - goto tr828 + goto st514 } switch { case _widec < 224: switch { case _widec > 127: if 192 <= _widec && _widec <= 223 { - goto tr822 + goto st509 } - case _widec >= 33: - goto tr821 + case _widec >= 32: + goto st508 } case _widec > 239: switch { case _widec < 248: if 240 <= _widec && _widec <= 247 { - goto tr824 + goto st511 } case _widec > 251: if 252 <= _widec && _widec <= 253 { - goto tr826 + goto st513 } default: - goto tr825 + goto st512 } default: - goto tr823 + goto st510 } goto st0 -tr822: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st602 -tr813: -//line msg_parse.rl:59 +tr643: +//line msg_parse.rl:55 mark = p -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st602 - st602: + goto st509 + st509: if p++; p == pe { - goto _test_eof602 + goto _test_eof509 } - st_case_602: -//line msg_parse.go:14072 + st_case_509: +//line msg_parse.go:9699 if 128 <= data[p] && data[p] <= 191 { - goto tr821 + goto st508 } goto st0 -tr823: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st603 -tr814: -//line msg_parse.rl:59 +tr644: +//line msg_parse.rl:55 mark = p -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st603 - st603: + goto st510 + st510: if p++; p == pe { - goto _test_eof603 + goto _test_eof510 } - st_case_603: -//line msg_parse.go:14100 + st_case_510: +//line msg_parse.go:9715 if 128 <= data[p] && data[p] <= 191 { - goto tr822 + goto st509 } goto st0 -tr824: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st604 -tr815: -//line msg_parse.rl:59 +tr645: +//line msg_parse.rl:55 mark = p -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st604 - st604: + goto st511 + st511: if p++; p == pe { - goto _test_eof604 + goto _test_eof511 } - st_case_604: -//line msg_parse.go:14128 + st_case_511: +//line msg_parse.go:9731 if 128 <= data[p] && data[p] <= 191 { - goto tr823 + goto st510 } goto st0 -tr825: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st605 -tr816: -//line msg_parse.rl:59 +tr646: +//line msg_parse.rl:55 mark = p -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st605 - st605: + goto st512 + st512: if p++; p == pe { - goto _test_eof605 + goto _test_eof512 } - st_case_605: -//line msg_parse.go:14156 + st_case_512: +//line msg_parse.go:9747 if 128 <= data[p] && data[p] <= 191 { - goto tr824 + goto st511 } goto st0 -tr826: -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st606 -tr817: -//line msg_parse.rl:59 +tr647: +//line msg_parse.rl:55 mark = p -//line msg_parse.rl:67 - - buf[amt] = data[p] - amt++ - - goto st606 - st606: + goto st513 + st513: if p++; p == pe { - goto _test_eof606 + goto _test_eof513 } - st_case_606: -//line msg_parse.go:14184 + st_case_513: +//line msg_parse.go:9763 if 128 <= data[p] && data[p] <= 191 { - goto tr825 + goto st512 } goto st0 -tr832: -//line msg_parse.rl:59 +tr661: +//line msg_parse.rl:55 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 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 st607 - st607: + goto st514 + st514: if p++; p == pe { - goto _test_eof607 + goto _test_eof514 } - st_case_607: -//line msg_parse.go:14214 + st_case_514: +//line msg_parse.go:9779 if data[p] == 10 { - goto tr829 + goto tr658 } goto st0 -tr829: -//line msg_parse.rl:238 - line++; linep = p; -//line msg_parse.rl:129 +tr658: +//line msg_parse.rl:50 - {goto st145 } + line++ + linep = p + 1 - goto st647 - st647: + goto st515 + st515: if p++; p == pe { - goto _test_eof647 + goto _test_eof515 } - st_case_647: -//line msg_parse.go:14232 + st_case_515: +//line msg_parse.go:9796 switch data[p] { case 9: - goto st601 + goto st508 case 32: - goto st601 + goto st508 } goto st0 - st608: + st516: if p++; p == pe { - goto _test_eof608 + goto _test_eof516 } - st_case_608: + st_case_516: if data[p] == 10 { - goto tr830 + goto tr659 } goto st0 -tr830: -//line msg_parse.rl:238 - line++; linep = p; - goto st609 - st609: +tr659: +//line msg_parse.rl:50 + + line++ + linep = p + 1 + + goto st517 + st517: if p++; p == pe { - goto _test_eof609 + goto _test_eof517 } - st_case_609: -//line msg_parse.go:14258 + st_case_517: +//line msg_parse.go:9825 switch data[p] { case 9: - goto st610 + goto st518 case 32: - goto st610 + goto st518 } goto st0 - st610: + st518: if p++; p == pe { - goto _test_eof610 + goto _test_eof518 } - st_case_610: + st_case_518: _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') { + if lookAheadWSP(data, p, pe) { _widec += 256 } } switch _widec { case 9: - goto st610 + goto st518 case 32: - goto st610 + goto st518 case 269: - goto tr818 + goto tr648 case 525: - goto tr832 + goto tr661 } switch { case _widec < 224: switch { case _widec > 127: if 192 <= _widec && _widec <= 223 { - goto tr813 + goto tr643 } case _widec >= 33: - goto tr812 + goto tr642 } case _widec > 239: switch { case _widec < 248: if 240 <= _widec && _widec <= 247 { - goto tr815 + goto tr645 } case _widec > 251: if 252 <= _widec && _widec <= 253 { - goto tr817 + goto tr647 } default: - goto tr816 + goto tr646 } default: - goto tr814 + goto tr644 } goto st0 - st611: + st519: if p++; p == pe { - goto _test_eof611 + goto _test_eof519 } - st_case_611: + st_case_519: switch data[p] { case 65: - goto st599 + goto st506 case 97: - goto st599 + goto st506 } - goto tr463 -tr261: -//line msg_parse.rl:59 + goto tr293 +tr92: +//line msg_parse.rl:55 mark = p - goto st612 - st612: + goto st520 + st520: if p++; p == pe { - goto _test_eof612 + goto _test_eof520 } - st_case_612: -//line msg_parse.go:14338 + st_case_520: +//line msg_parse.go:9905 switch data[p] { case 65: - goto st613 + goto st521 case 87: - goto st619 + goto st527 case 97: - goto st613 + goto st521 case 119: - goto st619 + goto st527 } - goto tr274 - st613: + goto tr105 + st521: if p++; p == pe { - goto _test_eof613 + goto _test_eof521 } - st_case_613: + st_case_521: switch data[p] { case 82: - goto st614 + goto st522 case 114: - goto st614 + goto st522 } - goto tr274 - st614: + goto tr105 + st522: if p++; p == pe { - goto _test_eof614 + goto _test_eof522 } - st_case_614: + st_case_522: switch data[p] { case 78: - goto st615 + goto st523 case 110: - goto st615 + goto st523 } - goto tr274 - st615: + goto tr105 + st523: if p++; p == pe { - goto _test_eof615 + goto _test_eof523 } - st_case_615: + st_case_523: switch data[p] { case 73: - goto st616 + goto st524 case 105: - goto st616 + goto st524 } - goto tr274 - st616: + goto tr105 + st524: if p++; p == pe { - goto _test_eof616 + goto _test_eof524 } - st_case_616: + st_case_524: switch data[p] { case 78: - goto st617 + goto st525 case 110: - goto st617 + goto st525 } - goto tr274 - st617: + goto tr105 + st525: if p++; p == pe { - goto _test_eof617 + goto _test_eof525 } - st_case_617: + st_case_525: switch data[p] { case 71: - goto st618 + goto st526 case 103: - goto st618 + goto st526 } - goto tr274 - st618: + goto tr105 + st526: if p++; p == pe { - goto _test_eof618 + goto _test_eof526 } - st_case_618: + st_case_526: switch data[p] { case 9: - goto tr840 + goto tr669 case 32: - goto tr840 + goto tr669 case 58: - goto tr841 + goto tr670 } goto st0 - st619: + st527: if p++; p == pe { - goto _test_eof619 + goto _test_eof527 } - st_case_619: + st_case_527: switch data[p] { case 87: - goto st620 + goto st528 case 119: - goto st620 + goto st528 } - goto tr274 - st620: + goto tr105 + st528: if p++; p == pe { - goto _test_eof620 + goto _test_eof528 } - st_case_620: + st_case_528: if data[p] == 45 { - goto st621 + goto st529 } - goto tr274 - st621: + goto tr105 + st529: if p++; p == pe { - goto _test_eof621 + goto _test_eof529 } - st_case_621: + st_case_529: switch data[p] { case 65: - goto st622 + goto st530 case 97: - goto st622 + goto st530 } - goto tr274 - st622: + goto tr105 + st530: if p++; p == pe { - goto _test_eof622 + goto _test_eof530 } - st_case_622: + st_case_530: switch data[p] { case 85: - goto st623 + goto st531 case 117: - goto st623 + goto st531 } - goto tr274 - st623: + goto tr105 + st531: if p++; p == pe { - goto _test_eof623 + goto _test_eof531 } - st_case_623: + st_case_531: switch data[p] { case 84: - goto st624 + goto st532 case 116: - goto st624 + goto st532 } - goto tr274 - st624: + goto tr105 + st532: if p++; p == pe { - goto _test_eof624 + goto _test_eof532 } - st_case_624: + st_case_532: switch data[p] { case 72: - goto st625 + goto st533 case 104: - goto st625 + goto st533 } - goto tr274 - st625: + goto tr105 + st533: if p++; p == pe { - goto _test_eof625 + goto _test_eof533 } - st_case_625: + st_case_533: switch data[p] { case 69: - goto st626 + goto st534 case 101: - goto st626 + goto st534 } - goto tr274 - st626: + goto tr105 + st534: if p++; p == pe { - goto _test_eof626 + goto _test_eof534 } - st_case_626: + st_case_534: switch data[p] { case 78: - goto st627 + goto st535 case 110: - goto st627 + goto st535 } - goto tr274 - st627: + goto tr105 + st535: if p++; p == pe { - goto _test_eof627 + goto _test_eof535 } - st_case_627: + st_case_535: switch data[p] { case 84: - goto st628 + goto st536 case 116: - goto st628 + goto st536 } - goto tr274 - st628: + goto tr105 + st536: if p++; p == pe { - goto _test_eof628 + goto _test_eof536 } - st_case_628: + st_case_536: switch data[p] { case 73: - goto st629 + goto st537 case 105: - goto st629 + goto st537 } - goto tr274 - st629: + goto tr105 + st537: if p++; p == pe { - goto _test_eof629 + goto _test_eof537 } - st_case_629: + st_case_537: switch data[p] { case 67: - goto st630 + goto st538 case 99: - goto st630 + goto st538 } - goto tr274 - st630: + goto tr105 + st538: if p++; p == pe { - goto _test_eof630 + goto _test_eof538 } - st_case_630: + st_case_538: switch data[p] { case 65: - goto st631 + goto st539 case 97: - goto st631 + goto st539 } - goto tr274 - st631: + goto tr105 + st539: if p++; p == pe { - goto _test_eof631 + goto _test_eof539 } - st_case_631: + st_case_539: switch data[p] { case 84: - goto st632 + goto st540 case 116: - goto st632 + goto st540 } - goto tr274 - st632: + goto tr105 + st540: if p++; p == pe { - goto _test_eof632 + goto _test_eof540 } - st_case_632: + st_case_540: switch data[p] { case 69: - goto st633 + goto st541 case 101: - goto st633 + goto st541 } - goto tr274 - st633: + goto tr105 + st541: if p++; p == pe { - goto _test_eof633 + goto _test_eof541 } - st_case_633: + st_case_541: switch data[p] { case 9: - goto tr856 + goto tr685 case 32: - goto tr856 + goto tr685 case 58: - goto tr857 + goto tr686 } goto st0 st_out: @@ -14612,7 +10179,7 @@ tr261: _test_eof11: cs = 11; goto _test_eof _test_eof12: cs = 12; goto _test_eof _test_eof13: cs = 13; goto _test_eof - _test_eof634: cs = 634; goto _test_eof + _test_eof542: cs = 542; goto _test_eof _test_eof14: cs = 14; goto _test_eof _test_eof15: cs = 15; goto _test_eof _test_eof16: cs = 16; goto _test_eof @@ -14641,17 +10208,20 @@ tr261: _test_eof39: cs = 39; goto _test_eof _test_eof40: cs = 40; goto _test_eof _test_eof41: cs = 41; goto _test_eof + _test_eof543: cs = 543; goto _test_eof _test_eof42: cs = 42; 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_eof47: cs = 47; goto _test_eof + _test_eof544: cs = 544; 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_eof52: cs = 52; goto _test_eof + _test_eof545: cs = 545; goto _test_eof _test_eof53: cs = 53; goto _test_eof _test_eof54: cs = 54; goto _test_eof _test_eof55: cs = 55; goto _test_eof @@ -14662,15 +10232,12 @@ tr261: _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 @@ -14690,7 +10257,6 @@ tr261: _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 @@ -14710,14 +10276,11 @@ tr261: _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 @@ -14743,20 +10306,16 @@ tr261: _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_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 @@ -14850,7 +10409,6 @@ tr261: _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 @@ -15153,138 +10711,45 @@ tr261: _test_eof539: cs = 539; goto _test_eof _test_eof540: cs = 540; goto _test_eof _test_eof541: cs = 541; goto _test_eof - _test_eof542: cs = 542; goto _test_eof - _test_eof543: cs = 543; goto _test_eof - _test_eof544: cs = 544; goto _test_eof - _test_eof545: cs = 545; goto _test_eof - _test_eof546: cs = 546; goto _test_eof - _test_eof547: cs = 547; goto _test_eof - _test_eof548: cs = 548; goto _test_eof - _test_eof549: cs = 549; goto _test_eof - _test_eof550: cs = 550; goto _test_eof - _test_eof551: cs = 551; goto _test_eof - _test_eof552: cs = 552; goto _test_eof - _test_eof553: cs = 553; goto _test_eof - _test_eof554: cs = 554; goto _test_eof - _test_eof555: cs = 555; goto _test_eof - _test_eof556: cs = 556; goto _test_eof - _test_eof557: cs = 557; goto _test_eof - _test_eof558: cs = 558; goto _test_eof - _test_eof559: cs = 559; goto _test_eof - _test_eof560: cs = 560; goto _test_eof - _test_eof561: cs = 561; goto _test_eof - _test_eof562: cs = 562; goto _test_eof - _test_eof563: cs = 563; goto _test_eof - _test_eof564: cs = 564; goto _test_eof - _test_eof565: cs = 565; goto _test_eof - _test_eof566: cs = 566; goto _test_eof - _test_eof567: cs = 567; goto _test_eof - _test_eof568: cs = 568; goto _test_eof - _test_eof569: cs = 569; goto _test_eof - _test_eof570: cs = 570; goto _test_eof - _test_eof571: cs = 571; goto _test_eof - _test_eof572: cs = 572; goto _test_eof - _test_eof573: cs = 573; goto _test_eof - _test_eof574: cs = 574; goto _test_eof - _test_eof575: cs = 575; goto _test_eof - _test_eof576: cs = 576; goto _test_eof - _test_eof577: cs = 577; goto _test_eof - _test_eof578: cs = 578; goto _test_eof - _test_eof579: cs = 579; goto _test_eof - _test_eof580: cs = 580; goto _test_eof - _test_eof581: cs = 581; goto _test_eof - _test_eof582: cs = 582; goto _test_eof - _test_eof583: cs = 583; goto _test_eof - _test_eof584: cs = 584; goto _test_eof - _test_eof585: cs = 585; goto _test_eof - _test_eof586: cs = 586; goto _test_eof - _test_eof587: cs = 587; goto _test_eof - _test_eof588: cs = 588; goto _test_eof - _test_eof589: cs = 589; goto _test_eof - _test_eof590: cs = 590; goto _test_eof - _test_eof591: cs = 591; goto _test_eof - _test_eof592: cs = 592; goto _test_eof - _test_eof593: cs = 593; goto _test_eof - _test_eof594: cs = 594; goto _test_eof - _test_eof595: cs = 595; goto _test_eof - _test_eof596: cs = 596; goto _test_eof - _test_eof597: cs = 597; goto _test_eof - _test_eof598: cs = 598; goto _test_eof - _test_eof599: cs = 599; goto _test_eof - _test_eof600: cs = 600; goto _test_eof - _test_eof601: cs = 601; goto _test_eof - _test_eof602: cs = 602; goto _test_eof - _test_eof603: cs = 603; goto _test_eof - _test_eof604: cs = 604; goto _test_eof - _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 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 + case 59, 60, 61, 62, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 76, 77, 78, 80, 81, 82, 83, 84, 85, 86, 88, 89, 90, 91, 92, 93, 94, 95, 97, 98, 100, 101, 102, 103, 104, 105, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 125, 126, 127, 128, 129, 130, 131, 132, 163, 164, 169, 170, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 192, 193, 194, 195, 196, 197, 198, 201, 202, 203, 204, 205, 206, 234, 235, 236, 239, 240, 241, 242, 243, 244, 245, 246, 248, 249, 250, 264, 265, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 303, 304, 305, 306, 307, 308, 309, 310, 311, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 358, 359, 360, 361, 362, 363, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 381, 382, 383, 384, 385, 386, 387, 388, 390, 391, 392, 393, 394, 395, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 409, 410, 411, 412, 413, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 433, 434, 435, 436, 437, 439, 440, 441, 442, 444, 445, 446, 447, 448, 449, 450, 451, 453, 454, 455, 458, 459, 460, 461, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 486, 487, 488, 489, 490, 491, 492, 493, 494, 496, 497, 498, 499, 500, 501, 502, 503, 520, 521, 522, 523, 524, 525, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540: +//line msg_parse.rl:125 p-- - {goto st138 } + {goto st44 } - 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 + case 208, 209, 210, 211, 218, 219, 220, 221, 222, 238, 252, 253, 254, 255, 256, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 313, 314, 315, 316, 317, 318, 319, 320, 519: +//line msg_parse.rl:131 p-- - {goto st138 } + {goto st44 } - case 145, 229, 243, 244, 245, 246, 247, 259, 260, 261, 270, 271, 272, 273, 293, 378, 395: -//line msg_parse.rl:144 + case 51, 135, 150, 151, 152, 153, 154, 166, 167, 168, 177, 178, 179, 180, 200, 285, 302: +//line msg_parse.rl:131 p-- - {goto st138 } + {goto st44 } -//line msg_parse.rl:138 +//line msg_parse.rl:125 p-- - {goto st138 } + {goto st44 } -//line msg_parse.go:15281 +//line msg_parse.go:10746 } } _out: {} } -//line msg_parse.rl:387 +//line msg_parse.rl:365 if cs < msg_first_final { @@ -15310,3 +10775,7 @@ tr261: return msg, nil } + +func lookAheadWSP(data []byte, p, pe int) bool { + return p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') +} diff --git a/sip/msg_parse.rl b/sip/msg_parse.rl index 0912a31..8d02c8a 100644 --- a/sip/msg_parse.rl +++ b/sip/msg_parse.rl @@ -6,13 +6,12 @@ import ( "errors" "fmt" "github.com/jart/gosip/sdp" - "strings" ) %% machine msg; %% write data; -// ParseMsg turns a a SIP message into a data structure. +// ParseMsg turns a SIP message into a data structure. func ParseMsg(s string) (msg *Msg, err error) { if s == "" { return nil, errors.New("Empty SIP message") @@ -20,20 +19,13 @@ func ParseMsg(s string) (msg *Msg, err error) { return ParseMsgBytes([]byte(s)) } -// ParseMsg turns a a SIP message byte slice into a data structure. +// ParseMsg turns a SIP message byte slice into a data structure. func ParseMsgBytes(data []byte) (msg *Msg, err error) { if data == nil { 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) @@ -48,14 +40,18 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { var name string var hex byte var value *string - var addr *Addr - var addrpp ***Addr + var addr **Addr %%{ action break { fbreak; } + action line { + line++ + linep = p + 1 + } + action mark { mark = p } @@ -74,10 +70,6 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { amt++ } - action erase { - amt-- - } - action collapse { amt = appendCollapse(buf, amt, fc) } @@ -121,18 +113,13 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { msg.Phrase = string(buf[0:amt]) } - action goto_avalue { - fhold; - fgoto avalue; - } - action goto_header { fgoto header; } - action goto_svalue { + action goto_value { fhold; - fgoto svalue; + fgoto value; } action goto_xheader { @@ -154,6 +141,9 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { b := data[mark:p - 1] if value != nil { *value = string(b) + } else if addr != nil { + *addr, err = ParseAddrBytes(b, *addr) + if err != nil { return nil, err } } else { if msg.Headers == nil { msg.Headers = Headers{} @@ -162,15 +152,6 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { } }} - action store_addr { - // TODO(jart): Why does this fire multiple times? - if addr != nil { - **addrpp = addr - *addrpp = &addr.Next - addr = nil - } - } - action new_addr { addr = new(Addr) } @@ -229,17 +210,18 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { for *viap != nil { viap = &(*viap).Next } } - action lookAheadWSP { p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') } + action lookAheadWSP { lookAheadWSP(data, p, pe) } # https://tools.ietf.org/html/rfc2234 SP = " "; HTAB = "\t"; CR = "\r"; - LF = "\n" @{ line++; linep = p; }; + LF = "\n" @line; CRLF = CR LF; WSP = SP | HTAB; LWS = ( WSP* ( CR when lookAheadWSP ) LF )? WSP+; SWS = LWS?; + UTF8_CONT = 0x80..0xBF @append; UTF8_NONASCII = 0xC0..0xDF @append UTF8_CONT {1} | 0xE0..0xEF @append UTF8_CONT {2} @@ -247,41 +229,48 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { | 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; + + mUTF8_CONT = 0x80..0xBF; + mUTF8_NONASCII = 0xC0..0xDF mUTF8_CONT {1} + | 0xE0..0xEF mUTF8_CONT {2} + | 0xF0..0xF7 mUTF8_CONT {3} + | 0xF8..0xFb mUTF8_CONT {4} + | 0xFC..0xFD mUTF8_CONT {5}; + mUTF8 = 0x21..0x7F | mUTF8_NONASCII; # https://tools.ietf.org/html/rfc3261#section-25.1 reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," ; mark = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")" ; - unreserved = alpha | digit | mark ; - tokenc = alpha | digit | "-" | "." | "!" | "%" | "*" | "_" - | "+" | "`" | "'" | "~" ; + unreserved = alnum | mark ; + tokenc = alnum | "-" | "." | "!" | "%" | "*" | "_" | "+" | "`" + | "'" | "~" ; separators = "(" | ")" | "<" | ">" | "@" | "," | ";" | ":" | "\\" | "\"" | "/" | "[" | "]" | "?" | "=" | "{" | "}" | SP | HTAB ; - wordc = alpha | digit | "-" | "." | "!" | "%" | "*" | "_" - | "+" | "`" | "'" | "~" | "(" | ")" | "<" | ">" | ":" - | "\\" | "\"" | "/" | "[" | "]" | "?" | "{" | "}" ; - schmchars = alpha | digit | "+" | "-" | "." ; - word = wordc+ ; - STAR = SWS "*" SWS ; - SLASH = SWS "/" SWS ; - EQUAL = SWS "=" SWS ; - LPAREN = SWS "(" SWS ; - RPAREN = SWS ")" SWS ; - RAQUOT = ">" SWS ; - LAQUOT = SWS "<" ; - COMMA = SWS "," SWS ; - SEMI = SWS ";" SWS ; - COLON = SWS ":" SWS ; - HCOLON = WSP* ":" SWS ; - LDQUOT = SWS "\"" ; - RDQUOT = "\"" SWS ; + wordc = alnum | "-" | "." | "!" | "%" | "*" | "_" | "+" | "`" + | "'" | "~" | "(" | ")" | "<" | ">" | ":" | "\\" | "\"" + | "/" | "[" | "]" | "?" | "{" | "}" ; + schmchars = alnum | "+" | "-" | "." ; + word = wordc+; + STAR = SWS "*" SWS; + SLASH = SWS "/" SWS; + EQUAL = SWS "=" SWS; + LPAREN = SWS "(" SWS; + RPAREN = SWS ")" SWS; + RAQUOT = ">" SWS; + LAQUOT = SWS "<"; + COMMA = SWS "," SWS; + SEMI = SWS ";" SWS; + COLON = SWS ":" SWS; + 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 ) @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 | "%" ; + uric = reserved | unreserved | "%" | "[" | "]"; uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," ; uri = alpha schmchars* ":" uric+; @@ -291,34 +280,21 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { 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; + hval = ( mUTF8 | LWS )* >mark; # 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} + aname = ("Contact"i | "m"i) %{addr=&msg.Contact} + | ("From"i | "f"i) %{addr=&msg.From} + | "P-Asserted-Identity"i %{addr=&msg.PAssertedIdentity} + | "Record-Route"i %{addr=&msg.RecordRoute} + | "Remote-Party-ID"i %{addr=&msg.RemotePartyID} + | "Route"i %{addr=&msg.Route} + | ("To"i | "t"i) %{addr=&msg.To} ; # String Headers @@ -371,18 +347,17 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { | ("Via"i | "v"i) @!gxh HCOLON <: hval %Via ; - 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 @goto_header - | aname >mark @err(goto_xheader) HCOLON <: any @goto_avalue - | sname >mark @err(goto_xheader) HCOLON <: any @goto_svalue + value := hval <: CRLF @store_value @goto_header; + xheader := token >mark %store_name HCOLON <: any @{value=nil;addr=nil} @goto_value; + header := CRLF @break + | cheader <: CRLF @goto_header + | aname >mark @err(goto_xheader) HCOLON <: any @{value=nil} @goto_value + | sname >mark @err(goto_xheader) HCOLON <: any @{addr=nil} @goto_value ; SIPVersion = "SIP/" SIPVersionNo; - Request = Method SP RequestURI SP SIPVersion CR LF @goto_header; - Response = SIPVersion SP StatusCode SP ReasonPhrase CR LF @goto_header; + Request = Method SP RequestURI SP SIPVersion CRLF @goto_header; + Response = SIPVersion SP StatusCode SP ReasonPhrase CRLF @goto_header; main := Request | Response; write init; @@ -412,3 +387,7 @@ func ParseMsgBytes(data []byte) (msg *Msg, err error) { return msg, nil } + +func lookAheadWSP(data []byte, p, pe int) bool { + return p + 2 < pe && (data[p+2] == ' ' || data[p+2] == '\t') +} diff --git a/sip/msg_test.go b/sip/msg_test.go index bbc8622..e8d8a5e 100755 --- a/sip/msg_test.go +++ b/sip/msg_test.go @@ -79,7 +79,30 @@ var msgTests = []msgTest{ }, msgTest{ - name: "Line Continuations", + name: "Line Continuation Warning", + s: "SIP/2.0 200 OK\r\n" + + "Warning: Morning and evening\r\n" + + " Maids heard the goblins cry:\r\n" + + " “Come buy our orchard fruits,\r\n" + + " Come buy, come buy:\r\n" + + " Apples and quinces,\r\n" + + " Lemons and oranges\r\n" + + "\r\n", + msg: sip.Msg{ + VersionMajor: 2, + Status: 200, + Phrase: "OK", + Warning: "Morning and evening\r\n" + + " Maids heard the goblins cry:\r\n" + + " “Come buy our orchard fruits,\r\n" + + " Come buy, come buy:\r\n" + + " Apples and quinces,\r\n" + + " Lemons and oranges", + }, + }, + + msgTest{ + name: "Line Continuations Addr", s: "SIP/2.0 200 OK\r\n" + "From:\r\n" + " ,\r\n" + @@ -142,6 +165,52 @@ var msgTests = []msgTest{ }, }, + msgTest{ + name: "Address Quoted Display Multiline", + s: "SIP/2.0 200 OK\r\n" + + "From: \"oh\r\n" + + " my \r\n" + + " goth\" \r\n" + + "\r\n", + msg: sip.Msg{ + VersionMajor: 2, + Status: 200, + Phrase: "OK", + From: &sip.Addr{ + Display: "oh\r\n" + + " my \r\n" + + " goth", + Uri: &sip.URI{ + Scheme: "sip", + Host: "lol.com", + }, + }, + }, + }, + + msgTest{ + name: "Address Unquoted Display Multiline", + s: "SIP/2.0 200 OK\r\n" + + "From: oh\r\n" + + " my \r\n" + + " goth \r\n" + + "\r\n", + msg: sip.Msg{ + VersionMajor: 2, + Status: 200, + Phrase: "OK", + From: &sip.Addr{ + Display: "oh\r\n" + + " my \r\n" + + " goth", + Uri: &sip.URI{ + Scheme: "sip", + Host: "lol.com", + }, + }, + }, + }, + msgTest{ name: "Addr Tag", s: "SIP/2.0 200 OK\r\n" + @@ -594,16 +663,16 @@ func TestParseMsg(t *testing.T) { t.Errorf("Request:\n%#v !=\n%#v", test.msg.Request, msg.Request) } if !reflect.DeepEqual(test.msg.To, msg.To) { - t.Errorf("To:\n%#v !=\n%#v", test.msg.To, msg.To) + addrError(t, "To", test.msg.To, msg.To) } if !reflect.DeepEqual(test.msg.From, msg.From) { - t.Errorf("From:\n%#v !=\n%#v", test.msg.From, msg.From) + addrError(t, "From", test.msg.From, msg.From) } if !reflect.DeepEqual(test.msg.Contact, msg.Contact) { - t.Errorf("Contact:\n%#v !=\n%#v", test.msg.Contact, msg.Contact) + addrError(t, "Contact", test.msg.Contact, msg.Contact) } if !reflect.DeepEqual(test.msg.RecordRoute, msg.RecordRoute) { - t.Errorf("RecordRoute:\n%#v !=\n%#v", test.msg.RecordRoute, msg.RecordRoute) + addrError(t, "RecordRoute", test.msg.RecordRoute, msg.RecordRoute) } } }