We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
http_conn::close_conn成员调用后会关闭客户端socket
//从内核时间表删除描述符 void removefd(int epollfd, int fd) { epoll_ctl(epollfd, EPOLL_CTL_DEL, fd, 0); close(fd); } //关闭连接,关闭一个连接,客户总量减一 void http_conn::close_conn(bool real_close) { if (real_close && (m_sockfd != -1)) { printf("close %d\n", m_sockfd); removefd(m_epollfd, m_sockfd); m_sockfd = -1; m_user_count--; } }
调用http_conn::close_conn成员在这里
void http_conn::process() { HTTP_CODE read_ret = process_read(); if (read_ret == NO_REQUEST) { modfd(m_epollfd, m_sockfd, EPOLLIN, m_TRIGMode); return; } bool write_ret = process_write(read_ret); if (!write_ret) { close_conn(); } modfd(m_epollfd, m_sockfd, EPOLLOUT, m_TRIGMode); }
但是并没有去清理WebServer类中的用户的定时器,当定时器超时时,还会再次关闭相同的socket,就导致多次关闭同一个文件描述符
void cb_func(client_data *user_data) { epoll_ctl(Utils::u_epollfd, EPOLL_CTL_DEL, user_data->sockfd, 0); assert(user_data); close(user_data->sockfd); http_conn::m_user_count--; }
还是说有什么处理我没看到?求教!
The text was updated successfully, but these errors were encountered:
No branches or pull requests
http_conn::close_conn成员调用后会关闭客户端socket
调用http_conn::close_conn成员在这里
但是并没有去清理WebServer类中的用户的定时器,当定时器超时时,还会再次关闭相同的socket,就导致多次关闭同一个文件描述符
还是说有什么处理我没看到?求教!
The text was updated successfully, but these errors were encountered: