Details
-
Bug
-
Status: Resolved
-
Resolution: Done
-
Bugzilla Migration
-
None
-
Operating System: All
Platform: All
-
6470
Description
In AbstractBGPSessionNegotiator, handleMessage() was able to be invoked by channel.pipeline().replace(..) recursively. So when handling a BGP message, it could happen that this.state gets out of sync and exception got thrown.
In handleOpen(..) of AbstractBGPSessionNegotiator, when we new a BGPSessionImpl(), we replace the handler in channel.pipeline() to change the extend message coder. If a message arrived during the replacement, another handleMessage() will be invoked (in the same thread). However, as the BGPSessionImpl hasn't returned and session is not set, handleMessage() will throw out a BGP_FSM error.
This is causing an intermittent failure in BGPDispatcherImplTest.