Windows: Do not mark server down due to Store / Fetch Data protocol error
authorJeffrey Altman <jaltman@secure-endpoints.com>
Sat, 19 Sep 2009 17:52:32 +0000 (13:52 -0400)
committerJeffrey Altman <jaltman|account-1000011@unknown>
Sun, 20 Sep 2009 12:47:25 +0000 (05:47 -0700)
commit427b27a87fd34035f855ff8b1b9ec3ad618829c8
tree5413be449d2f9c2e4766e2d84936ce822293e309
parent5b5dc4a85bde6e959a0943ac694833784a838164
Windows: Do not mark server down due to Store / Fetch Data protocol error

When performing a StoreData or FetchData operation there are
several data validation checks performed to ensure that the
lengths of data obtained with rx_Write and rx_Read are consistent
with the RXAFS_FetchData and RXAFS_StoreData protocol operations.
When an inconsistency is detected the cache manager terminates the
call and returns an error to the caller which is passed to cm_Analyze().
The cache manager was returning -1 as the error code which is
equivalent to RX_CALL_DEAD which in turn will result in the server
being marked down.

This commit makes the following changes:

 . add trace logging to permit monitoring this case

 . instead of returning -1 return either RX_PROTOCOL_ERROR or RX_EOF
   depending on the situation

 . in cm_Analyze do not mark a server as down for rx errors other
   than RX_CALL_DEAD.  Instead, force a new connection and retry
   until the request timeout limit is reached.

LICENSE MIT

Reviewed-on: http://gerrit.openafs.org/470
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
src/WINNT/afsd/cm_conn.c
src/WINNT/afsd/cm_dcache.c