naive_quic.go 595 B

1234567891011121314151617181920212223242526272829303132
  1. //go:build with_quic
  2. package inbound
  3. import (
  4. "github.com/sagernet/quic-go/http3"
  5. E "github.com/sagernet/sing/common/exceptions"
  6. )
  7. func (n *Naive) configureHTTP3Listener() error {
  8. h3Server := &http3.Server{
  9. Port: int(n.listenOptions.ListenPort),
  10. TLSConfig: n.tlsConfig.Config(),
  11. Handler: n,
  12. }
  13. udpConn, err := n.ListenUDP()
  14. if err != nil {
  15. return err
  16. }
  17. go func() {
  18. sErr := h3Server.Serve(udpConn)
  19. udpConn.Close()
  20. if sErr != nil && !E.IsClosedOrCanceled(sErr) {
  21. n.logger.Error("http3 server serve error: ", sErr)
  22. }
  23. }()
  24. n.h3Server = h3Server
  25. return nil
  26. }