3.2.5.6 Receiving a LinkViewerToMacOpenFile Message

The server MUST first follow the steps specified in section 3.2.5.1. Also, the server MUST verify that the LinkViewerToMacOpenFile message adheres to the syntax specified in section 2.2.4.21.

The server MUST check with the higher layer to make sure that the file path that the client specified in the fileName field of the LinkViewerToMacOpenFile message is valid. If the message is not valid, this is an error, and the server MUST send a LinkMacToViewerReportOpenFile message in response, and the hr field of the message MUST be set to indicate that an error has occurred.

If the higher layer indicates that the client is to be redirected to a different server, or to a proxy server, the server MUST send a LinkMacToViewerReportRedirect (section 2.2.4.9) message. After sending a LinkMacToViewerReportRedirect message, the server MUST delete all session states and close the TCP connection.

If there is no error in processing the LinkViewerToMacOpenFile message, and the server has not sent a LinkMacToViewerReportRedirect message, the server MUST generate a numerical identifier for the resource identified by the fileName field and store it in the File-ID variable of the abstract data model.

If the LinkViewerToMacOpenFile message includes a nonzero size tokenData field, and if the server requires identification for the resource specified in the fileName field, the server MUST process the credentials in the tokenData field using the same authentication mechanism that the server previously specified in the AuthenPackage field of the LinkMacToViewerReportConnectedEX message. If the authentication algorithm requires that a challenge be sent (for example, because the credentials in the tokenData field are incorrect), the server MUST send a LinkMacToViewerSecurityChallenge (section 2.2.4.14) message.

If the value of the cbtoken field in the LinkViewerToMacOpenFile message is 0x00000000, and if the server requires identification for the resource specified in the fileName field, the server MUST send a LinkMacToViewerSecurityChallenge message. In this case, if the client's major version number is less than 8, as specified by the Client-Version variable, the authentication algorithm used when generating the value for the pToken field in the LinkMacToViewerSecurityChallenge message MUST be the same as what the server previously specified in the AuthenPackage field of the LinkMacToViewerReportConnectedEX message. If the client's major version number is greater than or equal to 8, the authentication algorithm used when generating the value for the pToken field in the LinkMacToViewerSecurityChallenge message MUST be either Basic, as specified in [RFC2617], or NTLM, as specified in [MS-NLMP].

If the server sent a LinkMacToViewerSecurityChallenge message, the server MUST wait for a LinkViewerToMacSecurityResponse message to be received. How to process this message is specified in section 3.2.5.7.

If the server did not send a LinkMacToViewerSecurityChallenge message, the server MUST send a LinkMacToViewerReportOpenFile (section 2.2.4.7) message.

The value of the openFileId field of the LinkMacToViewerReportOpenFile message MUST be set to the value of the File-ID variable in the abstract data model.

If the server sent a LinkMacToViewerReportOpenFile message, the server MUST wait for a LinkViewerToMacReadBlock message to be received. How to process this message is specified in section 3.2.5.8.