Handling Server Application Errors
If the server application successfully processes the uploaded file, the application should return 200. If the application does not return 200, the BITS client uses the error code to determine if the error is a transient error or fatal error.
All 3xx error codes are transient errors except 300 - 305 and 307, which are fatal errors. All 4xx error codes are fatal errors except for 408 and 409, which are transient errors. All 5xx error codes are transient errors except 501 and 505, which are fatal errors. All other HTTP codes are considered transient errors. Note that a 403 error code is the only error code that prevents BITS from posting the upload file to the server application again.
To retrieve the error, call the IBackgroundCopyError::GetError method. The error context will be BG_ERROR_CONTEXT_REMOTE_APPLICATION.