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:
iAddress: the address resolved in destinationHostName as specified in Resolve Host Address (section 3.1.5.2.1).
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.