mirror of
https://github.com/yusing/godoxy.git
synced 2026-04-20 23:41:23 +02:00
fix(stream): properly handle remote stream scheme IPv4/6
This commit is contained in:
@@ -70,7 +70,7 @@ func (r *StreamRoute) Start(parent task.Parent) gperr.Error {
|
||||
|
||||
r.ListenAndServe(r.task.Context(), nil, nil)
|
||||
r.l = log.With().
|
||||
Str("type", r.LisURL.Scheme).
|
||||
Str("type", r.LisURL.Scheme+"->"+r.ProxyURL.Scheme).
|
||||
Str("name", r.Name()).
|
||||
Stringer("rurl", r.ProxyURL).
|
||||
Stringer("laddr", r.LocalAddr()).Logger()
|
||||
@@ -102,9 +102,10 @@ func (r *StreamRoute) LocalAddr() net.Addr {
|
||||
|
||||
func (r *StreamRoute) initStream() (nettypes.Stream, error) {
|
||||
lurl, rurl := r.LisURL, r.ProxyURL
|
||||
// lurl scheme is either tcp4/tcp6 -> tcp, udp4/udp6 -> udp
|
||||
// rurl scheme does not have the trailing 4/6
|
||||
if strings.TrimRight(lurl.Scheme, "46") != rurl.Scheme {
|
||||
// tcp4/tcp6 -> tcp, udp4/udp6 -> udp
|
||||
lScheme := strings.TrimRight(lurl.Scheme, "46")
|
||||
rScheme := strings.TrimRight(rurl.Scheme, "46")
|
||||
if lScheme != rScheme {
|
||||
return nil, fmt.Errorf("incoherent scheme is not yet supported: %s != %s", lurl.Scheme, rurl.Scheme)
|
||||
}
|
||||
|
||||
@@ -113,11 +114,11 @@ func (r *StreamRoute) initStream() (nettypes.Stream, error) {
|
||||
laddr = lurl.Host
|
||||
}
|
||||
|
||||
switch rurl.Scheme {
|
||||
switch rScheme {
|
||||
case "tcp":
|
||||
return stream.NewTCPTCPStream(r.LisURL.Scheme, laddr, rurl.Host)
|
||||
return stream.NewTCPTCPStream(lurl.Scheme, rurl.Scheme, laddr, rurl.Host)
|
||||
case "udp":
|
||||
return stream.NewUDPUDPStream(r.LisURL.Scheme, laddr, rurl.Host)
|
||||
return stream.NewUDPUDPStream(lurl.Scheme, rurl.Scheme, laddr, rurl.Host)
|
||||
}
|
||||
return nil, fmt.Errorf("unknown scheme: %s", rurl.Scheme)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user