3.1.4.3 Receiving a REFRESH Message

This message is received by the server as part of a LnkSvrMessage request, as defined in section 3.1.4.1.

The server uses the FileID and VolumeID information in this request to mark entries in its ServerVolumeTable and FileTable as active. Marking these entries as active prevents them from being deleted as part of the TableMaintenanceTimer handling, as specified in section 3.1.5.

The message consists of a TRKSVR_CALL_REFRESH structure (defined in section 2.2.12.2), which contains an array of zero or more FileIDs and an array of zero or more VolumeIDs.

The server MUST set the cSources and cVolumes fields to zero in the TRKSVR_CALL_REFRESH structure to zero.

For each FileID in the adroidBirth array field, if there is an entry in the FileTable whose FileID field is equivalent to that request FileID, and the RecentTableUpdateCount is less than its maximum value, then:

  • The server MUST update the RefreshTime field for that entry in the FileTable with the value of the CurrentRefreshTime.

  • The server MUST increment the RecentTableUpdateCount.

For each VolumeID in the avolid array field in this request, if there is an entry in the ServerVolumeTable for this volume, the VolumeOwner field of that entry equals the RequestMachine, and the RecentTableUpdateCount is less than its maximum value, then:

  • The server MUST update the RefreshTime field with the value of the CurrentRefreshTime.

  • The server MUST increment the RecentTableUpdateCount.

If the RecentTableUpdateCount is found to be at its maximum value above, the server MUST discontinue processing of the message, and MUST return to the client with a failure return value.