(src, dst, addr string, tc *tls.Config, idleTime int)
| 24 | ) |
| 25 | |
| 26 | func QUICDialUDP(src, dst, addr string, tc *tls.Config, idleTime int) (net.Conn, error) { |
| 27 | var rc *net.UDPConn |
| 28 | var err error |
| 29 | if src == "" || dst == "" { |
| 30 | rc, err = ListenUDP("udp", nil) |
| 31 | } |
| 32 | if src != "" && dst != "" { |
| 33 | rc, err = NATListenUDP("udp", src, dst) |
| 34 | } |
| 35 | if err != nil { |
| 36 | return nil, err |
| 37 | } |
| 38 | raddr, err := Resolve("udp", addr) |
| 39 | if err != nil { |
| 40 | rc.Close() |
| 41 | return nil, err |
| 42 | } |
| 43 | rc1, err := quic.Dial(context.Background(), rc, raddr, tc, &quic.Config{MaxIdleTimeout: time.Duration(idleTime) * time.Second, EnableDatagrams: true}) |
| 44 | if err != nil { |
| 45 | rc.Close() |
| 46 | return nil, err |
| 47 | } |
| 48 | return &QUICConn{ |
| 49 | UDPConn: rc, |
| 50 | Conn: rc1, |
| 51 | LAddr: rc1.LocalAddr(), |
| 52 | RAddr: rc1.RemoteAddr(), |
| 53 | }, nil |
| 54 | } |
| 55 | |
| 56 | func QUICDialTCP(src, dst, addr string, tc *tls.Config, idleTime int) (net.Conn, error) { |
| 57 | var rc *net.UDPConn |
no test coverage detected