Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
Description
In the method TcrConnection::initTcrConnection, the following block of code appears:
switch (acceptanceCode[0]) { case REPLY_OK: case SUCCESSFUL_SERVER_TO_CLIENT: LOGFINER("Handshake reply: %u,%u,%u", acceptanceCode[0], serverQueueStatus[0], recvMsgLen2); if (isClientNotification) readHandshakeInstantiatorMsg(connectTimeout); break; case REPLY_AUTHENTICATION_FAILED: { AuthenticationFailedException ex( reinterpret_cast<char*>(recvMessage.data())); m_conn.reset(); throwException(ex); } case REPLY_AUTHENTICATION_REQUIRED: { AuthenticationRequiredException ex( reinterpret_cast<char*>(recvMessage.data())); m_conn.reset(); throwException(ex); } case REPLY_DUPLICATE_DURABLE_CLIENT: { DuplicateDurableClientException ex( reinterpret_cast<char*>(recvMessage.data())); m_conn.reset(); throwException(ex); } case REPLY_REFUSED: case REPLY_INVALID: case UNSUCCESSFUL_SERVER_TO_CLIENT: { LOGERROR("Handshake rejected by server[%s]: %s", m_endpointObj->name().c_str(), reinterpret_cast<char*>(recvMessage.data())); auto message = std::string("TcrConnection::TcrConnection: ") + "Handshake rejected by server: " + reinterpret_cast<char*>(recvMessage.data()); CacheServerException ex(message); m_conn.reset(); throw ex; }
These response codes are unique to the server handshake, and not used anywhere else in the code. We need to remove the #defines for them and put them in a proper enum class.
Attachments
Issue Links
- links to