3.1.5.2.5 Receive SOLICIT_NEW

This message is sent by the connection initiator after it reaches the LINK_STATE_CONNECTED state, if the connection initiator has never synchronized with a node in the graph as indicated by the flag NeverConnected.

If the message fails to conform to any of the following conditions, then the message MUST be discarded unprocessed and the connection MUST be terminated.

  • The Message Size MUST be at least 0x0C.

  • The Inclusion Count MUST be either 0x00 or 0x01.

  • Either the Inclusion Count or the Exclusion Count MUST be 0.

  • (Inclusion Count + Exclusion Count) * 16 + Record Types Offset MUST be at most Message Size.

  • When both Inclusion Count and Exclusion Count are 0, all records MUST be synchronized.

If the message is received when the Link is not in the LINK_STATE_CONNECTED state, the message MUST be ignored, and the connection MUST be terminated.

Otherwise, in response to this message, the local node MUST perform the following actions:

  • If Inclusion Count is 0x01, the local node MUST start sending (see section 3.1.7.1) one FLOOD message (see section 3.1.7.1) for each record in the database whose Record Type matches the value in the Record Types field. Each FLOOD message MUST be constructed as specified in section 2.2.2.11. After all the FLOOD messages have been sent, a SYNC_END message MUST be sent (see section 3.1.7.1) with the Final flag set.

  • If Exclusion Count is nonzero, the local Node MUST, for each Record type not listed in Record Types:

    • Start sending (see section 3.1.7.1) one FLOOD message for each record of that Record Type. Each FLOOD message MUST be constructed as specified in section 2.2.2.11.

    • Send (see section 3.1.7.1) a SYNC_END message with the Final flag set if this is the last value not listed in Record Types, and with the Final flag not set otherwise.

    • When the local node sends a SYNC_END message with the Final flag set, it MUST set the SyncType flag on the connection to NONE.