diff --git a/a8/tcplistener.cc b/a8/tcplistener.cc index 2cb5716..66e29ed 100644 --- a/a8/tcplistener.cc +++ b/a8/tcplistener.cc @@ -335,7 +335,7 @@ namespace a8 } epoll_event *events = new epoll_event[max_clients]; while (!worker_thread_shutdown) { - int nfds = ::epoll_wait(epoll_fd, events, max_clients, -1); + int nfds = ::epoll_wait(epoll_fd, events, max_clients, 1000 * 10); for (int i = 0; i < nfds; ++i) { a8::TcpSession* session = (a8::TcpSession*)events[i].data.ptr; if (events[i].events & EPOLLIN) { diff --git a/a8/tcpsession2.cc b/a8/tcpsession2.cc index 8b27fa0..714e724 100644 --- a/a8/tcpsession2.cc +++ b/a8/tcpsession2.cc @@ -34,7 +34,6 @@ namespace a8 TcpSession::~TcpSession() { - Destory(); } void TcpSession::SetMaxPacketLen(int max_packet_len) diff --git a/a8/tcpsession2.h b/a8/tcpsession2.h index 2811da1..3e954d5 100644 --- a/a8/tcpsession2.h +++ b/a8/tcpsession2.h @@ -32,6 +32,7 @@ namespace a8 virtual void OnError(int); virtual void OnConnect(); virtual void OnDisConnect(); + virtual void Destory(); bool Alive(); protected: @@ -40,7 +41,6 @@ namespace a8 void SetSocket(int sock); bool AllocRecvBuf(); virtual void Reset(); - virtual void Destory(); void _ForceClose(); virtual void OnSocketRead(char* buf, unsigned int buflen); virtual void DecodePacket(char* buf, int& offset, unsigned int buflen); diff --git a/a8/tcpsessionpool.cc b/a8/tcpsessionpool.cc index f9fb828..5f74d1a 100644 --- a/a8/tcpsessionpool.cc +++ b/a8/tcpsessionpool.cc @@ -29,6 +29,7 @@ namespace a8 while (top_node_) { pdelnode = top_node_; top_node_ = top_node_->next; + pdelnode->session->Destory(); delete pdelnode->session; delete pdelnode; } diff --git a/a8/websocketsession.cc b/a8/websocketsession.cc index 521dfd8..5a98afd 100644 --- a/a8/websocketsession.cc +++ b/a8/websocketsession.cc @@ -75,7 +75,7 @@ namespace a8 void WebSocketSession::Destory() { a8::TcpSession::Destory(); - if (!decoded_buff_) { + if (decoded_buff_) { free(decoded_buff_); decoded_buff_ = nullptr; }