all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH proxmox_dart_api_client] fix: ios: add type check to catch `NSErrorClientException`
@ 2025-10-01  9:52 Shan Shaji
  2025-10-17  7:40 ` Dominik Csapak
  0 siblings, 1 reply; 4+ messages in thread
From: Shan Shaji @ 2025-10-01  9:52 UTC (permalink / raw)
  To: pve-devel

The `NSErrorClientException` catch clause was not being executed because
it's a subtype of `ClientException`. This resulted in showing the
actual error from the package instead of our custom error message when
the SSL/TLS handshake failed. Fixed the issue by adding a type check
inside the `ClientException` catch clause.

Signed-off-by: Shan Shaji <s.shaji@proxmox.com>
---
 lib/src/authenticate.dart | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/lib/src/authenticate.dart b/lib/src/authenticate.dart
index 04f363f..aaae50b 100644
--- a/lib/src/authenticate.dart
+++ b/lib/src/authenticate.dart
@@ -61,12 +61,12 @@ Future<ProxmoxApiClient> authenticate(
     if (e.message.contains('net::ERR_CERT_AUTHORITY_INVALID')) {
       throw HandshakeException(e.message);
     }
-    rethrow;
-  } on NSErrorClientException catch (e) {
+
     // Treat untrusted server certificate (-1202) as a handshake failure.
-    if (e.error.code == -1202) {
+    if (e is NSErrorClientException && e.error.code == -1202) {
       throw HandshakeException(e.message);
     }
+
     rethrow;
   }
 }
@@ -91,12 +91,12 @@ Future<List<PveAccessDomainModel?>> accessDomains(
     if (e.message.contains('net::ERR_CERT_AUTHORITY_INVALID')) {
       throw HandshakeException(e.message);
     }
-    rethrow;
-  } on NSErrorClientException catch (e) {
+
     // Treat untrusted server certificate (-1202) as a handshake failure.
-    if (e.error.code == -1202) {
+    if (e is NSErrorClientException && e.error.code == -1202) {
       throw HandshakeException(e.message);
     }
+
     rethrow;
   }
 }
-- 
2.50.1



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [pve-devel] [PATCH proxmox_dart_api_client] fix: ios: add type check to catch `NSErrorClientException`
  2025-10-01  9:52 [pve-devel] [PATCH proxmox_dart_api_client] fix: ios: add type check to catch `NSErrorClientException` Shan Shaji
@ 2025-10-17  7:40 ` Dominik Csapak
  2025-10-17 11:09   ` Shan Shaji
  2025-10-17 11:51   ` Shan Shaji
  0 siblings, 2 replies; 4+ messages in thread
From: Dominik Csapak @ 2025-10-17  7:40 UTC (permalink / raw)
  To: Proxmox VE development discussion, Shan Shaji

wouldn't it be easier and more robust if we simply reverse the two
catch blocks?

e.g

try {
} on... {
...
} on NSErrorClientException catch (e) {
...
} on http.ClientException catch (e) {
...
}

?

