Life as a programmer can be tough. You search for hours what you are doing wrong just to find out everything is fine but the specification is wrong :-/ Cancelling a Broadsoft Broadworks OCI-P session via a LogoutRequest is such a case.
In a previous post, I walked you through the login sequence to create a new OCI-P session. It is good practice to cancel sessions when they are no longer used, for example when the user logs out.
Technically, there are two ways to cancel the session:
- Send a LogoutRequest OCIMessage and close the TCP/IP socket afterwards.
- Just close the TCP/IP socket.
Now, the first approach seems like the official approach. According to the OCI-P specification, a LogoutRequest should be answered by Broadworks Application Server (AS) with a SuccessResponse or an ErrorResponse. However, Broadworks is not responding to LogoutRequests, but it just silently kills the connection.
It took me several hours to figure out what’s wrong with my code. I was waiting for a response, but never got an answer. After digging through the Broadworks xtended developer forum, I came across a report by another developer with the exact same behavior. As it turns out, Broadworks is not responding to LogoutRequests.
It might be true that such a response would have no special meaning as there is no way to react to an error response in that case, but it is still bad design. Just because of this behavior, I now need a second helper function to send a request without reading a response. If Broadsoft is not willing to change that behavior, they should at least update the OCI-P specification to state when no response will be send.
Get in touch!
Want to learn more? Got questions? Something to add?Contact us!