Skip to content

Commit c12e5ff

Browse files
committed
fix: catch discard error and return
Signed-off-by: ningmingxiao <ning.mingxiao@zte.com.cn>
1 parent ea3d589 commit c12e5ff

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

channel.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ func (ch *channel) recv() (messageHeader, []byte, error) {
125125

126126
if mh.Length > uint32(messageLengthMax) {
127127
if _, err := ch.br.Discard(int(mh.Length)); err != nil {
128-
return mh, nil, fmt.Errorf("failed to discard after receiving oversized message: %w", err)
128+
return mh, nil, DiscardError(fmt.Errorf("discard failed %w ,message length %v maximum message size %v", err, mh.Length, messageLengthMax))
129129
}
130130

131131
return mh, nil, status.Errorf(codes.ResourceExhausted, "message length %v exceed maximum message size of %v", mh.Length, messageLengthMax)

errors.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,3 +78,20 @@ func (e *OversizedMessageErr) RejectedLength() int {
7878
func (*OversizedMessageErr) MaximumLength() int {
7979
return messageLengthMax
8080
}
81+
82+
type DiscardErr struct {
83+
err error
84+
}
85+
86+
func (d *DiscardErr) Error() string {
87+
return d.err.Error()
88+
}
89+
90+
func DiscardError(err error) error {
91+
if err == nil {
92+
return nil
93+
}
94+
return &DiscardErr{
95+
err: err,
96+
}
97+
}

server.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -559,6 +559,11 @@ func (c *serverConn) run(sctx context.Context) {
559559
// requests, so that the client connection is closed
560560
return
561561
}
562+
563+
if _, ok := err.(*DiscardErr); ok {
564+
log.G(ctx).WithError(err).Error("discard failed")
565+
return
566+
}
562567
log.G(ctx).WithError(err).Error("error receiving message")
563568
// else, initiate shutdown
564569
case <-shutdown:

0 commit comments

Comments
 (0)