On 10/1/25 11:52 AM, Shan Shaji wrote:
> The `NSErrorClientException` catch clause was not being executed because
> it's a subtype of `ClientException`. This resulted in showing the
> actual error from the package instead of our custom error message when
> the SSL/TLS handshake failed. Fixed the issue by adding a type check
> inside the `ClientException` catch clause.
> 
> Signed-off-by: Shan Shaji <s.shaji@proxmox.com>
> ---
>   lib/src/authenticate.dart | 12 ++++++------
>   1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/lib/src/authenticate.dart b/lib/src/authenticate.dart
> index 04f363f..aaae50b 100644
> --- a/lib/src/authenticate.dart
> +++ b/lib/src/authenticate.dart
> @@ -61,12 +61,12 @@ Future<ProxmoxApiClient> authenticate(
>       if (e.message.contains('net::ERR_CERT_AUTHORITY_INVALID')) {
>         throw HandshakeException(e.message);
>       }
> -    rethrow;
> -  } on NSErrorClientException catch (e) {
> +
>       // Treat untrusted server certificate (-1202) as a handshake failure.
> -    if (e.error.code == -1202) {
> +    if (e is NSErrorClientException && e.error.code == -1202) {
>         throw HandshakeException(e.message);
>       }
> +
>       rethrow;
>     }
>   }
> @@ -91,12 +91,12 @@ Future<List<PveAccessDomainModel?>> accessDomains(
>       if (e.message.contains('net::ERR_CERT_AUTHORITY_INVALID')) {
>         throw HandshakeException(e.message);
>       }
> -    rethrow;
> -  } on NSErrorClientException catch (e) {
> +
>       // Treat untrusted server certificate (-1202) as a handshake failure.
> -    if (e.error.code == -1202) {
> +    if (e is NSErrorClientException && e.error.code == -1202) {
>         throw HandshakeException(e.message);
>       }
> +
>       rethrow;
>     }
>   }



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [pve-devel] [PATCH proxmox_dart_api_client] fix: ios: add type check to catch `NSErrorClientException`
  2025-10-17  7:40 ` Dominik Csapak
@ 2025-10-17 11:09   ` Shan Shaji
  2025-10-17 11:51   ` Shan Shaji
  1 sibling, 0 replies; 4+ messages in thread
From: Shan Shaji @ 2025-10-17 11:09 UTC (permalink / raw)
  To: Dominik Csapak, Proxmox VE development discussion

On Fri Oct 17, 2025 at 9:40 AM CEST, Dominik Csapak wrote:
> wouldn't it be easier and more robust if we simply reverse the two
> catch blocks?
> e.g

I think, yes that's better. Will send an updated patch. 

Since `NsClientErrorException` was a subclass i added the additional check
inside the ClientErrorException but adding the seperate on clauses
branches are more readable and clear. Thank you!

>
> try {
> } on... {
> ...
> } on NSErrorClientException catch (e) {
> ...
> } on http.ClientException catch (e) {
> ...
> }
>
> ?
>
> On 10/1/25 11:52 AM, Shan Shaji wrote:
>> The `NSErrorClientException` catch clause was not being executed because
>> it's a subtype of `ClientException`. This resulted in showing the
>> actual error from the package instead of our custom error message when
>> the SSL/TLS handshake failed. Fixed the issue by adding a type check
>> inside the `ClientException` catch clause.
>> 
>> Signed-off-by: Shan Shaji <s.shaji@proxmox.com>
>> ---
>>   lib/src/authenticate.dart | 12 ++++++------
>>   1 file changed, 6 insertions(+), 6 deletions(-)
>> 
>> diff --git a/lib/src/authenticate.dart b/lib/src/authenticate.dart
>> index 04f363f..aaae50b 100644
>> --- a/lib/src/authenticate.dart
>> +++ b/lib/src/authenticate.dart
>> @@ -61,12 +61,12 @@ Future<ProxmoxApiClient> authenticate(
>>       if (e.message.contains('net::ERR_CERT_AUTHORITY_INVALID')) {
>>         throw HandshakeException(e.message);
>>       }
>> -    rethrow;
>> -  } on NSErrorClientException catch (e) {
>> +
>>       // Treat untrusted server certificate (-1202) as a handshake failure.
>> -    if (e.error.code == -1202) {
>> +    if (e is NSErrorClientException && e.error.code == -1202) {
>>         throw HandshakeException(e.message);
>>       }
>> +
>>       rethrow;
>>     }
>>   }
>> @@ -91,12 +91,12 @@ Future<List<PveAccessDomainModel?>> accessDomains(
>>       if (e.message.contains('net::ERR_CERT_AUTHORITY_INVALID')) {
>>         throw HandshakeException(e.message);
>>       }
>> -    rethrow;
>> -  } on NSErrorClientException catch (e) {
>> +
>>       // Treat untrusted server certificate (-1202) as a handshake failure.
>> -    if (e.error.code == -1202) {
>> +    if (e is NSErrorClientException && e.error.code == -1202) {
>>         throw HandshakeException(e.message);
>>       }
>> +
>>       rethrow;
>>     }
>>   }



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [pve-devel] [PATCH proxmox_dart_api_client] fix: ios: add type check to catch `NSErrorClientException`
  2025-10-17  7:40 ` Dominik Csapak
  2025-10-17 11:09   ` Shan Shaji
@ 2025-10-17 11:51   ` Shan Shaji
  1 sibling, 0 replies; 4+ messages in thread
From: Shan Shaji @ 2025-10-17 11:51 UTC (permalink / raw)
  To: Dominik Csapak, Proxmox VE development discussion

superseded by v2: https://lore.proxmox.com/pve-devel/20251017113428.51347-1-s.shaji@proxmox.com/T/#u


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-10-17 11:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-10-01  9:52 [pve-devel] [PATCH proxmox_dart_api_client] fix: ios: add type check to catch `NSErrorClientException` Shan Shaji
2025-10-17  7:40 ` Dominik Csapak
2025-10-17 11:09   ` Shan Shaji
2025-10-17 11:51   ` Shan Shaji

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal