3.2.5.4 Receiving a REQUEST Message

When the REQUEST message is received for a given cloud, the receiving node MUST perform the following steps:

  1. Check whether the REQUEST message conforms to the syntax as specified in section 2.2.2.3, and drop the message if not. If the protocol is executing in membership or confidential security mode, pass the REQUEST message to the SecurityModule for verification of the Credential and Signature fields. If verification fails, drop the message. Otherwise, continue processing as follows.

  2. Look for an entry in the cloud's Conversation Table corresponding to the sender's IP address and port. If none is found, ignore the REQUEST message. Otherwise, continue processing as follows.

  3. Attempt to verify that the value of the Nonce field in the REQUEST message is valid. This MUST be done by performing a SHA-1 [RFC3174] hash on the nonce and comparing it with the Hashed Nonce stored in the conversation entry. If they do not match, further processing MUST be stopped and the message MUST be silently dropped. Otherwise, continue processing as follows.

  4. Reply with an ACK message to the sender of the REQUEST message to indicate receipt and to avoid retransmission of the REQUEST message.

  5. The node MUST then send a FLOOD message, with the D flag set, for each key that is listed in the REQUEST message and delete the entry from the Conversation Table.