@@ -254,7 +254,7 @@ type PortalMatrixMessage struct {
254
254
255
255
type outgoingMessage struct {
256
256
* event.Event
257
- Acked bool
257
+ AckedAt time. Time
258
258
Errored bool
259
259
Timeouted bool
260
260
}
@@ -390,7 +390,7 @@ func (portal *Portal) outgoingMessageTimeoutLoop() {
390
390
for range ticker .C {
391
391
portal .outgoingMessagesLock .Lock ()
392
392
for _ , out := range portal .outgoingMessages {
393
- if ! out .Timeouted && out .Acked && ! out .Errored && time .Since (time . UnixMilli ( out .Timestamp ) ) > 1 * time .Minute {
393
+ if ! out .Timeouted && ! out .AckedAt . IsZero () && ! out .Errored && time .Since (out .AckedAt ) > 1 * time .Minute {
394
394
go portal .sendStatusEvent (context .TODO (), out .ID , "" , errEchoTimeout , nil )
395
395
go portal .sendErrorMessage (context .TODO (), out .Event , errEchoTimeout , "message" , false , "" )
396
396
go portal .bridge .SendMessageCheckpoint (out .Event , status .MsgStepRemote , errEchoTimeout , status .MsgStatusTimeout , 0 )
@@ -2110,10 +2110,10 @@ func (portal *Portal) HandleMatrixMessage(sender *User, evt *event.Event, timing
2110
2110
go ms .sendMessageMetrics (ctx , sender , evt , err , "Error sending" , true )
2111
2111
} else if resp .Status != gmproto .SendMessageResponse_SUCCESS {
2112
2112
outgoingMsg .Errored = true
2113
- outgoingMsg .Acked = true
2113
+ outgoingMsg .AckedAt = time . Now ()
2114
2114
go ms .sendMessageMetrics (ctx , sender , evt , (* responseStatusError )(resp ), "Error sending" , true )
2115
2115
} else {
2116
- outgoingMsg .Acked = true
2116
+ outgoingMsg .AckedAt = time . Now ()
2117
2117
go ms .sendMessageMetrics (ctx , sender , evt , nil , "" , true )
2118
2118
}
2119
2119
}
0 commit comments