UDP EstablishmentManager tries to resend expired messages
Opened 8 months ago
Last modified 7 months ago
#2771newdefect
UDP EstablishmentManager tries to resend expired messages
Reported by:joggerOwned by:zzz Priority: minor Milestone: undecided Component: router/transport Version: 0.9.47 Keywords:
Cc:
Parent Tickets:
Sensitive: no
Description
processExpired() calls failed(), which in turn goes to afterSend(). There the message gets requeued, is found as invalid in OutNetMessagePool?.add() and finally arrives at OutboundMessageRegistry?.unregisterPending() with a null reply selector.
It is clear that add() misses the reply selector null check that is always prepended to unregisterPending() elsewhere.
However I think the message should not be resent at all. Furthermore afterSend() checks message expiration which obviously gives a different result than the term "expired (rtime > 0 && rtime + OB_MESSAGE_TIMEOUT ⇐ now)" used in handleOutbound().
To verify throw NPE in unregisterPending() for a null reply selector and wait hours/days.