Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
韩旭在努力
arduino-esp32
提交
23f6e81d
A
arduino-esp32
项目概览
韩旭在努力
/
arduino-esp32
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
arduino-esp32
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
23f6e81d
编写于
3月 10, 2021
作者:
M
me-no-dev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix AsyncUDP reporting bad address and port
Fixes:
https://github.com/espressif/arduino-esp32/issues/4923
上级
e8311b00
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
11 addition
and
5 deletion
+11
-5
libraries/AsyncUDP/src/AsyncUDP.cpp
libraries/AsyncUDP/src/AsyncUDP.cpp
+11
-5
未找到文件。
libraries/AsyncUDP/src/AsyncUDP.cpp
浏览文件 @
23f6e81d
...
...
@@ -285,6 +285,12 @@ AsyncUDPPacket::AsyncUDPPacket(AsyncUDPPacket &packet){
_len
=
packet
.
_len
;
_index
=
0
;
memcpy
(
&
_remoteIp
,
&
packet
.
_remoteIp
,
sizeof
(
ip_addr_t
));
memcpy
(
&
_localIp
,
&
packet
.
_localIp
,
sizeof
(
ip_addr_t
));
_localPort
=
packet
.
_localPort
;
_remotePort
=
packet
.
_remotePort
;
memcpy
(
_remoteMac
,
packet
.
_remoteMac
,
6
);
pbuf_ref
(
_pb
);
}
...
...
@@ -304,18 +310,18 @@ AsyncUDPPacket::AsyncUDPPacket(AsyncUDP *udp, pbuf *pb, const ip_addr_t *raddr,
_localIp
.
type
=
_remoteIp
.
type
;
eth_hdr
*
eth
=
NULL
;
udp_hdr
*
udphdr
=
reinterpret_cast
<
udp_hdr
*>
(
_data
-
UDP_HLEN
);
udp_hdr
*
udphdr
=
(
udp_hdr
*
)
(
_data
-
UDP_HLEN
);
_localPort
=
ntohs
(
udphdr
->
dest
);
_remotePort
=
ntohs
(
udphdr
->
src
);
if
(
_remoteIp
.
type
==
IPADDR_TYPE_V4
)
{
eth
=
(
eth_hdr
*
)(
((
uint8_t
*
)(
pb
->
payload
))
-
UDP_HLEN
-
IP_HLEN
-
SIZEOF_ETH_HDR
);
struct
ip_hdr
*
iphdr
=
(
struct
ip_hdr
*
)(
((
uint8_t
*
)(
pb
->
payload
))
-
UDP_HLEN
-
IP_HLEN
);
eth
=
(
eth_hdr
*
)(
_data
-
UDP_HLEN
-
IP_HLEN
-
SIZEOF_ETH_HDR
);
struct
ip_hdr
*
iphdr
=
(
struct
ip_hdr
*
)(
_data
-
UDP_HLEN
-
IP_HLEN
);
_localIp
.
u_addr
.
ip4
.
addr
=
iphdr
->
dest
.
addr
;
_remoteIp
.
u_addr
.
ip4
.
addr
=
iphdr
->
src
.
addr
;
}
else
{
eth
=
(
eth_hdr
*
)(
((
uint8_t
*
)(
pb
->
payload
))
-
UDP_HLEN
-
IP6_HLEN
-
SIZEOF_ETH_HDR
);
struct
ip6_hdr
*
ip6hdr
=
(
struct
ip6_hdr
*
)(
((
uint8_t
*
)(
pb
->
payload
))
-
UDP_HLEN
-
IP6_HLEN
);
eth
=
(
eth_hdr
*
)(
_data
-
UDP_HLEN
-
IP6_HLEN
-
SIZEOF_ETH_HDR
);
struct
ip6_hdr
*
ip6hdr
=
(
struct
ip6_hdr
*
)(
_data
-
UDP_HLEN
-
IP6_HLEN
);
memcpy
(
&
_localIp
.
u_addr
.
ip6
.
addr
,
(
uint8_t
*
)
ip6hdr
->
dest
.
addr
,
16
);
memcpy
(
&
_remoteIp
.
u_addr
.
ip6
.
addr
,
(
uint8_t
*
)
ip6hdr
->
src
.
addr
,
16
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录