diff --git a/dial.go b/dial.go index 95a24c9..a5e062f 100644 --- a/dial.go +++ b/dial.go @@ -1,9 +1,9 @@ package hopp import "net" +import "errors" import "context" import "crypto/tls" -import "github.com/quic-go/quic-go" // Dial opens a connection to a server. The network must be one of "quic", // "quic4", (IPv4-only) "quic6" (IPv6-only), or "unix". For now, "quic4" and @@ -31,12 +31,7 @@ func (diale Dialer) Dial(ctx context.Context, network, address string) (Conn, er } func (diale Dialer) dialQUIC(ctx context.Context, network, address string) (Conn, error) { - // sorry i fucking lied to you about the network parameter. for all - // quic-go's bullshit bloat, it doesnt even support that. not even when - // instantiating a transport. go figure :/ - conn, err := quic.DialAddr(ctx, address, tlsConfig(diale.TLSConfig), quicConfig()) - if err != nil { return nil, err } - return AdaptB(quicMultiConn { underlying: conn }), nil + return nil, errors.New("quic is not yet implemented") } func (diale Dialer) dialUnix(ctx context.Context, network, address string) (Conn, error) { @@ -60,15 +55,6 @@ func tlsConfig(conf *tls.Config) *tls.Config { return conf } -func quicConfig() *quic.Config { - return &quic.Config { - // TODO: perhaps we might want to put something here - // the quic config shouldn't be exported, just set up - // automatically. we can't have that strangely built quic-go - // package be part of the API, or any third-party packages for - // that matter. it must all be abstracted away. - } -} func quicNetworkToUDPNetwork(network string) (string, error) { switch network { diff --git a/go.mod b/go.mod index 1acc120..0b443b6 100644 --- a/go.mod +++ b/go.mod @@ -5,18 +5,4 @@ go 1.23.0 require ( git.tebibyte.media/sashakoshka/go-util v0.9.1 github.com/gomarkdown/markdown v0.0.0-20241205020045-f7e15b2f3e62 - github.com/quic-go/quic-go v0.48.2 -) - -require ( - github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect - github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect - github.com/onsi/ginkgo/v2 v2.9.5 // indirect - go.uber.org/mock v0.4.0 // indirect - golang.org/x/crypto v0.26.0 // indirect - golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect - golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.28.0 // indirect - golang.org/x/sys v0.23.0 // indirect - golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect ) diff --git a/go.sum b/go.sum index 2f2e05a..bb15dd1 100644 --- a/go.sum +++ b/go.sum @@ -1,60 +1,4 @@ git.tebibyte.media/sashakoshka/go-util v0.9.1 h1:eGAbLwYhOlh4aq/0w+YnJcxT83yPhXtxnYMzz6K7xGo= git.tebibyte.media/sashakoshka/go-util v0.9.1/go.mod h1:0Q1t+PePdx6tFYkRuJNcpM1Mru7wE6X+it1kwuOH+6Y= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/gomarkdown/markdown v0.0.0-20241205020045-f7e15b2f3e62 h1:pbAFUZisjG4s6sxvRJvf2N7vhpCvx2Oxb3PmS6pDO1g= github.com/gomarkdown/markdown v0.0.0-20241205020045-f7e15b2f3e62/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= -github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= -github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= -github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= -github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/quic-go/quic-go v0.48.2 h1:wsKXZPeGWpMpCGSWqOcqpW2wZYic/8T3aqiOID0/KWE= -github.com/quic-go/quic-go v0.48.2/go.mod h1:yBgs3rWBOADpga7F+jJsb6Ybg1LSYiQvwWlLX+/6HMs= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= -go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= -golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= -golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= -golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= -golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= -golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/listen.go b/listen.go index 09f1a03..723dea5 100644 --- a/listen.go +++ b/listen.go @@ -1,9 +1,8 @@ package hopp import "net" -import "context" +import "errors" import "crypto/tls" -import "github.com/quic-go/quic-go" // Listener is an object which listens for incoming HOPP connections. type Listener interface { @@ -30,19 +29,8 @@ func Listen(network, address string) (Listener, error) { // The network must be one of "quic", "quic4", (IPv4-only) or "quic6" // (IPv6-only). func ListenQUIC(network, address string, tlsConf *tls.Config) (Listener, error) { - tlsConf = tlsConfig(tlsConf) - quicConf := quicConfig() - udpNetwork, err := quicNetworkToUDPNetwork(network) - if err != nil { return nil, err } - addr, err := net.ResolveUDPAddr(udpNetwork, address) - if err != nil { return nil, err } - udpListener, err := net.ListenUDP(udpNetwork, addr) - if err != nil { return nil, err } - quicListener, err := quic.Listen(udpListener, tlsConf, quicConf) - if err != nil { return nil, err } - return &listenerQUIC { - underlying: quicListener, - }, nil + // tlsConf = tlsConfig(tlsConf) + return nil, errors.New("quic is not yet implemented") } // ListenUnix listens for incoming HOPP connections using a Unix domain socket @@ -58,24 +46,6 @@ func ListenUnix(network, address string) (Listener, error) { }, nil } -type listenerQUIC struct { - underlying *quic.Listener -} - -func (this *listenerQUIC) Accept() (Conn, error) { - conn, err := this.underlying.Accept(context.Background()) - if err != nil { return nil, err } - return AdaptB(quicMultiConn { underlying: conn }), nil -} - -func (this *listenerQUIC) Close() error { - return this.underlying.Close() -} - -func (this *listenerQUIC) Addr() net.Addr { - return this.underlying.Addr() -} - type listenerUnix struct { underlying *net.UnixListener } diff --git a/quicwrap.go b/quicwrap.go deleted file mode 100644 index 45b00b3..0000000 --- a/quicwrap.go +++ /dev/null @@ -1,54 +0,0 @@ -package hopp - -import "net" -import "context" -import "github.com/quic-go/quic-go" - -var _ MultiConn = quicMultiConn { } -type quicMultiConn struct { - underlying quic.Connection -} - -func (conn quicMultiConn) Close() error { - return conn.underlying.CloseWithError(0, "good bye") -} - -func (conn quicMultiConn) LocalAddr() net.Addr { - return conn.underlying.LocalAddr() -} - -func (conn quicMultiConn) RemoteAddr() net.Addr { - return conn.underlying.RemoteAddr() -} - -func (conn quicMultiConn) AcceptStream(ctx context.Context) (Stream, error) { - strea, err := conn.underlying.AcceptStream(ctx) - if err != nil { return nil, err } - return quicStream { underlying: strea }, nil -} - -func (conn quicMultiConn) OpenStream() (Stream, error) { - strea, err := conn.underlying.OpenStream() - if err != nil { return nil, err } - return quicStream { underlying: strea }, nil -} - -type quicStream struct { - underlying quic.Stream -} - -func (strea quicStream) Read(buffer []byte) (n int, err error) { - return strea.underlying.Read(buffer) -} - -func (strea quicStream) Write(buffer []byte) (n int, err error) { - return strea.underlying.Read(buffer) -} - -func (strea quicStream) Close() error { - return strea.underlying.Close() -} - -func (strea quicStream) ID() int64 { - return int64(strea.underlying.StreamID()) -}