Skip to content

Commit ca9e8ad

Browse files
committed
fix(network):1.11.4, 修复Http服务,在client端异常断开时,出现断言的问题
1 parent bedc507 commit ca9e8ad

File tree

5 files changed

+17
-12
lines changed

5 files changed

+17
-12
lines changed

modules/network/buffered_fd.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -236,10 +236,9 @@ void BufferedFd::onReadCallback(short)
236236
}
237237
} else { //! 读出错了
238238
if (errno != EAGAIN) {
239-
sp_read_event_->disable();
240-
if (error_cb_) {
239+
if (read_error_cb_) {
241240
++cb_level_;
242-
error_cb_(errno);
241+
read_error_cb_(errno);
243242
--cb_level_;
244243
} else
245244
LogWarn("read error, rsize:%d, errno:%d, %s", rsize, errno, strerror(errno));
@@ -267,9 +266,9 @@ void BufferedFd::onWriteCallback(short)
267266
if (wsize >= 0) {
268267
send_buff_.hasRead(wsize);
269268
} else {
270-
if (error_cb_) {
269+
if (write_error_cb_) {
271270
++cb_level_;
272-
error_cb_(errno);
271+
write_error_cb_(errno);
273272
--cb_level_;
274273
} else
275274
LogWarn("write error, wsize:%d, errno:%d, %s", wsize, errno, strerror(errno));

modules/network/buffered_fd.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,10 @@ class BufferedFd : public ByteStream {
6464
void setSendCompleteCallback(const SendCompleteCallback &func) { send_complete_cb_ = func; }
6565
//! 设置当读到0字节数据时回调函数
6666
void setReadZeroCallback(const ReadZeroCallback &func) { read_zero_cb_ = func; }
67-
//! 设置当遇到错误时的回调函数
68-
void setErrorCallback(const ErrorCallback &func) { error_cb_ = func; }
67+
//! 设置当读时遇到错误时的回调函数
68+
void setReadErrorCallback(const ErrorCallback &func) { read_error_cb_ = func; }
69+
//! 设置当写时遇到错误时的回调函数
70+
void setWriteErrorCallback(const ErrorCallback &func) { write_error_cb_ = func; }
6971

7072
//! 实现 ByteStream 的接口
7173
virtual void setReceiveCallback(const ReceiveCallback &func, size_t threshold) override;
@@ -104,7 +106,8 @@ class BufferedFd : public ByteStream {
104106
ReceiveCallback receive_cb_;
105107
SendCompleteCallback send_complete_cb_;
106108
ReadZeroCallback read_zero_cb_;
107-
ErrorCallback error_cb_;
109+
ErrorCallback read_error_cb_;
110+
ErrorCallback write_error_cb_;
108111

109112
ByteStream *wp_receiver_ = nullptr;
110113

modules/network/tcp_connection.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ TcpConnection::TcpConnection(event::Loop *wp_loop, SocketFd fd, const SockAddr &
3434
{
3535
sp_buffered_fd_->initialize(fd);
3636
sp_buffered_fd_->setReadZeroCallback(std::bind(&TcpConnection::onSocketClosed, this));
37-
sp_buffered_fd_->setErrorCallback(std::bind(&TcpConnection::onError, this, _1));
37+
sp_buffered_fd_->setReadErrorCallback(std::bind(&TcpConnection::onReadError, this, _1));
3838

3939
sp_buffered_fd_->enable();
4040
}
@@ -155,8 +155,11 @@ void TcpConnection::onSocketClosed()
155155
}
156156
}
157157

158-
void TcpConnection::onError(int errnum)
158+
void TcpConnection::onReadError(int errnum)
159159
{
160+
if (errnum == ECONNRESET)
161+
return;
162+
160163
LogNotice("errno:%d, %s", errnum, strerror(errnum));
161164
onSocketClosed();
162165
}

modules/network/tcp_connection.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class TcpConnection : public ByteStream {
6767

6868
protected:
6969
void onSocketClosed();
70-
void onError(int errnum);
70+
void onReadError(int errnum);
7171

7272
private:
7373
explicit TcpConnection(event::Loop *wp_loop, SocketFd fd, const SockAddr &peer_addr);

version.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@
2121
# TBOX版本号
2222
TBOX_VERSION_MAJOR := 1
2323
TBOX_VERSION_MINOR := 11
24-
TBOX_VERSION_REVISION := 3
24+
TBOX_VERSION_REVISION := 4

0 commit comments

Comments
 (0)