diff options
author | Szczepan Zalega <szczepan@nitrokey.com> | 2016-10-14 13:00:30 +0200 |
---|---|---|
committer | Szczepan Zalega <szczepan@nitrokey.com> | 2016-10-19 16:34:10 +0200 |
commit | 48786a730bbbdd75719069e81e620eb916e98be0 (patch) | |
tree | 1758108ca7111bab01b9927c6981bd8f901e206f | |
parent | 443e50b1a447dee6181aa721fb310060cecd63ae (diff) | |
download | libnitrokey-48786a730bbbdd75719069e81e620eb916e98be0.tar.gz libnitrokey-48786a730bbbdd75719069e81e620eb916e98be0.tar.bz2 |
C/C++ API: make connection and disconnection more robust
Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
-rw-r--r-- | NitrokeyManager.cc | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/NitrokeyManager.cc b/NitrokeyManager.cc index 872ebb4..e5d912d 100644 --- a/NitrokeyManager.cc +++ b/NitrokeyManager.cc @@ -45,7 +45,7 @@ namespace nitrokey{ } bool NitrokeyManager::connect() { - device = nullptr; + this->disconnect(); vector< shared_ptr<Device> > devices = { make_shared<Stick10>(), make_shared<Stick20>() }; for( auto & d : devices ){ if (d->connect()){ @@ -57,7 +57,8 @@ namespace nitrokey{ bool NitrokeyManager::connect(const char *device_model) { - switch (device_model[0]){ + this->disconnect(); + switch (device_model[0]){ case 'P': device = make_shared<Stick10>(); break; @@ -78,7 +79,12 @@ namespace nitrokey{ } bool NitrokeyManager::disconnect() { - return device->disconnect(); + if (device == nullptr){ + return false; + } + const auto res = device->disconnect(); + device = nullptr; + return res; } void NitrokeyManager::set_debug(bool state) { |