envoyproxy / envoyproxy/envoy-mobile
Cronvoy: map Envoy Mobile internal errors to Cronet internal errors
- Dominant language
- Java
- Stars
- 566
- Forks
- 85
- PR merge metrics
- No merged PRs in 30d
Description
Cronet exposes 235 [internal errors](https://source.chromium.org/chromium/chromium/src/+/main:net/base/net_error_list.h) split in 9 categories. Cronet internal error codes are not guaranteed to be stable. However, some of those internal error codes are mapped to the public error code scheme, others are driving some business logic, and couples are used for tests only - having these properly mapped with Envoy Mobile internal error codes will likely avoid regressions. Following error codes should be considered:
- [```NAME_NOT_RESOLVED```](https://source.chromium.org/chromium/chromium/src/+/main:net/base/net_error_list.h;l=146-147) - mapped to public error code
- [```INTERNET_DISCONNECTED```]() - mapped to public error code
- [```NETWORK_CHANGED```](https://source.chromium.org/chromium/chromium/src/+/main:net/base/net_error_list.h;l=149-150) - mapped to public error code
- [```TIMED_OUT```](https://source.chromium.org/chromium/chromium/src/+/main:net/base/net_error_list.h;l=90-91) - mapped to public error code
- [```CONNECTION_CLOSED```](https://source.chromium.org/chromium/chromium/src/+/main:net/base/net_error_list.h;l=130-131) - mapped to public error code
- [```CONNECTION_TIMED_OUT```](https://source.chromium.org/chromium/chromium/src/+/main:net/base/net_error_list.h;l=193-194) - mapped to public error code
- [```CONNECTION_REFUSED```](https://source.chromium.org/chromium/chromium/src/+/main:net/base/net_error_list.h;l=136-137) - mapped to public error code
- [```CONNECTION_RESET```](https://source.chromium.org/chromium/chromium/src/+/main:net/base/net_error_list.h;l=133-134) - mapped to public error code
- [```ADDRESS_UNREACHABLE```](https://source.chromium.org/chromium/chromium/src/+/main:net/base/net_error_list.h;l=159-161) - mapped to public error code
- [```QUIC_PROTOCOL_ERROR```](https://source.chromium.org/chromium/chromium/src/+/main:net/base/net_error_list.h;l=709-710) - mapped to public error code
- [```CONTENT_LENGTH_MISMATCH```](https://source.chromium.org/chromium/chromium/src/+/main:net/base/net_error_list.h;l=701-703) - [testing](https://source.chromium.org/chromium/chromium/src/+/main:components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java;l=418?q=ERR_CONTENT_LENGTH_MISMATCH)
- [```HTTP2_PING_FAILED```](https://source.chromium.org/chromium/chromium/src/+/main:net/base/net_error_list.h;l=694-695) - [business logic](https://source.chromium.org/chromium/chromium/src/+/main:components/cronet/android/java/src/org/chromium/net/impl/BidirectionalStreamNetworkException.java)
- [```QUIC_HANDSHAKE_FAILED```](https://source.chromium.org/chromium/chromium/src/+/main:net/base/net_error_list.h;l=715-717) - [business logic](https://source.chromium.org/chromium/chromium/src/+/main:components/cronet/android/java/src/org/chromium/net/impl/BidirectionalStreamNetworkException.java)
- [```SSL_PINNED_KEY_NOT_IN_CERT_CHAIN```](https://source.chromium.org/chromium/chromium/src/+/main:net/base/net_error_list.h;l=307-301) - [testing](https://source.chromium.org/chromium/chromium/src/+/main:components/cronet/android/test/javatests/src/org/chromium/net/PkpTest.java;l=395?q=ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN)
- [```DISALLOWED_URL_SCHEME```](https://source.chromium.org/chromium/chromium/src/+/main:net/base/net_error_list.h;l=565-566) - [testing](https://source.chromium.org/chromium/chromium/src/+/main:components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java;l=215?q=ERR_DISALLOWED_URL_SCHEME)
Envoy Mobile does expose an internal error code, but will likely require more work:
- It not always populated, for example, when Envoy Mobile attempts to connect to this URL, "http://127.0.0.1:319", the request does end up as an error, as expected (that socket is purposely invalid). But the error does not provide much details. The internal error code is 0: ```'x-internal-error-code', '0'```, and the error message is an empty String.
- It does not provide the same error granularity.
Contributor guide
Assessment
This issue has not been assessed yet.