提交 8abc16f5 authored 作者: Anthony Minessale's avatar Anthony Minessale

FS-8761

上级 1e7b4a13
Sat Aug 6 11:48:53 CDT 2016 Mon Aug 8 16:39:35 CDT 2016
...@@ -494,6 +494,8 @@ int tport_ws_init_secondary(tport_t *self, int socket, int accepted, ...@@ -494,6 +494,8 @@ int tport_ws_init_secondary(tport_t *self, int socket, int accepted,
return *return_reason = "WS_INIT", -1; return *return_reason = "WS_INIT", -1;
} }
wstp->connected = time(NULL);
wstp->ws_initialized = 1; wstp->ws_initialized = 1;
self->tp_pre_framed = 1; self->tp_pre_framed = 1;
...@@ -594,19 +596,31 @@ int tport_ws_next_timer(tport_t *self, ...@@ -594,19 +596,31 @@ int tport_ws_next_timer(tport_t *self,
char const **return_why) char const **return_why)
{ {
tport_ws_t *wstp = (tport_ws_t *)self; tport_ws_t *wstp = (tport_ws_t *)self;
int ll = establish_logical_layer(&wstp->ws);
if (establish_logical_layer(&wstp->ws) < 0) { int punt = 0;
if (wstp->tos++ == 1) {
tport_close(self); if (ll == -1) {
SU_DEBUG_7(("%s(%p): %s to " TPN_FORMAT "%s\n", punt = 1;
__func__, (void *)self, } else if (ll < 0) {
"timeout establishing connection\n", TPN_ARGS(self->tp_name), "")); time_t now = time(NULL);
return -1; if (now - wstp->connected > 5) {
punt = 2;
} }
} else { } else {
self->tp_params->tpp_keepalive = 30000; self->tp_params->tpp_keepalive = 0;
} }
if (punt) {
tport_close(self);
SU_DEBUG_7(("%s(%p): %s to " TPN_FORMAT "%s\n",
__func__, (void *)self,
(punt == 2 ? "Timeout establishing SSL" : "Error establishing SSL"), TPN_ARGS(self->tp_name), ""));
return -1;
}
return return
tport_next_recv_timeout(self, return_target, return_why) | tport_next_recv_timeout(self, return_target, return_why) |
tport_next_keepalive(self, return_target, return_why); tport_next_keepalive(self, return_target, return_why);
......
...@@ -59,7 +59,7 @@ typedef struct tport_ws_s { ...@@ -59,7 +59,7 @@ typedef struct tport_ws_s {
char wstp_buffer[65536]; char wstp_buffer[65536];
size_t wstp_buflen; size_t wstp_buflen;
SU_S8_T ws_initialized; SU_S8_T ws_initialized;
unsigned char tos; time_t connected;
unsigned ws_secure:1; unsigned ws_secure:1;
unsigned:0; unsigned:0;
} tport_ws_t; } tport_ws_t;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论