Refine QRCallback logic of request on server side 57/308057/2
authorYonggoo Kang <ygace.kang@samsung.com>
Fri, 15 Mar 2024 11:25:21 +0000 (20:25 +0900)
committerYonggoo Kang <ygace.kang@samsung.com>
Fri, 15 Mar 2024 12:02:17 +0000 (21:02 +0900)
- Prevent to access to nullptr
- Remove unnecessary exception types
- Remove duplicated code block
- Move the result log from GetUserData() to outside

Change-Id: If654b9bd568cf088df94ec55f51489ef579be381

srcs/common/exception.h
srcs/common/utils.h
srcs/server/request-ga.h
srcs/server/request-mc.h
srcs/server/request.h

index 144922ba37a905cf72e2620cc8210db62447063a..226b3edea34ac3442a4150f9581b173f0c26dfbd 100644 (file)
@@ -379,8 +379,6 @@ class ServiceException {
 public:
     DECLARE_EXCEPTION_TYPE(WA::Exception, Base)
     DECLARE_EXCEPTION_TYPE(Base, InvalidAction)
-    DECLARE_EXCEPTION_TYPE(Base, InvalidUserdata)
-    DECLARE_EXCEPTION_TYPE(Base, InvalidQRContents)
     DECLARE_EXCEPTION_TYPE(Base, InActive)
 };
 class ClientException {
index 31da31a2777d04a9c16a49103e1aa3e2e1859324..1965086b867570621f28b90a563ae01ebf9f467d 100644 (file)
@@ -58,14 +58,6 @@ int try_catch(F &&f) {
         LogError("WA::ServiceException::InvalidAction: " << e.DumpToString());
         std::cerr << "WA::ServiceException::InvalidAction: " << e.DumpToString() << std::endl;
         return WAUTHN_ERROR_INVALID_STATE;
-    } catch (const ServiceException::InvalidUserdata &e) {
-        LogError("WA::ServiceException::InvalidUserdata: " << e.DumpToString());
-        std::cerr << "WA::ServiceException::InvalidUserdata: " << e.DumpToString() << std::endl;
-        return WAUTHN_ERROR_INVALID_PARAMETER;
-    } catch (const ServiceException::InvalidQRContents &e) {
-        LogError("WA::ServiceException::InvalidQRContents: " << e.DumpToString());
-        std::cerr << "WA::ServiceException::InvalidQRContents: " << e.DumpToString() << std::endl;
-        return WAUTHN_ERROR_INVALID_PARAMETER;
     } catch (const ServiceException::InActive &e) {
         LogError("WA::ServiceException::InActive: " << e.DumpToString());
         std::cerr << "WA::ServiceException::InActive: " << e.DumpToString() << std::endl;
index 449b3b662d4bc7a551b2fd72afa17f70d71d5d51..87251835528cbf4703b44911a79b355e3e5e5f02 100644 (file)
@@ -33,7 +33,8 @@ public:
         wauthn_error_e result,
         void *user_data)
     {
-        user_data_s *userData = GetUserData(result, user_data);
+        LogDebug("result: " << wauthn_error_to_string(result));
+        user_data_s *userData = GetUserData(user_data);
         if (userData != nullptr)
         {
             MessageBuffer buffer(userData->service->GetSocketmanager()->newMessage());
index 09062bf2327e19457606b0adb13b65f7d36a5239..075407b021ab4ceae89235eb2e13f32ce8b98cd7 100644 (file)
@@ -33,7 +33,8 @@ public:
         wauthn_error_e result,
         void *user_data)
     {
-        user_data_s *userData = GetUserData(result, user_data);
+        LogDebug("result: " << wauthn_error_to_string(result));
+        user_data_s *userData = GetUserData(user_data);
         if (userData != nullptr)
         {
             MessageBuffer buffer(userData->service->GetSocketmanager()->newMessage());
index e77a71059af1d327d9c3f187129970a8d9417abb..4546626c0235f513c565ae6c17258b37950be32b 100644 (file)
@@ -22,31 +22,20 @@ class Request {
 public:
     static void QRCallback(const char *qr_contents, void *user_data)
     {
-        user_data_s *userData;
-        int ret = try_catch([&]() -> int {
-            if (user_data == nullptr)
-                ThrowMsg(ServiceException::InvalidUserdata, "Invalid user_data");
-            userData = static_cast<user_data_s *>(user_data);
-            if (userData->service == nullptr || userData->connectionID.sock == 0)
-                ThrowMsg(ServiceException::InvalidUserdata, "Invalid user_data");
-            if (qr_contents == nullptr)
-                ThrowMsg(ServiceException::InvalidQRContents, "Invalid qr_contents");
-            LogDebug("qr_contents: " << qr_contents);
-            return WAUTHN_ERROR_NONE;
-        });
-        MessageBuffer buffer(userData->service->GetSocketmanager()->newMessage());
-        if (ret != WAUTHN_ERROR_NONE)
-            Serialization::Serialize(buffer, WAUTHN_ERROR_INVALID_STATE);
+        user_data_s *userData = GetUserData(user_data);
+        if (userData != nullptr && qr_contents != nullptr)
+        {
+            MessageBuffer buffer(userData->service->GetSocketmanager()->newMessage());
+            Serialization::Serialize(buffer, WAUTHN_ERROR_NONE, std::string(qr_contents));
+            userData->service->GetSocketmanager()->Write(userData->connectionID, std::move(buffer));
+        }
         else
-            Serialization::Serialize(buffer, ret, std::string(qr_contents));
-
-        userData->service->GetSocketmanager()->Write(userData->connectionID, std::move(buffer));
+            LogError("Cannot write qr_contents to client");
     }
 
 protected:
-    static user_data_s *GetUserData(wauthn_error_e result, void *user_data)
+    static user_data_s *GetUserData(void *user_data)
     {
-        LogDebug("result: " << wauthn_error_to_string(result));
         if (user_data == nullptr)
         {
             LogError("The user_data is null");