Package Kit: convert HTTP error code only on BHttpRequest

Other request types exists such as BFileRequest.

Fixes #15675.

Change-Id: Ib2e07fad4dd9f682d2b9fc0cdbf0ca60ecd3adfb
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2200
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Reviewed-by: François Revol <revol@free.fr>
This commit is contained in:
X512 2020-02-05 15:51:27 +09:00 committed by Adrien Destugues
parent 5f4f455cfd
commit b3de8bea44

View File

@ -129,51 +129,53 @@ FetchFileJob::RequestCompleted(BUrlRequest* request, bool success)
fError = request->Status();
if (success) {
const BHttpResult& outResult = dynamic_cast<const BHttpResult&>
(request->Result());
uint16 code = outResult.StatusCode();
uint16 codeClass = BHttpRequest::StatusCodeClass(code);
const BHttpResult* httpResult = dynamic_cast<const BHttpResult*>
(&request->Result());
if (httpResult != NULL) {
uint16 code = httpResult->StatusCode();
uint16 codeClass = BHttpRequest::StatusCodeClass(code);
switch (codeClass) {
case B_HTTP_STATUS_CLASS_CLIENT_ERROR:
case B_HTTP_STATUS_CLASS_SERVER_ERROR:
fError = B_IO_ERROR;
break;
default:
fError = B_OK;
break;
}
switch (code) {
case B_HTTP_STATUS_OK:
fError = B_OK;
break;
case B_HTTP_STATUS_PARTIAL_CONTENT:
fError = B_PARTIAL_READ;
break;
case B_HTTP_STATUS_REQUEST_TIMEOUT:
case B_HTTP_STATUS_GATEWAY_TIMEOUT:
fError = B_DEV_TIMEOUT;
break;
case B_HTTP_STATUS_NOT_IMPLEMENTED:
case B_HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE:
fError = B_NOT_SUPPORTED;
break;
case B_HTTP_STATUS_UNAUTHORIZED:
fError = B_PERMISSION_DENIED;
break;
case B_HTTP_STATUS_FORBIDDEN:
case B_HTTP_STATUS_METHOD_NOT_ALLOWED:
case B_HTTP_STATUS_NOT_ACCEPTABLE:
fError = B_NOT_ALLOWED;
break;
case B_HTTP_STATUS_NOT_FOUND:
fError = B_NAME_NOT_FOUND;
break;
case B_HTTP_STATUS_BAD_GATEWAY:
fError = B_BAD_DATA;
break;
default:
break;
switch (codeClass) {
case B_HTTP_STATUS_CLASS_CLIENT_ERROR:
case B_HTTP_STATUS_CLASS_SERVER_ERROR:
fError = B_IO_ERROR;
break;
default:
fError = B_OK;
break;
}
switch (code) {
case B_HTTP_STATUS_OK:
fError = B_OK;
break;
case B_HTTP_STATUS_PARTIAL_CONTENT:
fError = B_PARTIAL_READ;
break;
case B_HTTP_STATUS_REQUEST_TIMEOUT:
case B_HTTP_STATUS_GATEWAY_TIMEOUT:
fError = B_DEV_TIMEOUT;
break;
case B_HTTP_STATUS_NOT_IMPLEMENTED:
case B_HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE:
fError = B_NOT_SUPPORTED;
break;
case B_HTTP_STATUS_UNAUTHORIZED:
fError = B_PERMISSION_DENIED;
break;
case B_HTTP_STATUS_FORBIDDEN:
case B_HTTP_STATUS_METHOD_NOT_ALLOWED:
case B_HTTP_STATUS_NOT_ACCEPTABLE:
fError = B_NOT_ALLOWED;
break;
case B_HTTP_STATUS_NOT_FOUND:
fError = B_NAME_NOT_FOUND;
break;
case B_HTTP_STATUS_BAD_GATEWAY:
fError = B_BAD_DATA;
break;
default:
break;
}
}
}
}