lib/fetcher-soup: Map more SoupStatus codes to known GIOErrors
This allows the retry code in ostree-repo-pull.c to recover from (for example) timeouts at the libsoup layer in the stack, as well as from the GSocket layer in the stack. Signed-off-by: Philip Withnall <withnall@endlessm.com> Closes: #1594 Approved by: jlebon
This commit is contained in:
parent
938055392f
commit
224f3cdd24
|
|
@ -1072,11 +1072,28 @@ on_request_sent (GObject *object,
|
||||||
GIOErrorEnum code;
|
GIOErrorEnum code;
|
||||||
switch (msg->status_code)
|
switch (msg->status_code)
|
||||||
{
|
{
|
||||||
case 404:
|
case SOUP_STATUS_NOT_FOUND:
|
||||||
case 403:
|
case SOUP_STATUS_FORBIDDEN:
|
||||||
case 410:
|
case SOUP_STATUS_GONE:
|
||||||
code = G_IO_ERROR_NOT_FOUND;
|
code = G_IO_ERROR_NOT_FOUND;
|
||||||
break;
|
break;
|
||||||
|
case SOUP_STATUS_CANCELLED:
|
||||||
|
code = G_IO_ERROR_CANCELLED;
|
||||||
|
break;
|
||||||
|
case SOUP_STATUS_REQUEST_TIMEOUT:
|
||||||
|
code = G_IO_ERROR_TIMED_OUT;
|
||||||
|
break;
|
||||||
|
case SOUP_STATUS_CANT_RESOLVE:
|
||||||
|
case SOUP_STATUS_CANT_CONNECT:
|
||||||
|
code = G_IO_ERROR_HOST_NOT_FOUND;
|
||||||
|
break;
|
||||||
|
case SOUP_STATUS_IO_ERROR:
|
||||||
|
#if !GLIB_CHECK_VERSION(2, 44, 0)
|
||||||
|
code = G_IO_ERROR_BROKEN_PIPE;
|
||||||
|
#else
|
||||||
|
code = G_IO_ERROR_CONNECTION_CLOSED;
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
code = G_IO_ERROR_FAILED;
|
code = G_IO_ERROR_FAILED;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue