passepartoutvpn / tunnelkit

VPN client library for Apple platforms.
GNU General Public License v3.0
9 stars 8 forks source link

Suggestion to improve usability of VPN notification observation #413

Open tomasjablonskis opened 9 months ago

tomasjablonskis commented 9 months ago

Summary

While observing the VPN status notification using NotificationCenter and this libraries VPNNotification struct app crashes when attempting to retrieve a value that does not currently exist.

Steps to reproduce

Start observing VPN status using:

NotificationCenter.default.addObserver(
    self,
    selector: #selector(...),
    name: VPNNotification.didChangeStatus,
    object: nil
)

Connect to VPN and try to retrieve notification.vpnError in your notification reciever.

What is the current bug behavior?

App crashes with uncatchable exception (fatalError(...)).

What is the expected correct behavior?

A catchable exception is thrown.

Relevant logs and/or screenshots

image

Possible fixes suggested remediation

The least you can do is instead of using fatalError(...) if value does not exist in userInfo throw a catchable exception, but would prefer to somehow recieve an enum/result value of either error/status in VPN status notification.