Commit fd4780b8 authored by Vysheng's avatar Vysheng

maybe fixed conn restart

parent 96b47dad
......@@ -66,6 +66,7 @@ int ping_alarm (struct connection *c) {
if (verbosity > 2) {
logprintf ("ping alarm\n");
}
assert (c->state == conn_ready || c->state == conn_connecting);
if (get_double_time () - c->last_receive_time > 20 * PING_TIMEOUT) {
if (verbosity) {
logprintf ( "fail connection: reason: ping timeout\n");
......@@ -97,10 +98,13 @@ void start_ping_timer (struct connection *c) {
void restart_connection (struct connection *c);
int fail_alarm (void *ev) {
((struct connection *)ev)->in_fail_timer = 0;
restart_connection (ev);
return 0;
}
void start_fail_timer (struct connection *c) {
if (c->in_fail_timer) { return; }
c->in_fail_timer = 1;
c->ev.timeout = get_double_time () + 10;
c->ev.alarm = (void *)fail_alarm;
c->ev.self = c;
......
......@@ -124,6 +124,7 @@ struct connection {
int packet_num;
int out_packet_num;
int last_connect_time;
int in_fail_timer;
struct connection_methods *methods;
struct session *session;
void *extra;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment