diff options
author | Andrei Karas <akaras@inbox.ru> | 2019-03-21 03:20:26 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2019-04-07 22:38:34 +0300 |
commit | e918e4d9a8a56cc6a0a653fa6398d731484496c7 (patch) | |
tree | 9f90a85e4adf0140fab745f275f5905ce1b932c8 /src/common | |
parent | 072b831c2cf88f3161c0a0c2e4742d8f30f9701a (diff) | |
download | hercules-e918e4d9a8a56cc6a0a653fa6398d731484496c7.tar.gz hercules-e918e4d9a8a56cc6a0a653fa6398d731484496c7.tar.bz2 hercules-e918e4d9a8a56cc6a0a653fa6398d731484496c7.tar.xz hercules-e918e4d9a8a56cc6a0a653fa6398d731484496c7.zip |
Add ZC_PING and CZ_PING packets
For supported packet version, from now server send ping packets to client.
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/socket.c | 7 | ||||
-rw-r--r-- | src/common/socket.h | 1 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/common/socket.c b/src/common/socket.c index faf57f412..dc5b06da0 100644 --- a/src/common/socket.c +++ b/src/common/socket.c @@ -488,11 +488,12 @@ static int send_from_fifo(int fd) return 0; } - if( len > 0 ) + if (len > 0) { + sockt->session[fd]->wdata_tick = sockt->last_tick; // some data could not be transferred? // shift unsent data to the beginning of the queue - if( (size_t)len < sockt->session[fd]->wdata_size ) + if ((size_t)len < sockt->session[fd]->wdata_size) memmove(sockt->session[fd]->wdata, sockt->session[fd]->wdata + len, sockt->session[fd]->wdata_size - len); sockt->session[fd]->wdata_size -= len; @@ -649,6 +650,7 @@ static int make_listen_bind(uint32 ip, uint16 port) create_session(fd, sockt->connect_client, null_send, null_parse); sockt->session[fd]->client_addr = 0; // just listens sockt->session[fd]->rdata_tick = 0; // disable timeouts on this socket + sockt->session[fd]->wdata_tick = 0; return fd; } @@ -731,6 +733,7 @@ static int create_session(int fd, RecvFunc func_recv, SendFunc func_send, ParseF sockt->session[fd]->func_send = func_send; sockt->session[fd]->func_parse = func_parse; sockt->session[fd]->rdata_tick = sockt->last_tick; + sockt->session[fd]->wdata_tick = sockt->last_tick; sockt->session[fd]->session_data = NULL; sockt->session[fd]->hdata = NULL; return 0; diff --git a/src/common/socket.h b/src/common/socket.h index 193b22645..b20b0b07e 100644 --- a/src/common/socket.h +++ b/src/common/socket.h @@ -130,6 +130,7 @@ struct socket_data { size_t rdata_pos; uint32 last_head_size; time_t rdata_tick; // time of last recv (for detecting timeouts); zero when timeout is disabled + time_t wdata_tick; // time of last send (for detecting timeouts); RecvFunc func_recv; SendFunc func_send; |