An Establish request may be rejected with a reason of AlreadyEstablished. However, there is no explicit error code for a redundant Negotiate. Suggest adding AlreadyNegotiated to NegotiationRejectCode.
Also, the spec says that any rejection of Negotiate should result in immediate disconnection. It should be explicit about what happens in case of Establish rejection. Also, immediate disconnection? On one hand, a redundant request seems idempotent. On the other hand, perhaps it is dangerous if a client does not know its correct session state.
An Establish request may be rejected with a reason of AlreadyEstablished. However, there is no explicit error code for a redundant Negotiate. Suggest adding AlreadyNegotiated to NegotiationRejectCode.
Also, the spec says that any rejection of Negotiate should result in immediate disconnection. It should be explicit about what happens in case of Establish rejection. Also, immediate disconnection? On one hand, a redundant request seems idempotent. On the other hand, perhaps it is dangerous if a client does not know its correct session state.