Closed kdurov closed 3 years ago
尝试了下1.5版本,此问题依然未彻底解决。 可以监听v6端口了,但是仍然无法转发到v6地址。 -r 后面直接写v6地址的话报错
thread 'tokio-runtime-worker' panicked at 'called Result::unwrap()
on an Err
value: ResolveError { kind: Proto(ProtoError { kind: Msg("Label contains invalid characters: Err(Errors { invalid_mapping, disallowed_by_std3_ascii_rules })") }) }', src/resolver.rs:18:53
note: run with RUST_BACKTRACE=1
environment variable to display a backtrace
@zhboner @zephyrchien 麻烦看看是否还有解析问题,谢谢。
感谢report。目前已经定位到问题了,但是还没有比较好的解决方法
标准库的 ipv6 parser 在解析ipv6+port时要求给IP加中括号(比如 [::1]:80),而直接解析ipv6的时候则不需要加中括号(比如 ::1)
realm目前的解析策略是启动时提取ipv6和port,同时定时解析ipv6。等发起新连接时再合并当前的ipv6+port,解析字符串得到socketaddr。如果按 [::1]:80 的格式填写地址,首次解析ipv6时就panic;如果以 ::1:80_ 的格式填写,则发起连接的时panic
@zhboner 也许是时候重构一下resolver了,顺便还能把 #24 解决掉。能否把我加入collaborators,我会负责这部分的重构
realm -l [::]:12345 -r example.com:12345 无法监听v6的样子
谢谢