ires 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +32 -45
- data/ext/Gopkg.lock +31 -1
- data/ext/ires/image.go +227 -0
- data/ext/ires/ires.go +47 -59
- data/ext/ires/uri.go +143 -0
- data/ext/main.go +18 -9
- data/ext/vendor/github.com/PuerkitoBio/purell/LICENSE +12 -0
- data/ext/vendor/github.com/PuerkitoBio/purell/README.md +187 -0
- data/ext/vendor/github.com/PuerkitoBio/purell/bench_test.go +57 -0
- data/ext/vendor/github.com/PuerkitoBio/purell/benchmarks/v0.1.0 +9 -0
- data/ext/vendor/github.com/PuerkitoBio/purell/example_test.go +35 -0
- data/ext/vendor/github.com/PuerkitoBio/purell/purell.go +379 -0
- data/ext/vendor/github.com/PuerkitoBio/purell/purell_test.go +768 -0
- data/ext/vendor/github.com/PuerkitoBio/purell/urlnorm_test.go +53 -0
- data/ext/vendor/github.com/PuerkitoBio/urlesc/LICENSE +27 -0
- data/ext/vendor/github.com/PuerkitoBio/urlesc/README.md +16 -0
- data/ext/vendor/github.com/PuerkitoBio/urlesc/urlesc.go +180 -0
- data/ext/vendor/github.com/PuerkitoBio/urlesc/urlesc_test.go +641 -0
- data/ext/vendor/github.com/{satori/go.uuid → goware/urlx}/LICENSE +3 -1
- data/ext/vendor/github.com/goware/urlx/README.md +172 -0
- data/ext/vendor/github.com/goware/urlx/urlx.go +196 -0
- data/ext/vendor/github.com/goware/urlx/urlx_test.go +232 -0
- data/ext/vendor/golang.org/x/net/AUTHORS +3 -0
- data/ext/vendor/golang.org/x/net/CONTRIBUTING.md +31 -0
- data/ext/vendor/golang.org/x/net/CONTRIBUTORS +3 -0
- data/ext/vendor/golang.org/x/net/LICENSE +27 -0
- data/ext/vendor/golang.org/x/net/PATENTS +22 -0
- data/ext/vendor/golang.org/x/net/README.md +16 -0
- data/ext/vendor/golang.org/x/net/bpf/asm.go +41 -0
- data/ext/vendor/golang.org/x/net/bpf/constants.go +218 -0
- data/ext/vendor/golang.org/x/net/bpf/doc.go +82 -0
- data/ext/vendor/golang.org/x/net/bpf/instructions.go +704 -0
- data/ext/vendor/golang.org/x/net/bpf/instructions_test.go +525 -0
- data/ext/vendor/golang.org/x/net/bpf/setter.go +10 -0
- data/ext/vendor/golang.org/x/net/bpf/testdata/all_instructions.bpf +1 -0
- data/ext/vendor/golang.org/x/net/bpf/testdata/all_instructions.txt +79 -0
- data/ext/vendor/golang.org/x/net/bpf/vm.go +140 -0
- data/ext/vendor/golang.org/x/net/bpf/vm_aluop_test.go +512 -0
- data/ext/vendor/golang.org/x/net/bpf/vm_bpf_test.go +192 -0
- data/ext/vendor/golang.org/x/net/bpf/vm_extension_test.go +49 -0
- data/ext/vendor/golang.org/x/net/bpf/vm_instructions.go +174 -0
- data/ext/vendor/golang.org/x/net/bpf/vm_jump_test.go +380 -0
- data/ext/vendor/golang.org/x/net/bpf/vm_load_test.go +246 -0
- data/ext/vendor/golang.org/x/net/bpf/vm_ret_test.go +115 -0
- data/ext/vendor/golang.org/x/net/bpf/vm_scratch_test.go +247 -0
- data/ext/vendor/golang.org/x/net/bpf/vm_test.go +144 -0
- data/ext/vendor/golang.org/x/net/codereview.cfg +1 -0
- data/ext/vendor/golang.org/x/net/context/context.go +54 -0
- data/ext/vendor/golang.org/x/net/context/context_test.go +583 -0
- data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +74 -0
- data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_17_test.go +29 -0
- data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17.go +147 -0
- data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17_test.go +79 -0
- data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_test.go +105 -0
- data/ext/vendor/golang.org/x/net/context/go17.go +72 -0
- data/ext/vendor/golang.org/x/net/context/go19.go +20 -0
- data/ext/vendor/golang.org/x/net/context/pre_go17.go +300 -0
- data/ext/vendor/golang.org/x/net/context/pre_go19.go +109 -0
- data/ext/vendor/golang.org/x/net/context/withtimeout_test.go +31 -0
- data/ext/vendor/golang.org/x/net/dict/dict.go +210 -0
- data/ext/vendor/golang.org/x/net/dns/dnsmessage/example_test.go +132 -0
- data/ext/vendor/golang.org/x/net/dns/dnsmessage/message.go +1997 -0
- data/ext/vendor/golang.org/x/net/dns/dnsmessage/message_test.go +1116 -0
- data/ext/vendor/golang.org/x/net/html/atom/atom.go +78 -0
- data/ext/vendor/golang.org/x/net/html/atom/atom_test.go +109 -0
- data/ext/vendor/golang.org/x/net/html/atom/gen.go +709 -0
- data/ext/vendor/golang.org/x/net/html/atom/table.go +777 -0
- data/ext/vendor/golang.org/x/net/html/atom/table_test.go +373 -0
- data/ext/vendor/golang.org/x/net/html/charset/charset.go +257 -0
- data/ext/vendor/golang.org/x/net/html/charset/charset_test.go +237 -0
- data/ext/vendor/golang.org/x/net/html/charset/testdata/HTTP-charset.html +48 -0
- data/ext/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-UTF-8-BOM.html +48 -0
- data/ext/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-charset.html +49 -0
- data/ext/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-content.html +49 -0
- data/ext/vendor/golang.org/x/net/html/charset/testdata/No-encoding-declaration.html +47 -0
- data/ext/vendor/golang.org/x/net/html/charset/testdata/README +9 -0
- data/ext/vendor/golang.org/x/net/html/charset/testdata/UTF-16BE-BOM.html +0 -0
- data/ext/vendor/golang.org/x/net/html/charset/testdata/UTF-16LE-BOM.html +0 -0
- data/ext/vendor/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-charset.html +49 -0
- data/ext/vendor/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-content.html +48 -0
- data/ext/vendor/golang.org/x/net/html/charset/testdata/meta-charset-attribute.html +48 -0
- data/ext/vendor/golang.org/x/net/html/charset/testdata/meta-content-attribute.html +48 -0
- data/ext/vendor/golang.org/x/net/html/const.go +104 -0
- data/ext/vendor/golang.org/x/net/html/doc.go +106 -0
- data/ext/vendor/golang.org/x/net/html/doctype.go +156 -0
- data/ext/vendor/golang.org/x/net/html/entity.go +2253 -0
- data/ext/vendor/golang.org/x/net/html/entity_test.go +29 -0
- data/ext/vendor/golang.org/x/net/html/escape.go +258 -0
- data/ext/vendor/golang.org/x/net/html/escape_test.go +97 -0
- data/ext/vendor/golang.org/x/net/html/example_test.go +40 -0
- data/ext/vendor/golang.org/x/net/html/foreign.go +226 -0
- data/ext/vendor/golang.org/x/net/html/node.go +193 -0
- data/ext/vendor/golang.org/x/net/html/node_test.go +146 -0
- data/ext/vendor/golang.org/x/net/html/parse.go +2094 -0
- data/ext/vendor/golang.org/x/net/html/parse_test.go +388 -0
- data/ext/vendor/golang.org/x/net/html/render.go +271 -0
- data/ext/vendor/golang.org/x/net/html/render_test.go +156 -0
- data/ext/vendor/golang.org/x/net/html/testdata/go1.html +2237 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/README +28 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/adoption01.dat +194 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/adoption02.dat +31 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/comments01.dat +135 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/doctype01.dat +370 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/entities01.dat +603 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/entities02.dat +249 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/html5test-com.dat +246 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/inbody01.dat +43 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/isindex.dat +40 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.dat +0 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/pending-spec-changes.dat +52 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/plain-text-unsafe.dat +0 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/scriptdata01.dat +308 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/scripted/adoption01.dat +15 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/scripted/webkit01.dat +28 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tables01.dat +212 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests1.dat +1952 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests10.dat +799 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests11.dat +482 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests12.dat +62 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests14.dat +74 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests15.dat +208 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests16.dat +2299 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests17.dat +153 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests18.dat +269 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests19.dat +1237 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests2.dat +763 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests20.dat +455 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests21.dat +221 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests22.dat +157 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests23.dat +155 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests24.dat +79 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests25.dat +219 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests26.dat +313 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests3.dat +305 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests4.dat +59 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests5.dat +191 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests6.dat +663 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests7.dat +390 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests8.dat +148 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests9.dat +457 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests_innerHTML_1.dat +741 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/tricky01.dat +261 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/webkit01.dat +610 -0
- data/ext/vendor/golang.org/x/net/html/testdata/webkit/webkit02.dat +159 -0
- data/ext/vendor/golang.org/x/net/html/token.go +1219 -0
- data/ext/vendor/golang.org/x/net/html/token_test.go +748 -0
- data/ext/vendor/golang.org/x/net/http2/Dockerfile +51 -0
- data/ext/vendor/golang.org/x/net/http2/Makefile +3 -0
- data/ext/vendor/golang.org/x/net/http2/README +20 -0
- data/ext/vendor/golang.org/x/net/http2/ciphers.go +641 -0
- data/ext/vendor/golang.org/x/net/http2/ciphers_test.go +309 -0
- data/ext/vendor/golang.org/x/net/http2/client_conn_pool.go +256 -0
- data/ext/vendor/golang.org/x/net/http2/configure_transport.go +80 -0
- data/ext/vendor/golang.org/x/net/http2/databuffer.go +146 -0
- data/ext/vendor/golang.org/x/net/http2/databuffer_test.go +157 -0
- data/ext/vendor/golang.org/x/net/http2/errors.go +133 -0
- data/ext/vendor/golang.org/x/net/http2/errors_test.go +24 -0
- data/ext/vendor/golang.org/x/net/http2/flow.go +50 -0
- data/ext/vendor/golang.org/x/net/http2/flow_test.go +53 -0
- data/ext/vendor/golang.org/x/net/http2/frame.go +1579 -0
- data/ext/vendor/golang.org/x/net/http2/frame_test.go +1191 -0
- data/ext/vendor/golang.org/x/net/http2/go16.go +16 -0
- data/ext/vendor/golang.org/x/net/http2/go17.go +106 -0
- data/ext/vendor/golang.org/x/net/http2/go17_not18.go +36 -0
- data/ext/vendor/golang.org/x/net/http2/go18.go +56 -0
- data/ext/vendor/golang.org/x/net/http2/go18_test.go +79 -0
- data/ext/vendor/golang.org/x/net/http2/go19.go +16 -0
- data/ext/vendor/golang.org/x/net/http2/go19_test.go +60 -0
- data/ext/vendor/golang.org/x/net/http2/gotrack.go +170 -0
- data/ext/vendor/golang.org/x/net/http2/gotrack_test.go +33 -0
- data/ext/vendor/golang.org/x/net/http2/h2demo/Makefile +8 -0
- data/ext/vendor/golang.org/x/net/http2/h2demo/README +16 -0
- data/ext/vendor/golang.org/x/net/http2/h2demo/h2demo.go +538 -0
- data/ext/vendor/golang.org/x/net/http2/h2demo/launch.go +302 -0
- data/ext/vendor/golang.org/x/net/http2/h2demo/rootCA.key +27 -0
- data/ext/vendor/golang.org/x/net/http2/h2demo/rootCA.pem +26 -0
- data/ext/vendor/golang.org/x/net/http2/h2demo/rootCA.srl +1 -0
- data/ext/vendor/golang.org/x/net/http2/h2demo/server.crt +20 -0
- data/ext/vendor/golang.org/x/net/http2/h2demo/server.key +27 -0
- data/ext/vendor/golang.org/x/net/http2/h2demo/tmpl.go +1991 -0
- data/ext/vendor/golang.org/x/net/http2/h2i/README.md +97 -0
- data/ext/vendor/golang.org/x/net/http2/h2i/h2i.go +522 -0
- data/ext/vendor/golang.org/x/net/http2/headermap.go +78 -0
- data/ext/vendor/golang.org/x/net/http2/hpack/encode.go +240 -0
- data/ext/vendor/golang.org/x/net/http2/hpack/encode_test.go +386 -0
- data/ext/vendor/golang.org/x/net/http2/hpack/hpack.go +490 -0
- data/ext/vendor/golang.org/x/net/http2/hpack/hpack_test.go +722 -0
- data/ext/vendor/golang.org/x/net/http2/hpack/huffman.go +212 -0
- data/ext/vendor/golang.org/x/net/http2/hpack/tables.go +479 -0
- data/ext/vendor/golang.org/x/net/http2/hpack/tables_test.go +214 -0
- data/ext/vendor/golang.org/x/net/http2/http2.go +391 -0
- data/ext/vendor/golang.org/x/net/http2/http2_test.go +199 -0
- data/ext/vendor/golang.org/x/net/http2/not_go16.go +21 -0
- data/ext/vendor/golang.org/x/net/http2/not_go17.go +87 -0
- data/ext/vendor/golang.org/x/net/http2/not_go18.go +29 -0
- data/ext/vendor/golang.org/x/net/http2/not_go19.go +16 -0
- data/ext/vendor/golang.org/x/net/http2/pipe.go +163 -0
- data/ext/vendor/golang.org/x/net/http2/pipe_test.go +130 -0
- data/ext/vendor/golang.org/x/net/http2/server.go +2857 -0
- data/ext/vendor/golang.org/x/net/http2/server_push_test.go +521 -0
- data/ext/vendor/golang.org/x/net/http2/server_test.go +3721 -0
- data/ext/vendor/golang.org/x/net/http2/testdata/draft-ietf-httpbis-http2.xml +5021 -0
- data/ext/vendor/golang.org/x/net/http2/transport.go +2285 -0
- data/ext/vendor/golang.org/x/net/http2/transport_test.go +3714 -0
- data/ext/vendor/golang.org/x/net/http2/write.go +370 -0
- data/ext/vendor/golang.org/x/net/http2/writesched.go +242 -0
- data/ext/vendor/golang.org/x/net/http2/writesched_priority.go +452 -0
- data/ext/vendor/golang.org/x/net/http2/writesched_priority_test.go +541 -0
- data/ext/vendor/golang.org/x/net/http2/writesched_random.go +72 -0
- data/ext/vendor/golang.org/x/net/http2/writesched_random_test.go +44 -0
- data/ext/vendor/golang.org/x/net/http2/writesched_test.go +125 -0
- data/ext/vendor/golang.org/x/net/http2/z_spec_test.go +356 -0
- data/ext/vendor/golang.org/x/net/icmp/dstunreach.go +41 -0
- data/ext/vendor/golang.org/x/net/icmp/echo.go +45 -0
- data/ext/vendor/golang.org/x/net/icmp/endpoint.go +113 -0
- data/ext/vendor/golang.org/x/net/icmp/example_test.go +63 -0
- data/ext/vendor/golang.org/x/net/icmp/extension.go +89 -0
- data/ext/vendor/golang.org/x/net/icmp/extension_test.go +259 -0
- data/ext/vendor/golang.org/x/net/icmp/helper_posix.go +75 -0
- data/ext/vendor/golang.org/x/net/icmp/interface.go +236 -0
- data/ext/vendor/golang.org/x/net/icmp/ipv4.go +61 -0
- data/ext/vendor/golang.org/x/net/icmp/ipv4_test.go +83 -0
- data/ext/vendor/golang.org/x/net/icmp/ipv6.go +23 -0
- data/ext/vendor/golang.org/x/net/icmp/listen_posix.go +100 -0
- data/ext/vendor/golang.org/x/net/icmp/listen_stub.go +33 -0
- data/ext/vendor/golang.org/x/net/icmp/message.go +152 -0
- data/ext/vendor/golang.org/x/net/icmp/message_test.go +134 -0
- data/ext/vendor/golang.org/x/net/icmp/messagebody.go +41 -0
- data/ext/vendor/golang.org/x/net/icmp/mpls.go +77 -0
- data/ext/vendor/golang.org/x/net/icmp/multipart.go +109 -0
- data/ext/vendor/golang.org/x/net/icmp/multipart_test.go +442 -0
- data/ext/vendor/golang.org/x/net/icmp/packettoobig.go +43 -0
- data/ext/vendor/golang.org/x/net/icmp/paramprob.go +63 -0
- data/ext/vendor/golang.org/x/net/icmp/ping_test.go +200 -0
- data/ext/vendor/golang.org/x/net/icmp/sys_freebsd.go +11 -0
- data/ext/vendor/golang.org/x/net/icmp/timeexceeded.go +39 -0
- data/ext/vendor/golang.org/x/net/idna/example_test.go +70 -0
- data/ext/vendor/golang.org/x/net/idna/idna.go +680 -0
- data/ext/vendor/golang.org/x/net/idna/idna_test.go +108 -0
- data/ext/vendor/golang.org/x/net/idna/punycode.go +203 -0
- data/ext/vendor/golang.org/x/net/idna/punycode_test.go +198 -0
- data/ext/vendor/golang.org/x/net/idna/tables.go +4477 -0
- data/ext/vendor/golang.org/x/net/idna/trie.go +72 -0
- data/ext/vendor/golang.org/x/net/idna/trieval.go +114 -0
- data/ext/vendor/golang.org/x/net/internal/iana/const.go +180 -0
- data/ext/vendor/golang.org/x/net/internal/iana/gen.go +293 -0
- data/ext/vendor/golang.org/x/net/internal/nettest/helper_bsd.go +53 -0
- data/ext/vendor/golang.org/x/net/internal/nettest/helper_nobsd.go +15 -0
- data/ext/vendor/golang.org/x/net/internal/nettest/helper_posix.go +31 -0
- data/ext/vendor/golang.org/x/net/internal/nettest/helper_stub.go +32 -0
- data/ext/vendor/golang.org/x/net/internal/nettest/helper_unix.go +29 -0
- data/ext/vendor/golang.org/x/net/internal/nettest/helper_windows.go +42 -0
- data/ext/vendor/golang.org/x/net/internal/nettest/interface.go +94 -0
- data/ext/vendor/golang.org/x/net/internal/nettest/rlimit.go +11 -0
- data/ext/vendor/golang.org/x/net/internal/nettest/stack.go +147 -0
- data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr.go +11 -0
- data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go +13 -0
- data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go +14 -0
- data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go +14 -0
- data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go +14 -0
- data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go +17 -0
- data/ext/vendor/golang.org/x/net/internal/socket/defs_darwin.go +44 -0
- data/ext/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go +44 -0
- data/ext/vendor/golang.org/x/net/internal/socket/defs_freebsd.go +44 -0
- data/ext/vendor/golang.org/x/net/internal/socket/defs_linux.go +49 -0
- data/ext/vendor/golang.org/x/net/internal/socket/defs_netbsd.go +47 -0
- data/ext/vendor/golang.org/x/net/internal/socket/defs_openbsd.go +44 -0
- data/ext/vendor/golang.org/x/net/internal/socket/defs_solaris.go +44 -0
- data/ext/vendor/golang.org/x/net/internal/socket/error_unix.go +31 -0
- data/ext/vendor/golang.org/x/net/internal/socket/error_windows.go +26 -0
- data/ext/vendor/golang.org/x/net/internal/socket/iovec_32bit.go +19 -0
- data/ext/vendor/golang.org/x/net/internal/socket/iovec_64bit.go +19 -0
- data/ext/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go +19 -0
- data/ext/vendor/golang.org/x/net/internal/socket/iovec_stub.go +11 -0
- data/ext/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go +21 -0
- data/ext/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go +42 -0
- data/ext/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go +39 -0
- data/ext/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go +16 -0
- data/ext/vendor/golang.org/x/net/internal/socket/msghdr_linux.go +36 -0
- data/ext/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go +24 -0
- data/ext/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go +24 -0
- data/ext/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go +14 -0
- data/ext/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go +36 -0
- data/ext/vendor/golang.org/x/net/internal/socket/msghdr_stub.go +14 -0
- data/ext/vendor/golang.org/x/net/internal/socket/rawconn.go +66 -0
- data/ext/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go +74 -0
- data/ext/vendor/golang.org/x/net/internal/socket/rawconn_msg.go +77 -0
- data/ext/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go +18 -0
- data/ext/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go +18 -0
- data/ext/vendor/golang.org/x/net/internal/socket/rawconn_stub.go +25 -0
- data/ext/vendor/golang.org/x/net/internal/socket/reflect.go +62 -0
- data/ext/vendor/golang.org/x/net/internal/socket/socket.go +285 -0
- data/ext/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go +259 -0
- data/ext/vendor/golang.org/x/net/internal/socket/socket_test.go +46 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys.go +33 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_bsd.go +17 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go +14 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_darwin.go +7 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go +7 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_linux.go +27 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_386.go +55 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_386.s +11 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go +10 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go +10 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go +10 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go +10 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go +10 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go +10 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go +10 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go +10 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go +10 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go +55 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s +11 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_netbsd.go +25 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_posix.go +168 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_solaris.go +71 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s +11 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_stub.go +64 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_unix.go +33 -0
- data/ext/vendor/golang.org/x/net/internal/socket/sys_windows.go +70 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go +59 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go +61 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go +59 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go +61 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go +59 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go +61 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go +59 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go +63 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go +66 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go +63 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go +66 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go +63 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go +66 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go +66 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go +63 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go +66 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go +66 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go +66 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go +65 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go +68 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go +59 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go +59 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go +61 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go +59 -0
- data/ext/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go +60 -0
- data/ext/vendor/golang.org/x/net/internal/timeseries/timeseries.go +525 -0
- data/ext/vendor/golang.org/x/net/internal/timeseries/timeseries_test.go +170 -0
- data/ext/vendor/golang.org/x/net/ipv4/batch.go +191 -0
- data/ext/vendor/golang.org/x/net/ipv4/bpf_test.go +93 -0
- data/ext/vendor/golang.org/x/net/ipv4/control.go +144 -0
- data/ext/vendor/golang.org/x/net/ipv4/control_bsd.go +40 -0
- data/ext/vendor/golang.org/x/net/ipv4/control_pktinfo.go +39 -0
- data/ext/vendor/golang.org/x/net/ipv4/control_stub.go +13 -0
- data/ext/vendor/golang.org/x/net/ipv4/control_test.go +21 -0
- data/ext/vendor/golang.org/x/net/ipv4/control_unix.go +73 -0
- data/ext/vendor/golang.org/x/net/ipv4/control_windows.go +16 -0
- data/ext/vendor/golang.org/x/net/ipv4/defs_darwin.go +77 -0
- data/ext/vendor/golang.org/x/net/ipv4/defs_dragonfly.go +38 -0
- data/ext/vendor/golang.org/x/net/ipv4/defs_freebsd.go +75 -0
- data/ext/vendor/golang.org/x/net/ipv4/defs_linux.go +122 -0
- data/ext/vendor/golang.org/x/net/ipv4/defs_netbsd.go +37 -0
- data/ext/vendor/golang.org/x/net/ipv4/defs_openbsd.go +37 -0
- data/ext/vendor/golang.org/x/net/ipv4/defs_solaris.go +84 -0
- data/ext/vendor/golang.org/x/net/ipv4/dgramopt.go +265 -0
- data/ext/vendor/golang.org/x/net/ipv4/doc.go +244 -0
- data/ext/vendor/golang.org/x/net/ipv4/endpoint.go +187 -0
- data/ext/vendor/golang.org/x/net/ipv4/example_test.go +224 -0
- data/ext/vendor/golang.org/x/net/ipv4/gen.go +199 -0
- data/ext/vendor/golang.org/x/net/ipv4/genericopt.go +57 -0
- data/ext/vendor/golang.org/x/net/ipv4/header.go +159 -0
- data/ext/vendor/golang.org/x/net/ipv4/header_test.go +228 -0
- data/ext/vendor/golang.org/x/net/ipv4/helper.go +63 -0
- data/ext/vendor/golang.org/x/net/ipv4/iana.go +34 -0
- data/ext/vendor/golang.org/x/net/ipv4/icmp.go +57 -0
- data/ext/vendor/golang.org/x/net/ipv4/icmp_linux.go +25 -0
- data/ext/vendor/golang.org/x/net/ipv4/icmp_stub.go +25 -0
- data/ext/vendor/golang.org/x/net/ipv4/icmp_test.go +95 -0
- data/ext/vendor/golang.org/x/net/ipv4/multicast_test.go +334 -0
- data/ext/vendor/golang.org/x/net/ipv4/multicastlistener_test.go +265 -0
- data/ext/vendor/golang.org/x/net/ipv4/multicastsockopt_test.go +195 -0
- data/ext/vendor/golang.org/x/net/ipv4/packet.go +69 -0
- data/ext/vendor/golang.org/x/net/ipv4/packet_go1_8.go +56 -0
- data/ext/vendor/golang.org/x/net/ipv4/packet_go1_9.go +67 -0
- data/ext/vendor/golang.org/x/net/ipv4/payload.go +23 -0
- data/ext/vendor/golang.org/x/net/ipv4/payload_cmsg.go +36 -0
- data/ext/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go +59 -0
- data/ext/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go +67 -0
- data/ext/vendor/golang.org/x/net/ipv4/payload_nocmsg.go +42 -0
- data/ext/vendor/golang.org/x/net/ipv4/readwrite_go1_8_test.go +248 -0
- data/ext/vendor/golang.org/x/net/ipv4/readwrite_go1_9_test.go +388 -0
- data/ext/vendor/golang.org/x/net/ipv4/readwrite_test.go +140 -0
- data/ext/vendor/golang.org/x/net/ipv4/sockopt.go +44 -0
- data/ext/vendor/golang.org/x/net/ipv4/sockopt_posix.go +71 -0
- data/ext/vendor/golang.org/x/net/ipv4/sockopt_stub.go +42 -0
- data/ext/vendor/golang.org/x/net/ipv4/sys_asmreq.go +119 -0
- data/ext/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go +25 -0
- data/ext/vendor/golang.org/x/net/ipv4/sys_asmreqn.go +42 -0
- data/ext/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go +21 -0
- data/ext/vendor/golang.org/x/net/ipv4/sys_bpf.go +23 -0
- data/ext/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go +16 -0
- data/ext/vendor/golang.org/x/net/ipv4/sys_bsd.go +37 -0
- data/ext/vendor/golang.org/x/net/ipv4/sys_darwin.go +93 -0
- data/ext/vendor/golang.org/x/net/ipv4/sys_dragonfly.go +35 -0
- data/ext/vendor/golang.org/x/net/ipv4/sys_freebsd.go +76 -0
- data/ext/vendor/golang.org/x/net/ipv4/sys_linux.go +59 -0
- data/ext/vendor/golang.org/x/net/ipv4/sys_solaris.go +57 -0
- data/ext/vendor/golang.org/x/net/ipv4/sys_ssmreq.go +54 -0
- data/ext/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go +21 -0
- data/ext/vendor/golang.org/x/net/ipv4/sys_stub.go +13 -0
- data/ext/vendor/golang.org/x/net/ipv4/sys_windows.go +67 -0
- data/ext/vendor/golang.org/x/net/ipv4/unicast_test.go +247 -0
- data/ext/vendor/golang.org/x/net/ipv4/unicastsockopt_test.go +148 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_darwin.go +99 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go +31 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go +93 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go +95 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go +95 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_386.go +148 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go +150 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go +148 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go +150 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go +148 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go +150 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go +150 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go +148 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go +148 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go +150 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go +150 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go +150 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_netbsd.go +30 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_openbsd.go +30 -0
- data/ext/vendor/golang.org/x/net/ipv4/zsys_solaris.go +100 -0
- data/ext/vendor/golang.org/x/net/ipv6/batch.go +119 -0
- data/ext/vendor/golang.org/x/net/ipv6/bpf_test.go +96 -0
- data/ext/vendor/golang.org/x/net/ipv6/control.go +187 -0
- data/ext/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go +48 -0
- data/ext/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go +94 -0
- data/ext/vendor/golang.org/x/net/ipv6/control_stub.go +13 -0
- data/ext/vendor/golang.org/x/net/ipv6/control_test.go +21 -0
- data/ext/vendor/golang.org/x/net/ipv6/control_unix.go +55 -0
- data/ext/vendor/golang.org/x/net/ipv6/control_windows.go +16 -0
- data/ext/vendor/golang.org/x/net/ipv6/defs_darwin.go +112 -0
- data/ext/vendor/golang.org/x/net/ipv6/defs_dragonfly.go +84 -0
- data/ext/vendor/golang.org/x/net/ipv6/defs_freebsd.go +105 -0
- data/ext/vendor/golang.org/x/net/ipv6/defs_linux.go +147 -0
- data/ext/vendor/golang.org/x/net/ipv6/defs_netbsd.go +80 -0
- data/ext/vendor/golang.org/x/net/ipv6/defs_openbsd.go +89 -0
- data/ext/vendor/golang.org/x/net/ipv6/defs_solaris.go +114 -0
- data/ext/vendor/golang.org/x/net/ipv6/dgramopt.go +302 -0
- data/ext/vendor/golang.org/x/net/ipv6/doc.go +243 -0
- data/ext/vendor/golang.org/x/net/ipv6/endpoint.go +128 -0
- data/ext/vendor/golang.org/x/net/ipv6/example_test.go +216 -0
- data/ext/vendor/golang.org/x/net/ipv6/gen.go +199 -0
- data/ext/vendor/golang.org/x/net/ipv6/genericopt.go +58 -0
- data/ext/vendor/golang.org/x/net/ipv6/header.go +55 -0
- data/ext/vendor/golang.org/x/net/ipv6/header_test.go +55 -0
- data/ext/vendor/golang.org/x/net/ipv6/helper.go +57 -0
- data/ext/vendor/golang.org/x/net/ipv6/iana.go +82 -0
- data/ext/vendor/golang.org/x/net/ipv6/icmp.go +60 -0
- data/ext/vendor/golang.org/x/net/ipv6/icmp_bsd.go +29 -0
- data/ext/vendor/golang.org/x/net/ipv6/icmp_linux.go +27 -0
- data/ext/vendor/golang.org/x/net/ipv6/icmp_solaris.go +27 -0
- data/ext/vendor/golang.org/x/net/ipv6/icmp_stub.go +23 -0
- data/ext/vendor/golang.org/x/net/ipv6/icmp_test.go +96 -0
- data/ext/vendor/golang.org/x/net/ipv6/icmp_windows.go +22 -0
- data/ext/vendor/golang.org/x/net/ipv6/mocktransponder_test.go +32 -0
- data/ext/vendor/golang.org/x/net/ipv6/multicast_test.go +264 -0
- data/ext/vendor/golang.org/x/net/ipv6/multicastlistener_test.go +261 -0
- data/ext/vendor/golang.org/x/net/ipv6/multicastsockopt_test.go +157 -0
- data/ext/vendor/golang.org/x/net/ipv6/payload.go +23 -0
- data/ext/vendor/golang.org/x/net/ipv6/payload_cmsg.go +35 -0
- data/ext/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go +55 -0
- data/ext/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go +57 -0
- data/ext/vendor/golang.org/x/net/ipv6/payload_nocmsg.go +41 -0
- data/ext/vendor/golang.org/x/net/ipv6/readwrite_go1_8_test.go +242 -0
- data/ext/vendor/golang.org/x/net/ipv6/readwrite_go1_9_test.go +373 -0
- data/ext/vendor/golang.org/x/net/ipv6/readwrite_test.go +148 -0
- data/ext/vendor/golang.org/x/net/ipv6/sockopt.go +43 -0
- data/ext/vendor/golang.org/x/net/ipv6/sockopt_posix.go +87 -0
- data/ext/vendor/golang.org/x/net/ipv6/sockopt_stub.go +46 -0
- data/ext/vendor/golang.org/x/net/ipv6/sockopt_test.go +133 -0
- data/ext/vendor/golang.org/x/net/ipv6/sys_asmreq.go +24 -0
- data/ext/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go +17 -0
- data/ext/vendor/golang.org/x/net/ipv6/sys_bpf.go +23 -0
- data/ext/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go +16 -0
- data/ext/vendor/golang.org/x/net/ipv6/sys_bsd.go +57 -0
- data/ext/vendor/golang.org/x/net/ipv6/sys_darwin.go +106 -0
- data/ext/vendor/golang.org/x/net/ipv6/sys_freebsd.go +92 -0
- data/ext/vendor/golang.org/x/net/ipv6/sys_linux.go +74 -0
- data/ext/vendor/golang.org/x/net/ipv6/sys_solaris.go +74 -0
- data/ext/vendor/golang.org/x/net/ipv6/sys_ssmreq.go +54 -0
- data/ext/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go +21 -0
- data/ext/vendor/golang.org/x/net/ipv6/sys_stub.go +13 -0
- data/ext/vendor/golang.org/x/net/ipv6/sys_windows.go +75 -0
- data/ext/vendor/golang.org/x/net/ipv6/unicast_test.go +184 -0
- data/ext/vendor/golang.org/x/net/ipv6/unicastsockopt_test.go +120 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_darwin.go +131 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go +88 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go +122 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go +124 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go +124 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_386.go +170 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go +172 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go +170 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go +172 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go +170 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go +172 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go +172 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go +170 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go +170 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go +172 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go +172 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go +172 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_netbsd.go +84 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_openbsd.go +93 -0
- data/ext/vendor/golang.org/x/net/ipv6/zsys_solaris.go +131 -0
- data/ext/vendor/golang.org/x/net/lex/httplex/httplex.go +351 -0
- data/ext/vendor/golang.org/x/net/lex/httplex/httplex_test.go +119 -0
- data/ext/vendor/golang.org/x/net/lif/address.go +105 -0
- data/ext/vendor/golang.org/x/net/lif/address_test.go +123 -0
- data/ext/vendor/golang.org/x/net/lif/binary.go +115 -0
- data/ext/vendor/golang.org/x/net/lif/defs_solaris.go +90 -0
- data/ext/vendor/golang.org/x/net/lif/lif.go +43 -0
- data/ext/vendor/golang.org/x/net/lif/link.go +126 -0
- data/ext/vendor/golang.org/x/net/lif/link_test.go +63 -0
- data/ext/vendor/golang.org/x/net/lif/sys.go +21 -0
- data/ext/vendor/golang.org/x/net/lif/sys_solaris_amd64.s +8 -0
- data/ext/vendor/golang.org/x/net/lif/syscall.go +28 -0
- data/ext/vendor/golang.org/x/net/lif/zsys_solaris_amd64.go +103 -0
- data/ext/vendor/golang.org/x/net/nettest/conntest.go +456 -0
- data/ext/vendor/golang.org/x/net/nettest/conntest_go16.go +24 -0
- data/ext/vendor/golang.org/x/net/nettest/conntest_go17.go +24 -0
- data/ext/vendor/golang.org/x/net/nettest/conntest_test.go +76 -0
- data/ext/vendor/golang.org/x/net/netutil/listen.go +48 -0
- data/ext/vendor/golang.org/x/net/netutil/listen_test.go +101 -0
- data/ext/vendor/golang.org/x/net/proxy/direct.go +18 -0
- data/ext/vendor/golang.org/x/net/proxy/per_host.go +140 -0
- data/ext/vendor/golang.org/x/net/proxy/per_host_test.go +55 -0
- data/ext/vendor/golang.org/x/net/proxy/proxy.go +134 -0
- data/ext/vendor/golang.org/x/net/proxy/proxy_test.go +215 -0
- data/ext/vendor/golang.org/x/net/proxy/socks5.go +214 -0
- data/ext/vendor/golang.org/x/net/publicsuffix/gen.go +713 -0
- data/ext/vendor/golang.org/x/net/publicsuffix/list.go +135 -0
- data/ext/vendor/golang.org/x/net/publicsuffix/list_test.go +416 -0
- data/ext/vendor/golang.org/x/net/publicsuffix/table.go +9419 -0
- data/ext/vendor/golang.org/x/net/publicsuffix/table_test.go +16756 -0
- data/ext/vendor/golang.org/x/net/route/address.go +425 -0
- data/ext/vendor/golang.org/x/net/route/address_darwin_test.go +63 -0
- data/ext/vendor/golang.org/x/net/route/address_test.go +103 -0
- data/ext/vendor/golang.org/x/net/route/binary.go +90 -0
- data/ext/vendor/golang.org/x/net/route/defs_darwin.go +114 -0
- data/ext/vendor/golang.org/x/net/route/defs_dragonfly.go +113 -0
- data/ext/vendor/golang.org/x/net/route/defs_freebsd.go +337 -0
- data/ext/vendor/golang.org/x/net/route/defs_netbsd.go +112 -0
- data/ext/vendor/golang.org/x/net/route/defs_openbsd.go +116 -0
- data/ext/vendor/golang.org/x/net/route/interface.go +64 -0
- data/ext/vendor/golang.org/x/net/route/interface_announce.go +32 -0
- data/ext/vendor/golang.org/x/net/route/interface_classic.go +66 -0
- data/ext/vendor/golang.org/x/net/route/interface_freebsd.go +78 -0
- data/ext/vendor/golang.org/x/net/route/interface_multicast.go +30 -0
- data/ext/vendor/golang.org/x/net/route/interface_openbsd.go +90 -0
- data/ext/vendor/golang.org/x/net/route/message.go +72 -0
- data/ext/vendor/golang.org/x/net/route/message_darwin_test.go +34 -0
- data/ext/vendor/golang.org/x/net/route/message_freebsd_test.go +92 -0
- data/ext/vendor/golang.org/x/net/route/message_test.go +239 -0
- data/ext/vendor/golang.org/x/net/route/route.go +123 -0
- data/ext/vendor/golang.org/x/net/route/route_classic.go +67 -0
- data/ext/vendor/golang.org/x/net/route/route_openbsd.go +65 -0
- data/ext/vendor/golang.org/x/net/route/route_test.go +390 -0
- data/ext/vendor/golang.org/x/net/route/sys.go +39 -0
- data/ext/vendor/golang.org/x/net/route/sys_darwin.go +87 -0
- data/ext/vendor/golang.org/x/net/route/sys_dragonfly.go +76 -0
- data/ext/vendor/golang.org/x/net/route/sys_freebsd.go +155 -0
- data/ext/vendor/golang.org/x/net/route/sys_netbsd.go +71 -0
- data/ext/vendor/golang.org/x/net/route/sys_openbsd.go +80 -0
- data/ext/vendor/golang.org/x/net/route/syscall.go +28 -0
- data/ext/vendor/golang.org/x/net/route/zsys_darwin.go +99 -0
- data/ext/vendor/golang.org/x/net/route/zsys_dragonfly.go +98 -0
- data/ext/vendor/golang.org/x/net/route/zsys_freebsd_386.go +126 -0
- data/ext/vendor/golang.org/x/net/route/zsys_freebsd_amd64.go +123 -0
- data/ext/vendor/golang.org/x/net/route/zsys_freebsd_arm.go +123 -0
- data/ext/vendor/golang.org/x/net/route/zsys_netbsd.go +97 -0
- data/ext/vendor/golang.org/x/net/route/zsys_openbsd.go +101 -0
- data/ext/vendor/golang.org/x/net/trace/events.go +532 -0
- data/ext/vendor/golang.org/x/net/trace/histogram.go +365 -0
- data/ext/vendor/golang.org/x/net/trace/histogram_test.go +325 -0
- data/ext/vendor/golang.org/x/net/trace/trace.go +1082 -0
- data/ext/vendor/golang.org/x/net/trace/trace_go16.go +21 -0
- data/ext/vendor/golang.org/x/net/trace/trace_go17.go +21 -0
- data/ext/vendor/golang.org/x/net/trace/trace_test.go +178 -0
- data/ext/vendor/golang.org/x/net/webdav/file.go +796 -0
- data/ext/vendor/golang.org/x/net/webdav/file_go1.6.go +17 -0
- data/ext/vendor/golang.org/x/net/webdav/file_go1.7.go +16 -0
- data/ext/vendor/golang.org/x/net/webdav/file_test.go +1184 -0
- data/ext/vendor/golang.org/x/net/webdav/if.go +173 -0
- data/ext/vendor/golang.org/x/net/webdav/if_test.go +322 -0
- data/ext/vendor/golang.org/x/net/webdav/internal/xml/README +11 -0
- data/ext/vendor/golang.org/x/net/webdav/internal/xml/atom_test.go +56 -0
- data/ext/vendor/golang.org/x/net/webdav/internal/xml/example_test.go +151 -0
- data/ext/vendor/golang.org/x/net/webdav/internal/xml/marshal.go +1223 -0
- data/ext/vendor/golang.org/x/net/webdav/internal/xml/marshal_test.go +1939 -0
- data/ext/vendor/golang.org/x/net/webdav/internal/xml/read.go +692 -0
- data/ext/vendor/golang.org/x/net/webdav/internal/xml/read_test.go +744 -0
- data/ext/vendor/golang.org/x/net/webdav/internal/xml/typeinfo.go +371 -0
- data/ext/vendor/golang.org/x/net/webdav/internal/xml/xml.go +1998 -0
- data/ext/vendor/golang.org/x/net/webdav/internal/xml/xml_test.go +752 -0
- data/ext/vendor/golang.org/x/net/webdav/litmus_test_server.go +94 -0
- data/ext/vendor/golang.org/x/net/webdav/lock.go +445 -0
- data/ext/vendor/golang.org/x/net/webdav/lock_test.go +731 -0
- data/ext/vendor/golang.org/x/net/webdav/prop.go +418 -0
- data/ext/vendor/golang.org/x/net/webdav/prop_test.go +613 -0
- data/ext/vendor/golang.org/x/net/webdav/webdav.go +702 -0
- data/ext/vendor/golang.org/x/net/webdav/webdav_test.go +344 -0
- data/ext/vendor/golang.org/x/net/webdav/xml.go +519 -0
- data/ext/vendor/golang.org/x/net/webdav/xml_test.go +906 -0
- data/ext/vendor/golang.org/x/net/websocket/client.go +106 -0
- data/ext/vendor/golang.org/x/net/websocket/dial.go +24 -0
- data/ext/vendor/golang.org/x/net/websocket/dial_test.go +43 -0
- data/ext/vendor/golang.org/x/net/websocket/exampledial_test.go +31 -0
- data/ext/vendor/golang.org/x/net/websocket/examplehandler_test.go +26 -0
- data/ext/vendor/golang.org/x/net/websocket/hybi.go +583 -0
- data/ext/vendor/golang.org/x/net/websocket/hybi_test.go +608 -0
- data/ext/vendor/golang.org/x/net/websocket/server.go +113 -0
- data/ext/vendor/golang.org/x/net/websocket/websocket.go +448 -0
- data/ext/vendor/golang.org/x/net/websocket/websocket_test.go +665 -0
- data/ext/vendor/golang.org/x/net/xsrftoken/xsrf.go +94 -0
- data/ext/vendor/golang.org/x/net/xsrftoken/xsrf_test.go +83 -0
- data/ext/vendor/golang.org/x/text/AUTHORS +3 -0
- data/ext/vendor/golang.org/x/text/CONTRIBUTING.md +31 -0
- data/ext/vendor/golang.org/x/text/CONTRIBUTORS +3 -0
- data/ext/vendor/golang.org/x/text/LICENSE +27 -0
- data/ext/vendor/golang.org/x/text/PATENTS +22 -0
- data/ext/vendor/golang.org/x/text/README.md +91 -0
- data/ext/vendor/golang.org/x/text/cases/cases.go +162 -0
- data/ext/vendor/golang.org/x/text/cases/context.go +376 -0
- data/ext/vendor/golang.org/x/text/cases/context_test.go +438 -0
- data/ext/vendor/golang.org/x/text/cases/example_test.go +53 -0
- data/ext/vendor/golang.org/x/text/cases/fold.go +34 -0
- data/ext/vendor/golang.org/x/text/cases/fold_test.go +51 -0
- data/ext/vendor/golang.org/x/text/cases/gen.go +839 -0
- data/ext/vendor/golang.org/x/text/cases/gen_trieval.go +219 -0
- data/ext/vendor/golang.org/x/text/cases/icu.go +61 -0
- data/ext/vendor/golang.org/x/text/cases/icu_test.go +210 -0
- data/ext/vendor/golang.org/x/text/cases/info.go +82 -0
- data/ext/vendor/golang.org/x/text/cases/map.go +816 -0
- data/ext/vendor/golang.org/x/text/cases/map_test.go +950 -0
- data/ext/vendor/golang.org/x/text/cases/tables.go +2251 -0
- data/ext/vendor/golang.org/x/text/cases/tables_test.go +1158 -0
- data/ext/vendor/golang.org/x/text/cases/trieval.go +215 -0
- data/ext/vendor/golang.org/x/text/cmd/gotext/doc.go +35 -0
- data/ext/vendor/golang.org/x/text/cmd/gotext/extract.go +195 -0
- data/ext/vendor/golang.org/x/text/cmd/gotext/main.go +356 -0
- data/ext/vendor/golang.org/x/text/cmd/gotext/message.go +127 -0
- data/ext/vendor/golang.org/x/text/codereview.cfg +1 -0
- data/ext/vendor/golang.org/x/text/collate/build/builder.go +702 -0
- data/ext/vendor/golang.org/x/text/collate/build/builder_test.go +290 -0
- data/ext/vendor/golang.org/x/text/collate/build/colelem.go +294 -0
- data/ext/vendor/golang.org/x/text/collate/build/colelem_test.go +215 -0
- data/ext/vendor/golang.org/x/text/collate/build/contract.go +309 -0
- data/ext/vendor/golang.org/x/text/collate/build/contract_test.go +266 -0
- data/ext/vendor/golang.org/x/text/collate/build/order.go +393 -0
- data/ext/vendor/golang.org/x/text/collate/build/order_test.go +229 -0
- data/ext/vendor/golang.org/x/text/collate/build/table.go +81 -0
- data/ext/vendor/golang.org/x/text/collate/build/trie.go +290 -0
- data/ext/vendor/golang.org/x/text/collate/build/trie_test.go +107 -0
- data/ext/vendor/golang.org/x/text/collate/collate.go +403 -0
- data/ext/vendor/golang.org/x/text/collate/collate_test.go +482 -0
- data/ext/vendor/golang.org/x/text/collate/export_test.go +51 -0
- data/ext/vendor/golang.org/x/text/collate/index.go +32 -0
- data/ext/vendor/golang.org/x/text/collate/maketables.go +553 -0
- data/ext/vendor/golang.org/x/text/collate/option.go +239 -0
- data/ext/vendor/golang.org/x/text/collate/option_test.go +209 -0
- data/ext/vendor/golang.org/x/text/collate/reg_test.go +230 -0
- data/ext/vendor/golang.org/x/text/collate/sort.go +81 -0
- data/ext/vendor/golang.org/x/text/collate/sort_test.go +55 -0
- data/ext/vendor/golang.org/x/text/collate/table_test.go +291 -0
- data/ext/vendor/golang.org/x/text/collate/tables.go +73789 -0
- data/ext/vendor/golang.org/x/text/collate/tools/colcmp/Makefile +7 -0
- data/ext/vendor/golang.org/x/text/collate/tools/colcmp/chars.go +1156 -0
- data/ext/vendor/golang.org/x/text/collate/tools/colcmp/col.go +97 -0
- data/ext/vendor/golang.org/x/text/collate/tools/colcmp/colcmp.go +529 -0
- data/ext/vendor/golang.org/x/text/collate/tools/colcmp/darwin.go +111 -0
- data/ext/vendor/golang.org/x/text/collate/tools/colcmp/gen.go +183 -0
- data/ext/vendor/golang.org/x/text/collate/tools/colcmp/icu.go +209 -0
- data/ext/vendor/golang.org/x/text/currency/common.go +66 -0
- data/ext/vendor/golang.org/x/text/currency/currency.go +185 -0
- data/ext/vendor/golang.org/x/text/currency/currency_test.go +171 -0
- data/ext/vendor/golang.org/x/text/currency/example_test.go +27 -0
- data/ext/vendor/golang.org/x/text/currency/format.go +215 -0
- data/ext/vendor/golang.org/x/text/currency/format_test.go +70 -0
- data/ext/vendor/golang.org/x/text/currency/gen.go +400 -0
- data/ext/vendor/golang.org/x/text/currency/gen_common.go +70 -0
- data/ext/vendor/golang.org/x/text/currency/query.go +152 -0
- data/ext/vendor/golang.org/x/text/currency/query_test.go +107 -0
- data/ext/vendor/golang.org/x/text/currency/tables.go +2574 -0
- data/ext/vendor/golang.org/x/text/currency/tables_test.go +93 -0
- data/ext/vendor/golang.org/x/text/doc.go +13 -0
- data/ext/vendor/golang.org/x/text/encoding/charmap/charmap.go +249 -0
- data/ext/vendor/golang.org/x/text/encoding/charmap/charmap_test.go +258 -0
- data/ext/vendor/golang.org/x/text/encoding/charmap/maketables.go +556 -0
- data/ext/vendor/golang.org/x/text/encoding/charmap/tables.go +7410 -0
- data/ext/vendor/golang.org/x/text/encoding/encoding.go +335 -0
- data/ext/vendor/golang.org/x/text/encoding/encoding_test.go +290 -0
- data/ext/vendor/golang.org/x/text/encoding/example_test.go +42 -0
- data/ext/vendor/golang.org/x/text/encoding/htmlindex/gen.go +173 -0
- data/ext/vendor/golang.org/x/text/encoding/htmlindex/htmlindex.go +86 -0
- data/ext/vendor/golang.org/x/text/encoding/htmlindex/htmlindex_test.go +144 -0
- data/ext/vendor/golang.org/x/text/encoding/htmlindex/map.go +105 -0
- data/ext/vendor/golang.org/x/text/encoding/htmlindex/tables.go +352 -0
- data/ext/vendor/golang.org/x/text/encoding/ianaindex/example_test.go +27 -0
- data/ext/vendor/golang.org/x/text/encoding/ianaindex/gen.go +192 -0
- data/ext/vendor/golang.org/x/text/encoding/ianaindex/ianaindex.go +209 -0
- data/ext/vendor/golang.org/x/text/encoding/ianaindex/ianaindex_test.go +192 -0
- data/ext/vendor/golang.org/x/text/encoding/ianaindex/tables.go +2348 -0
- data/ext/vendor/golang.org/x/text/encoding/internal/enctest/enctest.go +180 -0
- data/ext/vendor/golang.org/x/text/encoding/internal/identifier/gen.go +137 -0
- data/ext/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go +81 -0
- data/ext/vendor/golang.org/x/text/encoding/internal/identifier/mib.go +1621 -0
- data/ext/vendor/golang.org/x/text/encoding/internal/internal.go +75 -0
- data/ext/vendor/golang.org/x/text/encoding/japanese/all.go +12 -0
- data/ext/vendor/golang.org/x/text/encoding/japanese/all_test.go +248 -0
- data/ext/vendor/golang.org/x/text/encoding/japanese/eucjp.go +225 -0
- data/ext/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go +299 -0
- data/ext/vendor/golang.org/x/text/encoding/japanese/maketables.go +161 -0
- data/ext/vendor/golang.org/x/text/encoding/japanese/shiftjis.go +189 -0
- data/ext/vendor/golang.org/x/text/encoding/japanese/tables.go +26971 -0
- data/ext/vendor/golang.org/x/text/encoding/korean/all_test.go +94 -0
- data/ext/vendor/golang.org/x/text/encoding/korean/euckr.go +177 -0
- data/ext/vendor/golang.org/x/text/encoding/korean/maketables.go +143 -0
- data/ext/vendor/golang.org/x/text/encoding/korean/tables.go +34152 -0
- data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/all.go +12 -0
- data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/all_test.go +143 -0
- data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go +269 -0
- data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go +245 -0
- data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/maketables.go +161 -0
- data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/tables.go +43999 -0
- data/ext/vendor/golang.org/x/text/encoding/testdata/candide-gb18030.txt +510 -0
- data/ext/vendor/golang.org/x/text/encoding/testdata/candide-utf-16le.txt +0 -0
- data/ext/vendor/golang.org/x/text/encoding/testdata/candide-utf-32be.txt +0 -0
- data/ext/vendor/golang.org/x/text/encoding/testdata/candide-utf-8.txt +510 -0
- data/ext/vendor/golang.org/x/text/encoding/testdata/candide-windows-1252.txt +510 -0
- data/ext/vendor/golang.org/x/text/encoding/testdata/rashomon-euc-jp.txt +178 -0
- data/ext/vendor/golang.org/x/text/encoding/testdata/rashomon-iso-2022-jp.txt +178 -0
- data/ext/vendor/golang.org/x/text/encoding/testdata/rashomon-shift-jis.txt +178 -0
- data/ext/vendor/golang.org/x/text/encoding/testdata/rashomon-utf-8.txt +178 -0
- data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-hz-gb2312.txt +107 -0
- data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-utf-8.txt +107 -0
- data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-gbk.txt +107 -0
- data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-utf-8.txt +107 -0
- data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-big5.txt +106 -0
- data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-utf-8.txt +106 -0
- data/ext/vendor/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-euc-kr.txt +175 -0
- data/ext/vendor/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-utf-8.txt +175 -0
- data/ext/vendor/golang.org/x/text/encoding/traditionalchinese/all_test.go +114 -0
- data/ext/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go +199 -0
- data/ext/vendor/golang.org/x/text/encoding/traditionalchinese/maketables.go +140 -0
- data/ext/vendor/golang.org/x/text/encoding/traditionalchinese/tables.go +37142 -0
- data/ext/vendor/golang.org/x/text/encoding/unicode/override.go +82 -0
- data/ext/vendor/golang.org/x/text/encoding/unicode/unicode.go +434 -0
- data/ext/vendor/golang.org/x/text/encoding/unicode/unicode_test.go +499 -0
- data/ext/vendor/golang.org/x/text/encoding/unicode/utf32/utf32.go +296 -0
- data/ext/vendor/golang.org/x/text/encoding/unicode/utf32/utf32_test.go +248 -0
- data/ext/vendor/golang.org/x/text/feature/plural/common.go +70 -0
- data/ext/vendor/golang.org/x/text/feature/plural/data_test.go +190 -0
- data/ext/vendor/golang.org/x/text/feature/plural/example_test.go +46 -0
- data/ext/vendor/golang.org/x/text/feature/plural/gen.go +513 -0
- data/ext/vendor/golang.org/x/text/feature/plural/gen_common.go +74 -0
- data/ext/vendor/golang.org/x/text/feature/plural/message.go +244 -0
- data/ext/vendor/golang.org/x/text/feature/plural/message_test.go +197 -0
- data/ext/vendor/golang.org/x/text/feature/plural/plural.go +258 -0
- data/ext/vendor/golang.org/x/text/feature/plural/plural_test.go +216 -0
- data/ext/vendor/golang.org/x/text/feature/plural/tables.go +540 -0
- data/ext/vendor/golang.org/x/text/gen.go +318 -0
- data/ext/vendor/golang.org/x/text/internal/catmsg/catmsg.go +366 -0
- data/ext/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go +316 -0
- data/ext/vendor/golang.org/x/text/internal/catmsg/codec.go +407 -0
- data/ext/vendor/golang.org/x/text/internal/catmsg/varint.go +62 -0
- data/ext/vendor/golang.org/x/text/internal/catmsg/varint_test.go +123 -0
- data/ext/vendor/golang.org/x/text/internal/colltab/collate_test.go +121 -0
- data/ext/vendor/golang.org/x/text/internal/colltab/collelem.go +371 -0
- data/ext/vendor/golang.org/x/text/internal/colltab/collelem_test.go +183 -0
- data/ext/vendor/golang.org/x/text/internal/colltab/colltab.go +105 -0
- data/ext/vendor/golang.org/x/text/internal/colltab/colltab_test.go +64 -0
- data/ext/vendor/golang.org/x/text/internal/colltab/contract.go +145 -0
- data/ext/vendor/golang.org/x/text/internal/colltab/contract_test.go +131 -0
- data/ext/vendor/golang.org/x/text/internal/colltab/iter.go +178 -0
- data/ext/vendor/golang.org/x/text/internal/colltab/iter_test.go +63 -0
- data/ext/vendor/golang.org/x/text/internal/colltab/numeric.go +236 -0
- data/ext/vendor/golang.org/x/text/internal/colltab/numeric_test.go +159 -0
- data/ext/vendor/golang.org/x/text/internal/colltab/table.go +275 -0
- data/ext/vendor/golang.org/x/text/internal/colltab/trie.go +159 -0
- data/ext/vendor/golang.org/x/text/internal/colltab/trie_test.go +106 -0
- data/ext/vendor/golang.org/x/text/internal/colltab/weighter.go +31 -0
- data/ext/vendor/golang.org/x/text/internal/colltab/weighter_test.go +42 -0
- data/ext/vendor/golang.org/x/text/internal/export/README +4 -0
- data/ext/vendor/golang.org/x/text/internal/export/idna/common_test.go +55 -0
- data/ext/vendor/golang.org/x/text/internal/export/idna/example_test.go +68 -0
- data/ext/vendor/golang.org/x/text/internal/export/idna/gen.go +276 -0
- data/ext/vendor/golang.org/x/text/internal/export/idna/gen_common.go +59 -0
- data/ext/vendor/golang.org/x/text/internal/export/idna/gen_test.go +91 -0
- data/ext/vendor/golang.org/x/text/internal/export/idna/gen_trieval.go +123 -0
- data/ext/vendor/golang.org/x/text/internal/export/idna/idna.go +717 -0
- data/ext/vendor/golang.org/x/text/internal/export/idna/idna_test.go +308 -0
- data/ext/vendor/golang.org/x/text/internal/export/idna/punycode.go +201 -0
- data/ext/vendor/golang.org/x/text/internal/export/idna/punycode_test.go +198 -0
- data/ext/vendor/golang.org/x/text/internal/export/idna/tables.go +4557 -0
- data/ext/vendor/golang.org/x/text/internal/export/idna/trie.go +70 -0
- data/ext/vendor/golang.org/x/text/internal/export/idna/trieval.go +119 -0
- data/ext/vendor/golang.org/x/text/internal/format/format.go +41 -0
- data/ext/vendor/golang.org/x/text/internal/gen.go +52 -0
- data/ext/vendor/golang.org/x/text/internal/gen/code.go +351 -0
- data/ext/vendor/golang.org/x/text/internal/gen/gen.go +281 -0
- data/ext/vendor/golang.org/x/text/internal/gen_test.go +38 -0
- data/ext/vendor/golang.org/x/text/internal/internal.go +51 -0
- data/ext/vendor/golang.org/x/text/internal/internal_test.go +38 -0
- data/ext/vendor/golang.org/x/text/internal/match.go +67 -0
- data/ext/vendor/golang.org/x/text/internal/match_test.go +56 -0
- data/ext/vendor/golang.org/x/text/internal/number/common.go +40 -0
- data/ext/vendor/golang.org/x/text/internal/number/decimal.go +498 -0
- data/ext/vendor/golang.org/x/text/internal/number/decimal_test.go +329 -0
- data/ext/vendor/golang.org/x/text/internal/number/format.go +540 -0
- data/ext/vendor/golang.org/x/text/internal/number/format_test.go +522 -0
- data/ext/vendor/golang.org/x/text/internal/number/gen.go +458 -0
- data/ext/vendor/golang.org/x/text/internal/number/gen_common.go +44 -0
- data/ext/vendor/golang.org/x/text/internal/number/number.go +154 -0
- data/ext/vendor/golang.org/x/text/internal/number/number_test.go +100 -0
- data/ext/vendor/golang.org/x/text/internal/number/pattern.go +485 -0
- data/ext/vendor/golang.org/x/text/internal/number/pattern_test.go +438 -0
- data/ext/vendor/golang.org/x/text/internal/number/roundingmode_string.go +16 -0
- data/ext/vendor/golang.org/x/text/internal/number/tables.go +1154 -0
- data/ext/vendor/golang.org/x/text/internal/number/tables_test.go +125 -0
- data/ext/vendor/golang.org/x/text/internal/stringset/set.go +86 -0
- data/ext/vendor/golang.org/x/text/internal/stringset/set_test.go +53 -0
- data/ext/vendor/golang.org/x/text/internal/tables.go +117 -0
- data/ext/vendor/golang.org/x/text/internal/tag/tag.go +100 -0
- data/ext/vendor/golang.org/x/text/internal/tag/tag_test.go +67 -0
- data/ext/vendor/golang.org/x/text/internal/testtext/codesize.go +53 -0
- data/ext/vendor/golang.org/x/text/internal/testtext/flag.go +22 -0
- data/ext/vendor/golang.org/x/text/internal/testtext/gc.go +14 -0
- data/ext/vendor/golang.org/x/text/internal/testtext/gccgo.go +11 -0
- data/ext/vendor/golang.org/x/text/internal/testtext/go1_6.go +23 -0
- data/ext/vendor/golang.org/x/text/internal/testtext/go1_7.go +17 -0
- data/ext/vendor/golang.org/x/text/internal/testtext/text.go +105 -0
- data/ext/vendor/golang.org/x/text/internal/triegen/compact.go +58 -0
- data/ext/vendor/golang.org/x/text/internal/triegen/data_test.go +875 -0
- data/ext/vendor/golang.org/x/text/internal/triegen/example_compact_test.go +71 -0
- data/ext/vendor/golang.org/x/text/internal/triegen/example_test.go +148 -0
- data/ext/vendor/golang.org/x/text/internal/triegen/gen_test.go +68 -0
- data/ext/vendor/golang.org/x/text/internal/triegen/print.go +251 -0
- data/ext/vendor/golang.org/x/text/internal/triegen/triegen.go +494 -0
- data/ext/vendor/golang.org/x/text/internal/ucd/example_test.go +81 -0
- data/ext/vendor/golang.org/x/text/internal/ucd/ucd.go +371 -0
- data/ext/vendor/golang.org/x/text/internal/ucd/ucd_test.go +105 -0
- data/ext/vendor/golang.org/x/text/internal/utf8internal/utf8internal.go +87 -0
- data/ext/vendor/golang.org/x/text/language/Makefile +16 -0
- data/ext/vendor/golang.org/x/text/language/common.go +16 -0
- data/ext/vendor/golang.org/x/text/language/coverage.go +197 -0
- data/ext/vendor/golang.org/x/text/language/coverage_test.go +154 -0
- data/ext/vendor/golang.org/x/text/language/display/dict.go +92 -0
- data/ext/vendor/golang.org/x/text/language/display/dict_test.go +39 -0
- data/ext/vendor/golang.org/x/text/language/display/display.go +420 -0
- data/ext/vendor/golang.org/x/text/language/display/display_test.go +705 -0
- data/ext/vendor/golang.org/x/text/language/display/examples_test.go +116 -0
- data/ext/vendor/golang.org/x/text/language/display/lookup.go +251 -0
- data/ext/vendor/golang.org/x/text/language/display/maketables.go +602 -0
- data/ext/vendor/golang.org/x/text/language/display/tables.go +50344 -0
- data/ext/vendor/golang.org/x/text/language/doc.go +102 -0
- data/ext/vendor/golang.org/x/text/language/examples_test.go +413 -0
- data/ext/vendor/golang.org/x/text/language/gen.go +1706 -0
- data/ext/vendor/golang.org/x/text/language/gen_common.go +20 -0
- data/ext/vendor/golang.org/x/text/language/gen_index.go +162 -0
- data/ext/vendor/golang.org/x/text/language/go1_1.go +38 -0
- data/ext/vendor/golang.org/x/text/language/go1_2.go +11 -0
- data/ext/vendor/golang.org/x/text/language/httpexample_test.go +48 -0
- data/ext/vendor/golang.org/x/text/language/index.go +769 -0
- data/ext/vendor/golang.org/x/text/language/language.go +887 -0
- data/ext/vendor/golang.org/x/text/language/language_test.go +878 -0
- data/ext/vendor/golang.org/x/text/language/lookup.go +396 -0
- data/ext/vendor/golang.org/x/text/language/lookup_test.go +457 -0
- data/ext/vendor/golang.org/x/text/language/match.go +933 -0
- data/ext/vendor/golang.org/x/text/language/match_test.go +505 -0
- data/ext/vendor/golang.org/x/text/language/parse.go +859 -0
- data/ext/vendor/golang.org/x/text/language/parse_test.go +517 -0
- data/ext/vendor/golang.org/x/text/language/tables.go +3675 -0
- data/ext/vendor/golang.org/x/text/language/tags.go +143 -0
- data/ext/vendor/golang.org/x/text/language/testdata/CLDRLocaleMatcherTest.txt +389 -0
- data/ext/vendor/golang.org/x/text/language/testdata/GoLocaleMatcherTest.txt +226 -0
- data/ext/vendor/golang.org/x/text/message/catalog.go +28 -0
- data/ext/vendor/golang.org/x/text/message/catalog/catalog.go +292 -0
- data/ext/vendor/golang.org/x/text/message/catalog/catalog_test.go +194 -0
- data/ext/vendor/golang.org/x/text/message/catalog/dict.go +90 -0
- data/ext/vendor/golang.org/x/text/message/doc.go +100 -0
- data/ext/vendor/golang.org/x/text/message/examples_test.go +42 -0
- data/ext/vendor/golang.org/x/text/message/fmt_test.go +1889 -0
- data/ext/vendor/golang.org/x/text/message/format.go +532 -0
- data/ext/vendor/golang.org/x/text/message/message.go +169 -0
- data/ext/vendor/golang.org/x/text/message/message_test.go +181 -0
- data/ext/vendor/golang.org/x/text/message/print.go +1194 -0
- data/ext/vendor/golang.org/x/text/number/doc.go +28 -0
- data/ext/vendor/golang.org/x/text/number/examples_test.go +28 -0
- data/ext/vendor/golang.org/x/text/number/format.go +122 -0
- data/ext/vendor/golang.org/x/text/number/format_test.go +107 -0
- data/ext/vendor/golang.org/x/text/number/number.go +77 -0
- data/ext/vendor/golang.org/x/text/number/number_test.go +190 -0
- data/ext/vendor/golang.org/x/text/number/option.go +177 -0
- data/ext/vendor/golang.org/x/text/runes/cond.go +187 -0
- data/ext/vendor/golang.org/x/text/runes/cond_test.go +282 -0
- data/ext/vendor/golang.org/x/text/runes/example_test.go +60 -0
- data/ext/vendor/golang.org/x/text/runes/runes.go +355 -0
- data/ext/vendor/golang.org/x/text/runes/runes_test.go +664 -0
- data/ext/vendor/golang.org/x/text/search/index.go +35 -0
- data/ext/vendor/golang.org/x/text/search/pattern.go +155 -0
- data/ext/vendor/golang.org/x/text/search/pattern_test.go +357 -0
- data/ext/vendor/golang.org/x/text/search/search.go +237 -0
- data/ext/vendor/golang.org/x/text/search/tables.go +12448 -0
- data/ext/vendor/golang.org/x/text/secure/bidirule/bench_test.go +54 -0
- data/ext/vendor/golang.org/x/text/secure/bidirule/bidirule.go +340 -0
- data/ext/vendor/golang.org/x/text/secure/bidirule/bidirule_test.go +851 -0
- data/ext/vendor/golang.org/x/text/secure/doc.go +6 -0
- data/ext/vendor/golang.org/x/text/secure/precis/benchmark_test.go +82 -0
- data/ext/vendor/golang.org/x/text/secure/precis/class.go +36 -0
- data/ext/vendor/golang.org/x/text/secure/precis/class_test.go +50 -0
- data/ext/vendor/golang.org/x/text/secure/precis/context.go +139 -0
- data/ext/vendor/golang.org/x/text/secure/precis/doc.go +14 -0
- data/ext/vendor/golang.org/x/text/secure/precis/enforce_test.go +396 -0
- data/ext/vendor/golang.org/x/text/secure/precis/gen.go +310 -0
- data/ext/vendor/golang.org/x/text/secure/precis/gen_trieval.go +68 -0
- data/ext/vendor/golang.org/x/text/secure/precis/nickname.go +72 -0
- data/ext/vendor/golang.org/x/text/secure/precis/options.go +157 -0
- data/ext/vendor/golang.org/x/text/secure/precis/profile.go +402 -0
- data/ext/vendor/golang.org/x/text/secure/precis/profile_test.go +149 -0
- data/ext/vendor/golang.org/x/text/secure/precis/profiles.go +78 -0
- data/ext/vendor/golang.org/x/text/secure/precis/tables.go +3887 -0
- data/ext/vendor/golang.org/x/text/secure/precis/tables_test.go +69 -0
- data/ext/vendor/golang.org/x/text/secure/precis/transformer.go +32 -0
- data/ext/vendor/golang.org/x/text/secure/precis/trieval.go +64 -0
- data/ext/vendor/golang.org/x/text/transform/examples_test.go +37 -0
- data/ext/vendor/golang.org/x/text/transform/transform.go +705 -0
- data/ext/vendor/golang.org/x/text/transform/transform_test.go +1317 -0
- data/ext/vendor/golang.org/x/text/unicode/bidi/bidi.go +198 -0
- data/ext/vendor/golang.org/x/text/unicode/bidi/bracket.go +335 -0
- data/ext/vendor/golang.org/x/text/unicode/bidi/core.go +1058 -0
- data/ext/vendor/golang.org/x/text/unicode/bidi/core_test.go +224 -0
- data/ext/vendor/golang.org/x/text/unicode/bidi/gen.go +133 -0
- data/ext/vendor/golang.org/x/text/unicode/bidi/gen_ranges.go +57 -0
- data/ext/vendor/golang.org/x/text/unicode/bidi/gen_trieval.go +64 -0
- data/ext/vendor/golang.org/x/text/unicode/bidi/prop.go +206 -0
- data/ext/vendor/golang.org/x/text/unicode/bidi/ranges_test.go +53 -0
- data/ext/vendor/golang.org/x/text/unicode/bidi/tables.go +1813 -0
- data/ext/vendor/golang.org/x/text/unicode/bidi/tables_test.go +82 -0
- data/ext/vendor/golang.org/x/text/unicode/bidi/trieval.go +60 -0
- data/ext/vendor/golang.org/x/text/unicode/cldr/base.go +100 -0
- data/ext/vendor/golang.org/x/text/unicode/cldr/cldr.go +130 -0
- data/ext/vendor/golang.org/x/text/unicode/cldr/cldr_test.go +27 -0
- data/ext/vendor/golang.org/x/text/unicode/cldr/collate.go +359 -0
- data/ext/vendor/golang.org/x/text/unicode/cldr/collate_test.go +275 -0
- data/ext/vendor/golang.org/x/text/unicode/cldr/data_test.go +186 -0
- data/ext/vendor/golang.org/x/text/unicode/cldr/decode.go +171 -0
- data/ext/vendor/golang.org/x/text/unicode/cldr/examples_test.go +21 -0
- data/ext/vendor/golang.org/x/text/unicode/cldr/makexml.go +400 -0
- data/ext/vendor/golang.org/x/text/unicode/cldr/resolve.go +602 -0
- data/ext/vendor/golang.org/x/text/unicode/cldr/resolve_test.go +368 -0
- data/ext/vendor/golang.org/x/text/unicode/cldr/slice.go +144 -0
- data/ext/vendor/golang.org/x/text/unicode/cldr/slice_test.go +175 -0
- data/ext/vendor/golang.org/x/text/unicode/cldr/xml.go +1487 -0
- data/ext/vendor/golang.org/x/text/unicode/doc.go +8 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/composition.go +508 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/composition_test.go +130 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/example_iter_test.go +82 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/example_test.go +27 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/forminfo.go +259 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/forminfo_test.go +54 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/input.go +109 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/iter.go +457 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/iter_test.go +98 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/maketables.go +976 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/norm_test.go +14 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/normalize.go +609 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/normalize_test.go +1287 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/readwriter.go +125 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/readwriter_test.go +56 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/tables.go +7651 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/transform.go +88 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/transform_test.go +101 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/trie.go +54 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/triegen.go +117 -0
- data/ext/vendor/golang.org/x/text/unicode/norm/ucd_test.go +275 -0
- data/ext/vendor/golang.org/x/text/unicode/rangetable/gen.go +115 -0
- data/ext/vendor/golang.org/x/text/unicode/rangetable/merge.go +260 -0
- data/ext/vendor/golang.org/x/text/unicode/rangetable/merge_test.go +184 -0
- data/ext/vendor/golang.org/x/text/unicode/rangetable/rangetable.go +70 -0
- data/ext/vendor/golang.org/x/text/unicode/rangetable/rangetable_test.go +55 -0
- data/ext/vendor/golang.org/x/text/unicode/rangetable/tables.go +6376 -0
- data/ext/vendor/golang.org/x/text/unicode/runenames/bits.go +59 -0
- data/ext/vendor/golang.org/x/text/unicode/runenames/example_test.go +118 -0
- data/ext/vendor/golang.org/x/text/unicode/runenames/gen.go +195 -0
- data/ext/vendor/golang.org/x/text/unicode/runenames/gen_bits.go +63 -0
- data/ext/vendor/golang.org/x/text/unicode/runenames/runenames.go +48 -0
- data/ext/vendor/golang.org/x/text/unicode/runenames/runenames_test.go +46 -0
- data/ext/vendor/golang.org/x/text/unicode/runenames/tables.go +15514 -0
- data/ext/vendor/golang.org/x/text/width/common_test.go +92 -0
- data/ext/vendor/golang.org/x/text/width/example_test.go +52 -0
- data/ext/vendor/golang.org/x/text/width/gen.go +115 -0
- data/ext/vendor/golang.org/x/text/width/gen_common.go +96 -0
- data/ext/vendor/golang.org/x/text/width/gen_trieval.go +34 -0
- data/ext/vendor/golang.org/x/text/width/kind_string.go +16 -0
- data/ext/vendor/golang.org/x/text/width/runes_test.go +461 -0
- data/ext/vendor/golang.org/x/text/width/tables.go +1316 -0
- data/ext/vendor/golang.org/x/text/width/tables_test.go +59 -0
- data/ext/vendor/golang.org/x/text/width/transform.go +239 -0
- data/ext/vendor/golang.org/x/text/width/transform_test.go +701 -0
- data/ext/vendor/golang.org/x/text/width/trieval.go +30 -0
- data/ext/vendor/golang.org/x/text/width/width.go +206 -0
- data/lib/ires/version.rb +1 -1
- data/shared/darwin/ires.so +0 -0
- data/shared/linux/ires.so +0 -0
- metadata +1011 -23
- data/ext/operate/image.go +0 -176
- data/ext/util/uri/uri.go +0 -105
- data/ext/vendor/github.com/satori/go.uuid/README.md +0 -65
- data/ext/vendor/github.com/satori/go.uuid/benchmarks_test.go +0 -121
- data/ext/vendor/github.com/satori/go.uuid/uuid.go +0 -488
- data/ext/vendor/github.com/satori/go.uuid/uuid_test.go +0 -633
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Copyright 2014 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
package icmp
|
|
6
|
+
|
|
7
|
+
import "encoding/binary"
|
|
8
|
+
|
|
9
|
+
// A PacketTooBig represents an ICMP packet too big message body.
|
|
10
|
+
type PacketTooBig struct {
|
|
11
|
+
MTU int // maximum transmission unit of the nexthop link
|
|
12
|
+
Data []byte // data, known as original datagram field
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// Len implements the Len method of MessageBody interface.
|
|
16
|
+
func (p *PacketTooBig) Len(proto int) int {
|
|
17
|
+
if p == nil {
|
|
18
|
+
return 0
|
|
19
|
+
}
|
|
20
|
+
return 4 + len(p.Data)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// Marshal implements the Marshal method of MessageBody interface.
|
|
24
|
+
func (p *PacketTooBig) Marshal(proto int) ([]byte, error) {
|
|
25
|
+
b := make([]byte, 4+len(p.Data))
|
|
26
|
+
binary.BigEndian.PutUint32(b[:4], uint32(p.MTU))
|
|
27
|
+
copy(b[4:], p.Data)
|
|
28
|
+
return b, nil
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// parsePacketTooBig parses b as an ICMP packet too big message body.
|
|
32
|
+
func parsePacketTooBig(proto int, b []byte) (MessageBody, error) {
|
|
33
|
+
bodyLen := len(b)
|
|
34
|
+
if bodyLen < 4 {
|
|
35
|
+
return nil, errMessageTooShort
|
|
36
|
+
}
|
|
37
|
+
p := &PacketTooBig{MTU: int(binary.BigEndian.Uint32(b[:4]))}
|
|
38
|
+
if bodyLen > 4 {
|
|
39
|
+
p.Data = make([]byte, bodyLen-4)
|
|
40
|
+
copy(p.Data, b[4:])
|
|
41
|
+
}
|
|
42
|
+
return p, nil
|
|
43
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Copyright 2014 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
package icmp
|
|
6
|
+
|
|
7
|
+
import (
|
|
8
|
+
"encoding/binary"
|
|
9
|
+
"golang.org/x/net/internal/iana"
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
// A ParamProb represents an ICMP parameter problem message body.
|
|
13
|
+
type ParamProb struct {
|
|
14
|
+
Pointer uintptr // offset within the data where the error was detected
|
|
15
|
+
Data []byte // data, known as original datagram field
|
|
16
|
+
Extensions []Extension // extensions
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Len implements the Len method of MessageBody interface.
|
|
20
|
+
func (p *ParamProb) Len(proto int) int {
|
|
21
|
+
if p == nil {
|
|
22
|
+
return 0
|
|
23
|
+
}
|
|
24
|
+
l, _ := multipartMessageBodyDataLen(proto, p.Data, p.Extensions)
|
|
25
|
+
return 4 + l
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Marshal implements the Marshal method of MessageBody interface.
|
|
29
|
+
func (p *ParamProb) Marshal(proto int) ([]byte, error) {
|
|
30
|
+
if proto == iana.ProtocolIPv6ICMP {
|
|
31
|
+
b := make([]byte, p.Len(proto))
|
|
32
|
+
binary.BigEndian.PutUint32(b[:4], uint32(p.Pointer))
|
|
33
|
+
copy(b[4:], p.Data)
|
|
34
|
+
return b, nil
|
|
35
|
+
}
|
|
36
|
+
b, err := marshalMultipartMessageBody(proto, p.Data, p.Extensions)
|
|
37
|
+
if err != nil {
|
|
38
|
+
return nil, err
|
|
39
|
+
}
|
|
40
|
+
b[0] = byte(p.Pointer)
|
|
41
|
+
return b, nil
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// parseParamProb parses b as an ICMP parameter problem message body.
|
|
45
|
+
func parseParamProb(proto int, b []byte) (MessageBody, error) {
|
|
46
|
+
if len(b) < 4 {
|
|
47
|
+
return nil, errMessageTooShort
|
|
48
|
+
}
|
|
49
|
+
p := &ParamProb{}
|
|
50
|
+
if proto == iana.ProtocolIPv6ICMP {
|
|
51
|
+
p.Pointer = uintptr(binary.BigEndian.Uint32(b[:4]))
|
|
52
|
+
p.Data = make([]byte, len(b)-4)
|
|
53
|
+
copy(p.Data, b[4:])
|
|
54
|
+
return p, nil
|
|
55
|
+
}
|
|
56
|
+
p.Pointer = uintptr(b[0])
|
|
57
|
+
var err error
|
|
58
|
+
p.Data, p.Extensions, err = parseMultipartMessageBody(proto, b)
|
|
59
|
+
if err != nil {
|
|
60
|
+
return nil, err
|
|
61
|
+
}
|
|
62
|
+
return p, nil
|
|
63
|
+
}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
// Copyright 2014 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
package icmp_test
|
|
6
|
+
|
|
7
|
+
import (
|
|
8
|
+
"errors"
|
|
9
|
+
"fmt"
|
|
10
|
+
"net"
|
|
11
|
+
"os"
|
|
12
|
+
"runtime"
|
|
13
|
+
"sync"
|
|
14
|
+
"testing"
|
|
15
|
+
"time"
|
|
16
|
+
|
|
17
|
+
"golang.org/x/net/icmp"
|
|
18
|
+
"golang.org/x/net/internal/iana"
|
|
19
|
+
"golang.org/x/net/internal/nettest"
|
|
20
|
+
"golang.org/x/net/ipv4"
|
|
21
|
+
"golang.org/x/net/ipv6"
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
func googleAddr(c *icmp.PacketConn, protocol int) (net.Addr, error) {
|
|
25
|
+
const host = "www.google.com"
|
|
26
|
+
ips, err := net.LookupIP(host)
|
|
27
|
+
if err != nil {
|
|
28
|
+
return nil, err
|
|
29
|
+
}
|
|
30
|
+
netaddr := func(ip net.IP) (net.Addr, error) {
|
|
31
|
+
switch c.LocalAddr().(type) {
|
|
32
|
+
case *net.UDPAddr:
|
|
33
|
+
return &net.UDPAddr{IP: ip}, nil
|
|
34
|
+
case *net.IPAddr:
|
|
35
|
+
return &net.IPAddr{IP: ip}, nil
|
|
36
|
+
default:
|
|
37
|
+
return nil, errors.New("neither UDPAddr nor IPAddr")
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
for _, ip := range ips {
|
|
41
|
+
switch protocol {
|
|
42
|
+
case iana.ProtocolICMP:
|
|
43
|
+
if ip.To4() != nil {
|
|
44
|
+
return netaddr(ip)
|
|
45
|
+
}
|
|
46
|
+
case iana.ProtocolIPv6ICMP:
|
|
47
|
+
if ip.To16() != nil && ip.To4() == nil {
|
|
48
|
+
return netaddr(ip)
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return nil, errors.New("no A or AAAA record")
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
type pingTest struct {
|
|
56
|
+
network, address string
|
|
57
|
+
protocol int
|
|
58
|
+
mtype icmp.Type
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
var nonPrivilegedPingTests = []pingTest{
|
|
62
|
+
{"udp4", "0.0.0.0", iana.ProtocolICMP, ipv4.ICMPTypeEcho},
|
|
63
|
+
|
|
64
|
+
{"udp6", "::", iana.ProtocolIPv6ICMP, ipv6.ICMPTypeEchoRequest},
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
func TestNonPrivilegedPing(t *testing.T) {
|
|
68
|
+
if testing.Short() {
|
|
69
|
+
t.Skip("avoid external network")
|
|
70
|
+
}
|
|
71
|
+
switch runtime.GOOS {
|
|
72
|
+
case "darwin":
|
|
73
|
+
case "linux":
|
|
74
|
+
t.Log("you may need to adjust the net.ipv4.ping_group_range kernel state")
|
|
75
|
+
default:
|
|
76
|
+
t.Skipf("not supported on %s", runtime.GOOS)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
for i, tt := range nonPrivilegedPingTests {
|
|
80
|
+
if err := doPing(tt, i); err != nil {
|
|
81
|
+
t.Error(err)
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
var privilegedPingTests = []pingTest{
|
|
87
|
+
{"ip4:icmp", "0.0.0.0", iana.ProtocolICMP, ipv4.ICMPTypeEcho},
|
|
88
|
+
|
|
89
|
+
{"ip6:ipv6-icmp", "::", iana.ProtocolIPv6ICMP, ipv6.ICMPTypeEchoRequest},
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
func TestPrivilegedPing(t *testing.T) {
|
|
93
|
+
if testing.Short() {
|
|
94
|
+
t.Skip("avoid external network")
|
|
95
|
+
}
|
|
96
|
+
if m, ok := nettest.SupportsRawIPSocket(); !ok {
|
|
97
|
+
t.Skip(m)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
for i, tt := range privilegedPingTests {
|
|
101
|
+
if err := doPing(tt, i); err != nil {
|
|
102
|
+
t.Error(err)
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
func doPing(tt pingTest, seq int) error {
|
|
108
|
+
c, err := icmp.ListenPacket(tt.network, tt.address)
|
|
109
|
+
if err != nil {
|
|
110
|
+
return err
|
|
111
|
+
}
|
|
112
|
+
defer c.Close()
|
|
113
|
+
|
|
114
|
+
dst, err := googleAddr(c, tt.protocol)
|
|
115
|
+
if err != nil {
|
|
116
|
+
return err
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if tt.network != "udp6" && tt.protocol == iana.ProtocolIPv6ICMP {
|
|
120
|
+
var f ipv6.ICMPFilter
|
|
121
|
+
f.SetAll(true)
|
|
122
|
+
f.Accept(ipv6.ICMPTypeDestinationUnreachable)
|
|
123
|
+
f.Accept(ipv6.ICMPTypePacketTooBig)
|
|
124
|
+
f.Accept(ipv6.ICMPTypeTimeExceeded)
|
|
125
|
+
f.Accept(ipv6.ICMPTypeParameterProblem)
|
|
126
|
+
f.Accept(ipv6.ICMPTypeEchoReply)
|
|
127
|
+
if err := c.IPv6PacketConn().SetICMPFilter(&f); err != nil {
|
|
128
|
+
return err
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
wm := icmp.Message{
|
|
133
|
+
Type: tt.mtype, Code: 0,
|
|
134
|
+
Body: &icmp.Echo{
|
|
135
|
+
ID: os.Getpid() & 0xffff, Seq: 1 << uint(seq),
|
|
136
|
+
Data: []byte("HELLO-R-U-THERE"),
|
|
137
|
+
},
|
|
138
|
+
}
|
|
139
|
+
wb, err := wm.Marshal(nil)
|
|
140
|
+
if err != nil {
|
|
141
|
+
return err
|
|
142
|
+
}
|
|
143
|
+
if n, err := c.WriteTo(wb, dst); err != nil {
|
|
144
|
+
return err
|
|
145
|
+
} else if n != len(wb) {
|
|
146
|
+
return fmt.Errorf("got %v; want %v", n, len(wb))
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
rb := make([]byte, 1500)
|
|
150
|
+
if err := c.SetReadDeadline(time.Now().Add(3 * time.Second)); err != nil {
|
|
151
|
+
return err
|
|
152
|
+
}
|
|
153
|
+
n, peer, err := c.ReadFrom(rb)
|
|
154
|
+
if err != nil {
|
|
155
|
+
return err
|
|
156
|
+
}
|
|
157
|
+
rm, err := icmp.ParseMessage(tt.protocol, rb[:n])
|
|
158
|
+
if err != nil {
|
|
159
|
+
return err
|
|
160
|
+
}
|
|
161
|
+
switch rm.Type {
|
|
162
|
+
case ipv4.ICMPTypeEchoReply, ipv6.ICMPTypeEchoReply:
|
|
163
|
+
return nil
|
|
164
|
+
default:
|
|
165
|
+
return fmt.Errorf("got %+v from %v; want echo reply", rm, peer)
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
func TestConcurrentNonPrivilegedListenPacket(t *testing.T) {
|
|
170
|
+
if testing.Short() {
|
|
171
|
+
t.Skip("avoid external network")
|
|
172
|
+
}
|
|
173
|
+
switch runtime.GOOS {
|
|
174
|
+
case "darwin":
|
|
175
|
+
case "linux":
|
|
176
|
+
t.Log("you may need to adjust the net.ipv4.ping_group_range kernel state")
|
|
177
|
+
default:
|
|
178
|
+
t.Skipf("not supported on %s", runtime.GOOS)
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
network, address := "udp4", "127.0.0.1"
|
|
182
|
+
if !nettest.SupportsIPv4() {
|
|
183
|
+
network, address = "udp6", "::1"
|
|
184
|
+
}
|
|
185
|
+
const N = 1000
|
|
186
|
+
var wg sync.WaitGroup
|
|
187
|
+
wg.Add(N)
|
|
188
|
+
for i := 0; i < N; i++ {
|
|
189
|
+
go func() {
|
|
190
|
+
defer wg.Done()
|
|
191
|
+
c, err := icmp.ListenPacket(network, address)
|
|
192
|
+
if err != nil {
|
|
193
|
+
t.Error(err)
|
|
194
|
+
return
|
|
195
|
+
}
|
|
196
|
+
c.Close()
|
|
197
|
+
}()
|
|
198
|
+
}
|
|
199
|
+
wg.Wait()
|
|
200
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Copyright 2014 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
package icmp
|
|
6
|
+
|
|
7
|
+
import "syscall"
|
|
8
|
+
|
|
9
|
+
func init() {
|
|
10
|
+
freebsdVersion, _ = syscall.SysctlUint32("kern.osreldate")
|
|
11
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Copyright 2014 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
package icmp
|
|
6
|
+
|
|
7
|
+
// A TimeExceeded represents an ICMP time exceeded message body.
|
|
8
|
+
type TimeExceeded struct {
|
|
9
|
+
Data []byte // data, known as original datagram field
|
|
10
|
+
Extensions []Extension // extensions
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Len implements the Len method of MessageBody interface.
|
|
14
|
+
func (p *TimeExceeded) Len(proto int) int {
|
|
15
|
+
if p == nil {
|
|
16
|
+
return 0
|
|
17
|
+
}
|
|
18
|
+
l, _ := multipartMessageBodyDataLen(proto, p.Data, p.Extensions)
|
|
19
|
+
return 4 + l
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Marshal implements the Marshal method of MessageBody interface.
|
|
23
|
+
func (p *TimeExceeded) Marshal(proto int) ([]byte, error) {
|
|
24
|
+
return marshalMultipartMessageBody(proto, p.Data, p.Extensions)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// parseTimeExceeded parses b as an ICMP time exceeded message body.
|
|
28
|
+
func parseTimeExceeded(proto int, b []byte) (MessageBody, error) {
|
|
29
|
+
if len(b) < 4 {
|
|
30
|
+
return nil, errMessageTooShort
|
|
31
|
+
}
|
|
32
|
+
p := &TimeExceeded{}
|
|
33
|
+
var err error
|
|
34
|
+
p.Data, p.Extensions, err = parseMultipartMessageBody(proto, b)
|
|
35
|
+
if err != nil {
|
|
36
|
+
return nil, err
|
|
37
|
+
}
|
|
38
|
+
return p, nil
|
|
39
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
|
|
2
|
+
|
|
3
|
+
// Copyright 2017 The Go Authors. All rights reserved.
|
|
4
|
+
// Use of this source code is governed by a BSD-style
|
|
5
|
+
// license that can be found in the LICENSE file.
|
|
6
|
+
|
|
7
|
+
package idna_test
|
|
8
|
+
|
|
9
|
+
import (
|
|
10
|
+
"fmt"
|
|
11
|
+
|
|
12
|
+
"golang.org/x/net/idna"
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
func ExampleProfile() {
|
|
16
|
+
// Raw Punycode has no restrictions and does no mappings.
|
|
17
|
+
fmt.Println(idna.ToASCII(""))
|
|
18
|
+
fmt.Println(idna.ToASCII("*.faß.com"))
|
|
19
|
+
fmt.Println(idna.Punycode.ToASCII("*.faß.com"))
|
|
20
|
+
|
|
21
|
+
// Rewrite IDN for lookup. This (currently) uses transitional mappings to
|
|
22
|
+
// find a balance between IDNA2003 and IDNA2008 compatibility.
|
|
23
|
+
fmt.Println(idna.Lookup.ToASCII(""))
|
|
24
|
+
fmt.Println(idna.Lookup.ToASCII("www.faß.com"))
|
|
25
|
+
|
|
26
|
+
// Convert an IDN to ASCII for registration purposes. This changes the
|
|
27
|
+
// encoding, but reports an error if the input was illformed.
|
|
28
|
+
fmt.Println(idna.Registration.ToASCII(""))
|
|
29
|
+
fmt.Println(idna.Registration.ToASCII("www.faß.com"))
|
|
30
|
+
|
|
31
|
+
// Output:
|
|
32
|
+
// <nil>
|
|
33
|
+
// *.xn--fa-hia.com <nil>
|
|
34
|
+
// *.xn--fa-hia.com <nil>
|
|
35
|
+
// <nil>
|
|
36
|
+
// www.fass.com <nil>
|
|
37
|
+
// idna: invalid label ""
|
|
38
|
+
// www.xn--fa-hia.com <nil>
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
func ExampleNew() {
|
|
42
|
+
var p *idna.Profile
|
|
43
|
+
|
|
44
|
+
// Raw Punycode has no restrictions and does no mappings.
|
|
45
|
+
p = idna.New()
|
|
46
|
+
fmt.Println(p.ToASCII("*.faß.com"))
|
|
47
|
+
|
|
48
|
+
// Do mappings. Note that star is not allowed in a DNS lookup.
|
|
49
|
+
p = idna.New(
|
|
50
|
+
idna.MapForLookup(),
|
|
51
|
+
idna.Transitional(true)) // Map ß -> ss
|
|
52
|
+
fmt.Println(p.ToASCII("*.faß.com"))
|
|
53
|
+
|
|
54
|
+
// Lookup for registration. Also does not allow '*'.
|
|
55
|
+
p = idna.New(idna.ValidateForRegistration())
|
|
56
|
+
fmt.Println(p.ToUnicode("*.faß.com"))
|
|
57
|
+
|
|
58
|
+
// Set up a profile maps for lookup, but allows wild cards.
|
|
59
|
+
p = idna.New(
|
|
60
|
+
idna.MapForLookup(),
|
|
61
|
+
idna.Transitional(true), // Map ß -> ss
|
|
62
|
+
idna.StrictDomainName(false)) // Set more permissive ASCII rules.
|
|
63
|
+
fmt.Println(p.ToASCII("*.faß.com"))
|
|
64
|
+
|
|
65
|
+
// Output:
|
|
66
|
+
// *.xn--fa-hia.com <nil>
|
|
67
|
+
// *.fass.com idna: disallowed rune U+002A
|
|
68
|
+
// *.faß.com idna: disallowed rune U+002A
|
|
69
|
+
// *.fass.com <nil>
|
|
70
|
+
}
|
|
@@ -0,0 +1,680 @@
|
|
|
1
|
+
// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
|
|
2
|
+
|
|
3
|
+
// Copyright 2016 The Go Authors. All rights reserved.
|
|
4
|
+
// Use of this source code is governed by a BSD-style
|
|
5
|
+
// license that can be found in the LICENSE file.
|
|
6
|
+
|
|
7
|
+
// Package idna implements IDNA2008 using the compatibility processing
|
|
8
|
+
// defined by UTS (Unicode Technical Standard) #46, which defines a standard to
|
|
9
|
+
// deal with the transition from IDNA2003.
|
|
10
|
+
//
|
|
11
|
+
// IDNA2008 (Internationalized Domain Names for Applications), is defined in RFC
|
|
12
|
+
// 5890, RFC 5891, RFC 5892, RFC 5893 and RFC 5894.
|
|
13
|
+
// UTS #46 is defined in http://www.unicode.org/reports/tr46.
|
|
14
|
+
// See http://unicode.org/cldr/utility/idna.jsp for a visualization of the
|
|
15
|
+
// differences between these two standards.
|
|
16
|
+
package idna // import "golang.org/x/net/idna"
|
|
17
|
+
|
|
18
|
+
import (
|
|
19
|
+
"fmt"
|
|
20
|
+
"strings"
|
|
21
|
+
"unicode/utf8"
|
|
22
|
+
|
|
23
|
+
"golang.org/x/text/secure/bidirule"
|
|
24
|
+
"golang.org/x/text/unicode/norm"
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
// NOTE: Unlike common practice in Go APIs, the functions will return a
|
|
28
|
+
// sanitized domain name in case of errors. Browsers sometimes use a partially
|
|
29
|
+
// evaluated string as lookup.
|
|
30
|
+
// TODO: the current error handling is, in my opinion, the least opinionated.
|
|
31
|
+
// Other strategies are also viable, though:
|
|
32
|
+
// Option 1) Return an empty string in case of error, but allow the user to
|
|
33
|
+
// specify explicitly which errors to ignore.
|
|
34
|
+
// Option 2) Return the partially evaluated string if it is itself a valid
|
|
35
|
+
// string, otherwise return the empty string in case of error.
|
|
36
|
+
// Option 3) Option 1 and 2.
|
|
37
|
+
// Option 4) Always return an empty string for now and implement Option 1 as
|
|
38
|
+
// needed, and document that the return string may not be empty in case of
|
|
39
|
+
// error in the future.
|
|
40
|
+
// I think Option 1 is best, but it is quite opinionated.
|
|
41
|
+
|
|
42
|
+
// ToASCII is a wrapper for Punycode.ToASCII.
|
|
43
|
+
func ToASCII(s string) (string, error) {
|
|
44
|
+
return Punycode.process(s, true)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// ToUnicode is a wrapper for Punycode.ToUnicode.
|
|
48
|
+
func ToUnicode(s string) (string, error) {
|
|
49
|
+
return Punycode.process(s, false)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// An Option configures a Profile at creation time.
|
|
53
|
+
type Option func(*options)
|
|
54
|
+
|
|
55
|
+
// Transitional sets a Profile to use the Transitional mapping as defined in UTS
|
|
56
|
+
// #46. This will cause, for example, "ß" to be mapped to "ss". Using the
|
|
57
|
+
// transitional mapping provides a compromise between IDNA2003 and IDNA2008
|
|
58
|
+
// compatibility. It is used by most browsers when resolving domain names. This
|
|
59
|
+
// option is only meaningful if combined with MapForLookup.
|
|
60
|
+
func Transitional(transitional bool) Option {
|
|
61
|
+
return func(o *options) { o.transitional = true }
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// VerifyDNSLength sets whether a Profile should fail if any of the IDN parts
|
|
65
|
+
// are longer than allowed by the RFC.
|
|
66
|
+
func VerifyDNSLength(verify bool) Option {
|
|
67
|
+
return func(o *options) { o.verifyDNSLength = verify }
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// RemoveLeadingDots removes leading label separators. Leading runes that map to
|
|
71
|
+
// dots, such as U+3002, are removed as well.
|
|
72
|
+
//
|
|
73
|
+
// This is the behavior suggested by the UTS #46 and is adopted by some
|
|
74
|
+
// browsers.
|
|
75
|
+
func RemoveLeadingDots(remove bool) Option {
|
|
76
|
+
return func(o *options) { o.removeLeadingDots = remove }
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// ValidateLabels sets whether to check the mandatory label validation criteria
|
|
80
|
+
// as defined in Section 5.4 of RFC 5891. This includes testing for correct use
|
|
81
|
+
// of hyphens ('-'), normalization, validity of runes, and the context rules.
|
|
82
|
+
func ValidateLabels(enable bool) Option {
|
|
83
|
+
return func(o *options) {
|
|
84
|
+
// Don't override existing mappings, but set one that at least checks
|
|
85
|
+
// normalization if it is not set.
|
|
86
|
+
if o.mapping == nil && enable {
|
|
87
|
+
o.mapping = normalize
|
|
88
|
+
}
|
|
89
|
+
o.trie = trie
|
|
90
|
+
o.validateLabels = enable
|
|
91
|
+
o.fromPuny = validateFromPunycode
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// StrictDomainName limits the set of permissable ASCII characters to those
|
|
96
|
+
// allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the
|
|
97
|
+
// hyphen). This is set by default for MapForLookup and ValidateForRegistration.
|
|
98
|
+
//
|
|
99
|
+
// This option is useful, for instance, for browsers that allow characters
|
|
100
|
+
// outside this range, for example a '_' (U+005F LOW LINE). See
|
|
101
|
+
// http://www.rfc-editor.org/std/std3.txt for more details This option
|
|
102
|
+
// corresponds to the UseSTD3ASCIIRules option in UTS #46.
|
|
103
|
+
func StrictDomainName(use bool) Option {
|
|
104
|
+
return func(o *options) {
|
|
105
|
+
o.trie = trie
|
|
106
|
+
o.useSTD3Rules = use
|
|
107
|
+
o.fromPuny = validateFromPunycode
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// NOTE: the following options pull in tables. The tables should not be linked
|
|
112
|
+
// in as long as the options are not used.
|
|
113
|
+
|
|
114
|
+
// BidiRule enables the Bidi rule as defined in RFC 5893. Any application
|
|
115
|
+
// that relies on proper validation of labels should include this rule.
|
|
116
|
+
func BidiRule() Option {
|
|
117
|
+
return func(o *options) { o.bidirule = bidirule.ValidString }
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// ValidateForRegistration sets validation options to verify that a given IDN is
|
|
121
|
+
// properly formatted for registration as defined by Section 4 of RFC 5891.
|
|
122
|
+
func ValidateForRegistration() Option {
|
|
123
|
+
return func(o *options) {
|
|
124
|
+
o.mapping = validateRegistration
|
|
125
|
+
StrictDomainName(true)(o)
|
|
126
|
+
ValidateLabels(true)(o)
|
|
127
|
+
VerifyDNSLength(true)(o)
|
|
128
|
+
BidiRule()(o)
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// MapForLookup sets validation and mapping options such that a given IDN is
|
|
133
|
+
// transformed for domain name lookup according to the requirements set out in
|
|
134
|
+
// Section 5 of RFC 5891. The mappings follow the recommendations of RFC 5894,
|
|
135
|
+
// RFC 5895 and UTS 46. It does not add the Bidi Rule. Use the BidiRule option
|
|
136
|
+
// to add this check.
|
|
137
|
+
//
|
|
138
|
+
// The mappings include normalization and mapping case, width and other
|
|
139
|
+
// compatibility mappings.
|
|
140
|
+
func MapForLookup() Option {
|
|
141
|
+
return func(o *options) {
|
|
142
|
+
o.mapping = validateAndMap
|
|
143
|
+
StrictDomainName(true)(o)
|
|
144
|
+
ValidateLabels(true)(o)
|
|
145
|
+
RemoveLeadingDots(true)(o)
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
type options struct {
|
|
150
|
+
transitional bool
|
|
151
|
+
useSTD3Rules bool
|
|
152
|
+
validateLabels bool
|
|
153
|
+
verifyDNSLength bool
|
|
154
|
+
removeLeadingDots bool
|
|
155
|
+
|
|
156
|
+
trie *idnaTrie
|
|
157
|
+
|
|
158
|
+
// fromPuny calls validation rules when converting A-labels to U-labels.
|
|
159
|
+
fromPuny func(p *Profile, s string) error
|
|
160
|
+
|
|
161
|
+
// mapping implements a validation and mapping step as defined in RFC 5895
|
|
162
|
+
// or UTS 46, tailored to, for example, domain registration or lookup.
|
|
163
|
+
mapping func(p *Profile, s string) (string, error)
|
|
164
|
+
|
|
165
|
+
// bidirule, if specified, checks whether s conforms to the Bidi Rule
|
|
166
|
+
// defined in RFC 5893.
|
|
167
|
+
bidirule func(s string) bool
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// A Profile defines the configuration of an IDNA mapper.
|
|
171
|
+
type Profile struct {
|
|
172
|
+
options
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
func apply(o *options, opts []Option) {
|
|
176
|
+
for _, f := range opts {
|
|
177
|
+
f(o)
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// New creates a new Profile.
|
|
182
|
+
//
|
|
183
|
+
// With no options, the returned Profile is the most permissive and equals the
|
|
184
|
+
// Punycode Profile. Options can be passed to further restrict the Profile. The
|
|
185
|
+
// MapForLookup and ValidateForRegistration options set a collection of options,
|
|
186
|
+
// for lookup and registration purposes respectively, which can be tailored by
|
|
187
|
+
// adding more fine-grained options, where later options override earlier
|
|
188
|
+
// options.
|
|
189
|
+
func New(o ...Option) *Profile {
|
|
190
|
+
p := &Profile{}
|
|
191
|
+
apply(&p.options, o)
|
|
192
|
+
return p
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// ToASCII converts a domain or domain label to its ASCII form. For example,
|
|
196
|
+
// ToASCII("bücher.example.com") is "xn--bcher-kva.example.com", and
|
|
197
|
+
// ToASCII("golang") is "golang". If an error is encountered it will return
|
|
198
|
+
// an error and a (partially) processed result.
|
|
199
|
+
func (p *Profile) ToASCII(s string) (string, error) {
|
|
200
|
+
return p.process(s, true)
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// ToUnicode converts a domain or domain label to its Unicode form. For example,
|
|
204
|
+
// ToUnicode("xn--bcher-kva.example.com") is "bücher.example.com", and
|
|
205
|
+
// ToUnicode("golang") is "golang". If an error is encountered it will return
|
|
206
|
+
// an error and a (partially) processed result.
|
|
207
|
+
func (p *Profile) ToUnicode(s string) (string, error) {
|
|
208
|
+
pp := *p
|
|
209
|
+
pp.transitional = false
|
|
210
|
+
return pp.process(s, false)
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// String reports a string with a description of the profile for debugging
|
|
214
|
+
// purposes. The string format may change with different versions.
|
|
215
|
+
func (p *Profile) String() string {
|
|
216
|
+
s := ""
|
|
217
|
+
if p.transitional {
|
|
218
|
+
s = "Transitional"
|
|
219
|
+
} else {
|
|
220
|
+
s = "NonTransitional"
|
|
221
|
+
}
|
|
222
|
+
if p.useSTD3Rules {
|
|
223
|
+
s += ":UseSTD3Rules"
|
|
224
|
+
}
|
|
225
|
+
if p.validateLabels {
|
|
226
|
+
s += ":ValidateLabels"
|
|
227
|
+
}
|
|
228
|
+
if p.verifyDNSLength {
|
|
229
|
+
s += ":VerifyDNSLength"
|
|
230
|
+
}
|
|
231
|
+
return s
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
var (
|
|
235
|
+
// Punycode is a Profile that does raw punycode processing with a minimum
|
|
236
|
+
// of validation.
|
|
237
|
+
Punycode *Profile = punycode
|
|
238
|
+
|
|
239
|
+
// Lookup is the recommended profile for looking up domain names, according
|
|
240
|
+
// to Section 5 of RFC 5891. The exact configuration of this profile may
|
|
241
|
+
// change over time.
|
|
242
|
+
Lookup *Profile = lookup
|
|
243
|
+
|
|
244
|
+
// Display is the recommended profile for displaying domain names.
|
|
245
|
+
// The configuration of this profile may change over time.
|
|
246
|
+
Display *Profile = display
|
|
247
|
+
|
|
248
|
+
// Registration is the recommended profile for checking whether a given
|
|
249
|
+
// IDN is valid for registration, according to Section 4 of RFC 5891.
|
|
250
|
+
Registration *Profile = registration
|
|
251
|
+
|
|
252
|
+
punycode = &Profile{}
|
|
253
|
+
lookup = &Profile{options{
|
|
254
|
+
transitional: true,
|
|
255
|
+
useSTD3Rules: true,
|
|
256
|
+
validateLabels: true,
|
|
257
|
+
removeLeadingDots: true,
|
|
258
|
+
trie: trie,
|
|
259
|
+
fromPuny: validateFromPunycode,
|
|
260
|
+
mapping: validateAndMap,
|
|
261
|
+
bidirule: bidirule.ValidString,
|
|
262
|
+
}}
|
|
263
|
+
display = &Profile{options{
|
|
264
|
+
useSTD3Rules: true,
|
|
265
|
+
validateLabels: true,
|
|
266
|
+
removeLeadingDots: true,
|
|
267
|
+
trie: trie,
|
|
268
|
+
fromPuny: validateFromPunycode,
|
|
269
|
+
mapping: validateAndMap,
|
|
270
|
+
bidirule: bidirule.ValidString,
|
|
271
|
+
}}
|
|
272
|
+
registration = &Profile{options{
|
|
273
|
+
useSTD3Rules: true,
|
|
274
|
+
validateLabels: true,
|
|
275
|
+
verifyDNSLength: true,
|
|
276
|
+
trie: trie,
|
|
277
|
+
fromPuny: validateFromPunycode,
|
|
278
|
+
mapping: validateRegistration,
|
|
279
|
+
bidirule: bidirule.ValidString,
|
|
280
|
+
}}
|
|
281
|
+
|
|
282
|
+
// TODO: profiles
|
|
283
|
+
// Register: recommended for approving domain names: don't do any mappings
|
|
284
|
+
// but rather reject on invalid input. Bundle or block deviation characters.
|
|
285
|
+
)
|
|
286
|
+
|
|
287
|
+
type labelError struct{ label, code_ string }
|
|
288
|
+
|
|
289
|
+
func (e labelError) code() string { return e.code_ }
|
|
290
|
+
func (e labelError) Error() string {
|
|
291
|
+
return fmt.Sprintf("idna: invalid label %q", e.label)
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
type runeError rune
|
|
295
|
+
|
|
296
|
+
func (e runeError) code() string { return "P1" }
|
|
297
|
+
func (e runeError) Error() string {
|
|
298
|
+
return fmt.Sprintf("idna: disallowed rune %U", e)
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// process implements the algorithm described in section 4 of UTS #46,
|
|
302
|
+
// see http://www.unicode.org/reports/tr46.
|
|
303
|
+
func (p *Profile) process(s string, toASCII bool) (string, error) {
|
|
304
|
+
var err error
|
|
305
|
+
if p.mapping != nil {
|
|
306
|
+
s, err = p.mapping(p, s)
|
|
307
|
+
}
|
|
308
|
+
// Remove leading empty labels.
|
|
309
|
+
if p.removeLeadingDots {
|
|
310
|
+
for ; len(s) > 0 && s[0] == '.'; s = s[1:] {
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
// It seems like we should only create this error on ToASCII, but the
|
|
314
|
+
// UTS 46 conformance tests suggests we should always check this.
|
|
315
|
+
if err == nil && p.verifyDNSLength && s == "" {
|
|
316
|
+
err = &labelError{s, "A4"}
|
|
317
|
+
}
|
|
318
|
+
labels := labelIter{orig: s}
|
|
319
|
+
for ; !labels.done(); labels.next() {
|
|
320
|
+
label := labels.label()
|
|
321
|
+
if label == "" {
|
|
322
|
+
// Empty labels are not okay. The label iterator skips the last
|
|
323
|
+
// label if it is empty.
|
|
324
|
+
if err == nil && p.verifyDNSLength {
|
|
325
|
+
err = &labelError{s, "A4"}
|
|
326
|
+
}
|
|
327
|
+
continue
|
|
328
|
+
}
|
|
329
|
+
if strings.HasPrefix(label, acePrefix) {
|
|
330
|
+
u, err2 := decode(label[len(acePrefix):])
|
|
331
|
+
if err2 != nil {
|
|
332
|
+
if err == nil {
|
|
333
|
+
err = err2
|
|
334
|
+
}
|
|
335
|
+
// Spec says keep the old label.
|
|
336
|
+
continue
|
|
337
|
+
}
|
|
338
|
+
labels.set(u)
|
|
339
|
+
if err == nil && p.validateLabels {
|
|
340
|
+
err = p.fromPuny(p, u)
|
|
341
|
+
}
|
|
342
|
+
if err == nil {
|
|
343
|
+
// This should be called on NonTransitional, according to the
|
|
344
|
+
// spec, but that currently does not have any effect. Use the
|
|
345
|
+
// original profile to preserve options.
|
|
346
|
+
err = p.validateLabel(u)
|
|
347
|
+
}
|
|
348
|
+
} else if err == nil {
|
|
349
|
+
err = p.validateLabel(label)
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
if toASCII {
|
|
353
|
+
for labels.reset(); !labels.done(); labels.next() {
|
|
354
|
+
label := labels.label()
|
|
355
|
+
if !ascii(label) {
|
|
356
|
+
a, err2 := encode(acePrefix, label)
|
|
357
|
+
if err == nil {
|
|
358
|
+
err = err2
|
|
359
|
+
}
|
|
360
|
+
label = a
|
|
361
|
+
labels.set(a)
|
|
362
|
+
}
|
|
363
|
+
n := len(label)
|
|
364
|
+
if p.verifyDNSLength && err == nil && (n == 0 || n > 63) {
|
|
365
|
+
err = &labelError{label, "A4"}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
s = labels.result()
|
|
370
|
+
if toASCII && p.verifyDNSLength && err == nil {
|
|
371
|
+
// Compute the length of the domain name minus the root label and its dot.
|
|
372
|
+
n := len(s)
|
|
373
|
+
if n > 0 && s[n-1] == '.' {
|
|
374
|
+
n--
|
|
375
|
+
}
|
|
376
|
+
if len(s) < 1 || n > 253 {
|
|
377
|
+
err = &labelError{s, "A4"}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
return s, err
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
func normalize(p *Profile, s string) (string, error) {
|
|
384
|
+
return norm.NFC.String(s), nil
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
func validateRegistration(p *Profile, s string) (string, error) {
|
|
388
|
+
if !norm.NFC.IsNormalString(s) {
|
|
389
|
+
return s, &labelError{s, "V1"}
|
|
390
|
+
}
|
|
391
|
+
for i := 0; i < len(s); {
|
|
392
|
+
v, sz := trie.lookupString(s[i:])
|
|
393
|
+
// Copy bytes not copied so far.
|
|
394
|
+
switch p.simplify(info(v).category()) {
|
|
395
|
+
// TODO: handle the NV8 defined in the Unicode idna data set to allow
|
|
396
|
+
// for strict conformance to IDNA2008.
|
|
397
|
+
case valid, deviation:
|
|
398
|
+
case disallowed, mapped, unknown, ignored:
|
|
399
|
+
r, _ := utf8.DecodeRuneInString(s[i:])
|
|
400
|
+
return s, runeError(r)
|
|
401
|
+
}
|
|
402
|
+
i += sz
|
|
403
|
+
}
|
|
404
|
+
return s, nil
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
func validateAndMap(p *Profile, s string) (string, error) {
|
|
408
|
+
var (
|
|
409
|
+
err error
|
|
410
|
+
b []byte
|
|
411
|
+
k int
|
|
412
|
+
)
|
|
413
|
+
for i := 0; i < len(s); {
|
|
414
|
+
v, sz := trie.lookupString(s[i:])
|
|
415
|
+
start := i
|
|
416
|
+
i += sz
|
|
417
|
+
// Copy bytes not copied so far.
|
|
418
|
+
switch p.simplify(info(v).category()) {
|
|
419
|
+
case valid:
|
|
420
|
+
continue
|
|
421
|
+
case disallowed:
|
|
422
|
+
if err == nil {
|
|
423
|
+
r, _ := utf8.DecodeRuneInString(s[start:])
|
|
424
|
+
err = runeError(r)
|
|
425
|
+
}
|
|
426
|
+
continue
|
|
427
|
+
case mapped, deviation:
|
|
428
|
+
b = append(b, s[k:start]...)
|
|
429
|
+
b = info(v).appendMapping(b, s[start:i])
|
|
430
|
+
case ignored:
|
|
431
|
+
b = append(b, s[k:start]...)
|
|
432
|
+
// drop the rune
|
|
433
|
+
case unknown:
|
|
434
|
+
b = append(b, s[k:start]...)
|
|
435
|
+
b = append(b, "\ufffd"...)
|
|
436
|
+
}
|
|
437
|
+
k = i
|
|
438
|
+
}
|
|
439
|
+
if k == 0 {
|
|
440
|
+
// No changes so far.
|
|
441
|
+
s = norm.NFC.String(s)
|
|
442
|
+
} else {
|
|
443
|
+
b = append(b, s[k:]...)
|
|
444
|
+
if norm.NFC.QuickSpan(b) != len(b) {
|
|
445
|
+
b = norm.NFC.Bytes(b)
|
|
446
|
+
}
|
|
447
|
+
// TODO: the punycode converters require strings as input.
|
|
448
|
+
s = string(b)
|
|
449
|
+
}
|
|
450
|
+
return s, err
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
// A labelIter allows iterating over domain name labels.
|
|
454
|
+
type labelIter struct {
|
|
455
|
+
orig string
|
|
456
|
+
slice []string
|
|
457
|
+
curStart int
|
|
458
|
+
curEnd int
|
|
459
|
+
i int
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
func (l *labelIter) reset() {
|
|
463
|
+
l.curStart = 0
|
|
464
|
+
l.curEnd = 0
|
|
465
|
+
l.i = 0
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
func (l *labelIter) done() bool {
|
|
469
|
+
return l.curStart >= len(l.orig)
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
func (l *labelIter) result() string {
|
|
473
|
+
if l.slice != nil {
|
|
474
|
+
return strings.Join(l.slice, ".")
|
|
475
|
+
}
|
|
476
|
+
return l.orig
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
func (l *labelIter) label() string {
|
|
480
|
+
if l.slice != nil {
|
|
481
|
+
return l.slice[l.i]
|
|
482
|
+
}
|
|
483
|
+
p := strings.IndexByte(l.orig[l.curStart:], '.')
|
|
484
|
+
l.curEnd = l.curStart + p
|
|
485
|
+
if p == -1 {
|
|
486
|
+
l.curEnd = len(l.orig)
|
|
487
|
+
}
|
|
488
|
+
return l.orig[l.curStart:l.curEnd]
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
// next sets the value to the next label. It skips the last label if it is empty.
|
|
492
|
+
func (l *labelIter) next() {
|
|
493
|
+
l.i++
|
|
494
|
+
if l.slice != nil {
|
|
495
|
+
if l.i >= len(l.slice) || l.i == len(l.slice)-1 && l.slice[l.i] == "" {
|
|
496
|
+
l.curStart = len(l.orig)
|
|
497
|
+
}
|
|
498
|
+
} else {
|
|
499
|
+
l.curStart = l.curEnd + 1
|
|
500
|
+
if l.curStart == len(l.orig)-1 && l.orig[l.curStart] == '.' {
|
|
501
|
+
l.curStart = len(l.orig)
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
func (l *labelIter) set(s string) {
|
|
507
|
+
if l.slice == nil {
|
|
508
|
+
l.slice = strings.Split(l.orig, ".")
|
|
509
|
+
}
|
|
510
|
+
l.slice[l.i] = s
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
// acePrefix is the ASCII Compatible Encoding prefix.
|
|
514
|
+
const acePrefix = "xn--"
|
|
515
|
+
|
|
516
|
+
func (p *Profile) simplify(cat category) category {
|
|
517
|
+
switch cat {
|
|
518
|
+
case disallowedSTD3Mapped:
|
|
519
|
+
if p.useSTD3Rules {
|
|
520
|
+
cat = disallowed
|
|
521
|
+
} else {
|
|
522
|
+
cat = mapped
|
|
523
|
+
}
|
|
524
|
+
case disallowedSTD3Valid:
|
|
525
|
+
if p.useSTD3Rules {
|
|
526
|
+
cat = disallowed
|
|
527
|
+
} else {
|
|
528
|
+
cat = valid
|
|
529
|
+
}
|
|
530
|
+
case deviation:
|
|
531
|
+
if !p.transitional {
|
|
532
|
+
cat = valid
|
|
533
|
+
}
|
|
534
|
+
case validNV8, validXV8:
|
|
535
|
+
// TODO: handle V2008
|
|
536
|
+
cat = valid
|
|
537
|
+
}
|
|
538
|
+
return cat
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
func validateFromPunycode(p *Profile, s string) error {
|
|
542
|
+
if !norm.NFC.IsNormalString(s) {
|
|
543
|
+
return &labelError{s, "V1"}
|
|
544
|
+
}
|
|
545
|
+
for i := 0; i < len(s); {
|
|
546
|
+
v, sz := trie.lookupString(s[i:])
|
|
547
|
+
if c := p.simplify(info(v).category()); c != valid && c != deviation {
|
|
548
|
+
return &labelError{s, "V6"}
|
|
549
|
+
}
|
|
550
|
+
i += sz
|
|
551
|
+
}
|
|
552
|
+
return nil
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
const (
|
|
556
|
+
zwnj = "\u200c"
|
|
557
|
+
zwj = "\u200d"
|
|
558
|
+
)
|
|
559
|
+
|
|
560
|
+
type joinState int8
|
|
561
|
+
|
|
562
|
+
const (
|
|
563
|
+
stateStart joinState = iota
|
|
564
|
+
stateVirama
|
|
565
|
+
stateBefore
|
|
566
|
+
stateBeforeVirama
|
|
567
|
+
stateAfter
|
|
568
|
+
stateFAIL
|
|
569
|
+
)
|
|
570
|
+
|
|
571
|
+
var joinStates = [][numJoinTypes]joinState{
|
|
572
|
+
stateStart: {
|
|
573
|
+
joiningL: stateBefore,
|
|
574
|
+
joiningD: stateBefore,
|
|
575
|
+
joinZWNJ: stateFAIL,
|
|
576
|
+
joinZWJ: stateFAIL,
|
|
577
|
+
joinVirama: stateVirama,
|
|
578
|
+
},
|
|
579
|
+
stateVirama: {
|
|
580
|
+
joiningL: stateBefore,
|
|
581
|
+
joiningD: stateBefore,
|
|
582
|
+
},
|
|
583
|
+
stateBefore: {
|
|
584
|
+
joiningL: stateBefore,
|
|
585
|
+
joiningD: stateBefore,
|
|
586
|
+
joiningT: stateBefore,
|
|
587
|
+
joinZWNJ: stateAfter,
|
|
588
|
+
joinZWJ: stateFAIL,
|
|
589
|
+
joinVirama: stateBeforeVirama,
|
|
590
|
+
},
|
|
591
|
+
stateBeforeVirama: {
|
|
592
|
+
joiningL: stateBefore,
|
|
593
|
+
joiningD: stateBefore,
|
|
594
|
+
joiningT: stateBefore,
|
|
595
|
+
},
|
|
596
|
+
stateAfter: {
|
|
597
|
+
joiningL: stateFAIL,
|
|
598
|
+
joiningD: stateBefore,
|
|
599
|
+
joiningT: stateAfter,
|
|
600
|
+
joiningR: stateStart,
|
|
601
|
+
joinZWNJ: stateFAIL,
|
|
602
|
+
joinZWJ: stateFAIL,
|
|
603
|
+
joinVirama: stateAfter, // no-op as we can't accept joiners here
|
|
604
|
+
},
|
|
605
|
+
stateFAIL: {
|
|
606
|
+
0: stateFAIL,
|
|
607
|
+
joiningL: stateFAIL,
|
|
608
|
+
joiningD: stateFAIL,
|
|
609
|
+
joiningT: stateFAIL,
|
|
610
|
+
joiningR: stateFAIL,
|
|
611
|
+
joinZWNJ: stateFAIL,
|
|
612
|
+
joinZWJ: stateFAIL,
|
|
613
|
+
joinVirama: stateFAIL,
|
|
614
|
+
},
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
// validateLabel validates the criteria from Section 4.1. Item 1, 4, and 6 are
|
|
618
|
+
// already implicitly satisfied by the overall implementation.
|
|
619
|
+
func (p *Profile) validateLabel(s string) error {
|
|
620
|
+
if s == "" {
|
|
621
|
+
if p.verifyDNSLength {
|
|
622
|
+
return &labelError{s, "A4"}
|
|
623
|
+
}
|
|
624
|
+
return nil
|
|
625
|
+
}
|
|
626
|
+
if p.bidirule != nil && !p.bidirule(s) {
|
|
627
|
+
return &labelError{s, "B"}
|
|
628
|
+
}
|
|
629
|
+
if !p.validateLabels {
|
|
630
|
+
return nil
|
|
631
|
+
}
|
|
632
|
+
trie := p.trie // p.validateLabels is only set if trie is set.
|
|
633
|
+
if len(s) > 4 && s[2] == '-' && s[3] == '-' {
|
|
634
|
+
return &labelError{s, "V2"}
|
|
635
|
+
}
|
|
636
|
+
if s[0] == '-' || s[len(s)-1] == '-' {
|
|
637
|
+
return &labelError{s, "V3"}
|
|
638
|
+
}
|
|
639
|
+
// TODO: merge the use of this in the trie.
|
|
640
|
+
v, sz := trie.lookupString(s)
|
|
641
|
+
x := info(v)
|
|
642
|
+
if x.isModifier() {
|
|
643
|
+
return &labelError{s, "V5"}
|
|
644
|
+
}
|
|
645
|
+
// Quickly return in the absence of zero-width (non) joiners.
|
|
646
|
+
if strings.Index(s, zwj) == -1 && strings.Index(s, zwnj) == -1 {
|
|
647
|
+
return nil
|
|
648
|
+
}
|
|
649
|
+
st := stateStart
|
|
650
|
+
for i := 0; ; {
|
|
651
|
+
jt := x.joinType()
|
|
652
|
+
if s[i:i+sz] == zwj {
|
|
653
|
+
jt = joinZWJ
|
|
654
|
+
} else if s[i:i+sz] == zwnj {
|
|
655
|
+
jt = joinZWNJ
|
|
656
|
+
}
|
|
657
|
+
st = joinStates[st][jt]
|
|
658
|
+
if x.isViramaModifier() {
|
|
659
|
+
st = joinStates[st][joinVirama]
|
|
660
|
+
}
|
|
661
|
+
if i += sz; i == len(s) {
|
|
662
|
+
break
|
|
663
|
+
}
|
|
664
|
+
v, sz = trie.lookupString(s[i:])
|
|
665
|
+
x = info(v)
|
|
666
|
+
}
|
|
667
|
+
if st == stateFAIL || st == stateAfter {
|
|
668
|
+
return &labelError{s, "C"}
|
|
669
|
+
}
|
|
670
|
+
return nil
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
func ascii(s string) bool {
|
|
674
|
+
for i := 0; i < len(s); i++ {
|
|
675
|
+
if s[i] >= utf8.RuneSelf {
|
|
676
|
+
return false
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
return true
|
|
680
|
+
}
|