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