3.1.5.2.2 Ping Mechanism

If the session is not being created in response to a Session Retry Connect Timer Event (section 3.1.6.1), the initiator MAY send a Ping Request, as specified in Ping Message (section 2.1.2) to the acceptor and receive a Ping Response, as specified in Ping Message (section 2.1.2), before attempting to establish a session.<56>This mechanism provides the initiator with information about whether a connection is likely to be accepted. The result in the Ping Response is not a guarantee, because the acceptor state could change before it receives the EstablishConnection Packet (section 2.2.3) from the initiator. If the initiator sends a Ping Request, it MUST do the following:

  • Raise a Send Ping Request (section 3.1.7.6) event with the following argument:

  • If the value of rStatus returned by the Send Ping Request event is TRUE, proceed to Sending an EstablishConnection Request Packet (section 3.1.5.2.3).

  • If the value of rStatus returned by the Send Ping Request event is FALSE:

    • Append an entry to the OutgoingQueueReference.ConnectionHistory array. The Status ADM attribute of the array entry MUST be set to PingFailure; the ConnectionHistoryTime ADM attribute of the array entry MUST be set to the current time; the Error ADM attribute of the array entry MUST be set to an HRESULT value indicating the error; and the AddressList ADM attribute of the array entry MUST be set to the RemoteQMAddress ADM element.

    • Start the Session Retry Connect Timer (section 3.1.2.3) if the OutgoingMessageTable ADM element is not empty, and take no further action.