Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DODO�
arduino-esp32
提交
582e6433
A
arduino-esp32
项目概览
DODO�
/
arduino-esp32
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
1
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,发现更多精彩内容 >>
提交
582e6433
编写于
4月 15, 2019
作者:
M
me-no-dev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add proper timeout handling to WiFiClientSecure
上级
ef07a84a
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
29 addition
and
6 deletion
+29
-6
libraries/WiFiClientSecure/src/WiFiClientSecure.cpp
libraries/WiFiClientSecure/src/WiFiClientSecure.cpp
+19
-2
libraries/WiFiClientSecure/src/WiFiClientSecure.h
libraries/WiFiClientSecure/src/WiFiClientSecure.h
+3
-0
libraries/WiFiClientSecure/src/ssl_client.cpp
libraries/WiFiClientSecure/src/ssl_client.cpp
+6
-3
libraries/WiFiClientSecure/src/ssl_client.h
libraries/WiFiClientSecure/src/ssl_client.h
+1
-1
未找到文件。
libraries/WiFiClientSecure/src/WiFiClientSecure.cpp
浏览文件 @
582e6433
...
...
@@ -48,6 +48,7 @@ WiFiClientSecure::WiFiClientSecure()
WiFiClientSecure
::
WiFiClientSecure
(
int
sock
)
{
_connected
=
false
;
_timeout
=
0
;
sslclient
=
new
sslclient_context
;
ssl_init
(
sslclient
);
...
...
@@ -98,6 +99,11 @@ int WiFiClientSecure::connect(IPAddress ip, uint16_t port)
return
connect
(
ip
,
port
,
_CA_cert
,
_cert
,
_private_key
);
}
int
WiFiClientSecure
::
connect
(
IPAddress
ip
,
uint16_t
port
,
int32_t
timeout
){
_timeout
=
timeout
;
return
connect
(
ip
,
port
);
}
int
WiFiClientSecure
::
connect
(
const
char
*
host
,
uint16_t
port
)
{
if
(
_pskIdent
&&
_psKey
)
...
...
@@ -105,6 +111,11 @@ int WiFiClientSecure::connect(const char *host, uint16_t port)
return
connect
(
host
,
port
,
_CA_cert
,
_cert
,
_private_key
);
}
int
WiFiClientSecure
::
connect
(
const
char
*
host
,
uint16_t
port
,
int32_t
timeout
){
_timeout
=
timeout
;
return
connect
(
host
,
port
);
}
int
WiFiClientSecure
::
connect
(
IPAddress
ip
,
uint16_t
port
,
const
char
*
_CA_cert
,
const
char
*
_cert
,
const
char
*
_private_key
)
{
return
connect
(
ip
.
toString
().
c_str
(),
port
,
_CA_cert
,
_cert
,
_private_key
);
...
...
@@ -112,7 +123,10 @@ int WiFiClientSecure::connect(IPAddress ip, uint16_t port, const char *_CA_cert,
int
WiFiClientSecure
::
connect
(
const
char
*
host
,
uint16_t
port
,
const
char
*
_CA_cert
,
const
char
*
_cert
,
const
char
*
_private_key
)
{
int
ret
=
start_ssl_client
(
sslclient
,
host
,
port
,
_CA_cert
,
_cert
,
_private_key
,
NULL
,
NULL
);
if
(
_timeout
>
0
){
sslclient
->
handshake_timeout
=
_timeout
*
1000
;
}
int
ret
=
start_ssl_client
(
sslclient
,
host
,
port
,
_timeout
,
_CA_cert
,
_cert
,
_private_key
,
NULL
,
NULL
);
_lastError
=
ret
;
if
(
ret
<
0
)
{
log_e
(
"start_ssl_client: %d"
,
ret
);
...
...
@@ -129,7 +143,10 @@ int WiFiClientSecure::connect(IPAddress ip, uint16_t port, const char *pskIdent,
int
WiFiClientSecure
::
connect
(
const
char
*
host
,
uint16_t
port
,
const
char
*
pskIdent
,
const
char
*
psKey
)
{
log_v
(
"start_ssl_client with PSK"
);
int
ret
=
start_ssl_client
(
sslclient
,
host
,
port
,
NULL
,
NULL
,
NULL
,
_pskIdent
,
_psKey
);
if
(
_timeout
>
0
){
sslclient
->
handshake_timeout
=
_timeout
*
1000
;
}
int
ret
=
start_ssl_client
(
sslclient
,
host
,
port
,
_timeout
,
NULL
,
NULL
,
NULL
,
_pskIdent
,
_psKey
);
_lastError
=
ret
;
if
(
ret
<
0
)
{
log_e
(
"start_ssl_client: %d"
,
ret
);
...
...
libraries/WiFiClientSecure/src/WiFiClientSecure.h
浏览文件 @
582e6433
...
...
@@ -32,6 +32,7 @@ protected:
int
_lastError
=
0
;
int
_peek
=
-
1
;
int
_timeout
=
0
;
const
char
*
_CA_cert
;
const
char
*
_cert
;
const
char
*
_private_key
;
...
...
@@ -44,7 +45,9 @@ public:
WiFiClientSecure
(
int
socket
);
~
WiFiClientSecure
();
int
connect
(
IPAddress
ip
,
uint16_t
port
);
int
connect
(
IPAddress
ip
,
uint16_t
port
,
int32_t
timeout
);
int
connect
(
const
char
*
host
,
uint16_t
port
);
int
connect
(
const
char
*
host
,
uint16_t
port
,
int32_t
timeout
);
int
connect
(
IPAddress
ip
,
uint16_t
port
,
const
char
*
rootCABuff
,
const
char
*
cli_cert
,
const
char
*
cli_key
);
int
connect
(
const
char
*
host
,
uint16_t
port
,
const
char
*
rootCABuff
,
const
char
*
cli_cert
,
const
char
*
cli_key
);
int
connect
(
IPAddress
ip
,
uint16_t
port
,
const
char
*
pskIdent
,
const
char
*
psKey
);
...
...
libraries/WiFiClientSecure/src/ssl_client.cpp
浏览文件 @
582e6433
...
...
@@ -45,10 +45,10 @@ void ssl_init(sslclient_context *ssl_client)
}
int
start_ssl_client
(
sslclient_context
*
ssl_client
,
const
char
*
host
,
uint32_t
port
,
const
char
*
rootCABuff
,
const
char
*
cli_cert
,
const
char
*
cli_key
,
const
char
*
pskIdent
,
const
char
*
psKey
)
int
start_ssl_client
(
sslclient_context
*
ssl_client
,
const
char
*
host
,
uint32_t
port
,
int
timeout
,
const
char
*
rootCABuff
,
const
char
*
cli_cert
,
const
char
*
cli_key
,
const
char
*
pskIdent
,
const
char
*
psKey
)
{
char
buf
[
512
];
int
ret
,
flags
,
timeout
;
int
ret
,
flags
;
int
enable
=
1
;
log_v
(
"Free internal heap before TLS %u"
,
ESP
.
getFreeHeap
());
...
...
@@ -73,7 +73,10 @@ int start_ssl_client(sslclient_context *ssl_client, const char *host, uint32_t p
serv_addr
.
sin_port
=
htons
(
port
);
if
(
lwip_connect
(
ssl_client
->
socket
,
(
struct
sockaddr
*
)
&
serv_addr
,
sizeof
(
serv_addr
))
==
0
)
{
timeout
=
30000
;
if
(
timeout
<=
0
){
timeout
=
30
;
}
timeout
*=
1000
;
//to milliseconds
lwip_setsockopt
(
ssl_client
->
socket
,
SOL_SOCKET
,
SO_RCVTIMEO
,
&
timeout
,
sizeof
(
timeout
));
lwip_setsockopt
(
ssl_client
->
socket
,
SOL_SOCKET
,
SO_SNDTIMEO
,
&
timeout
,
sizeof
(
timeout
));
lwip_setsockopt
(
ssl_client
->
socket
,
IPPROTO_TCP
,
TCP_NODELAY
,
&
enable
,
sizeof
(
enable
));
...
...
libraries/WiFiClientSecure/src/ssl_client.h
浏览文件 @
582e6433
...
...
@@ -29,7 +29,7 @@ typedef struct sslclient_context {
void
ssl_init
(
sslclient_context
*
ssl_client
);
int
start_ssl_client
(
sslclient_context
*
ssl_client
,
const
char
*
host
,
uint32_t
port
,
const
char
*
rootCABuff
,
const
char
*
cli_cert
,
const
char
*
cli_key
,
const
char
*
pskIdent
,
const
char
*
psKey
);
int
start_ssl_client
(
sslclient_context
*
ssl_client
,
const
char
*
host
,
uint32_t
port
,
int
timeout
,
const
char
*
rootCABuff
,
const
char
*
cli_cert
,
const
char
*
cli_key
,
const
char
*
pskIdent
,
const
char
*
psKey
);
void
stop_ssl_socket
(
sslclient_context
*
ssl_client
,
const
char
*
rootCABuff
,
const
char
*
cli_cert
,
const
char
*
cli_key
);
int
data_to_read
(
sslclient_context
*
ssl_client
);
int
send_ssl_data
(
sslclient_context
*
ssl_client
,
const
uint8_t
*
data
,
uint16_t
len
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录