This is an automated email from the ASF dual-hosted git repository.
lorinlee pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-brpc.git
The following commit(s) were added to refs/heads/master by this push:
new 7c710511 Fix stream will respond received feedback frame with RST
frame when closed
new a6de1a98 Merge pull request #1826 from
jenrryyou/fix_stream_feedback_will_send_rst
7c710511 is described below
commit 7c7105113ba232a5fb22dad0fa50648dba2d49e2
Author: youzhiyuan <[email protected]>
AuthorDate: Sun Jul 3 09:29:23 2022 +0800
Fix stream will respond received feedback frame with RST frame when closed
---
src/brpc/policy/streaming_rpc_protocol.cpp | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/brpc/policy/streaming_rpc_protocol.cpp
b/src/brpc/policy/streaming_rpc_protocol.cpp
index df47032d..91b71c63 100644
--- a/src/brpc/policy/streaming_rpc_protocol.cpp
+++ b/src/brpc/policy/streaming_rpc_protocol.cpp
@@ -108,7 +108,9 @@ ParseResult ParseStreamingMessage(butil::IOBuf* source,
&& fm.frame_type() != FRAME_TYPE_CLOSE
&& fm.frame_type() != FRAME_TYPE_FEEDBACK)
<< "Fail to find stream=" << fm.stream_id();
- if (fm.has_source_stream_id()) {
+ // It's normal that the stream is closed before receiving feedback
frames from peer.
+ // In this case, RST frame should not be sent to peer, otherwise
on-fly data can be lost.
+ if (fm.has_source_stream_id() && fm.frame_type() !=
FRAME_TYPE_FEEDBACK) {
SendStreamRst(socket, fm.source_stream_id());
}
break;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]