Check user_data first and remove unnecessary logic of tail 45/307945/3
authorYonggoo Kang <ygace.kang@samsung.com>
Thu, 14 Mar 2024 11:52:55 +0000 (20:52 +0900)
committerYonggoo Kang <ygace.kang@samsung.com>
Fri, 15 Mar 2024 02:31:16 +0000 (02:31 +0000)
Change-Id: I2a2b17ef2174c9077f8db34f8835dc01c3fe805b

srcs/server/request-ga.h
srcs/server/request-mc.h
srcs/server/request.h

index 5fff804ad12f0bb6af340ae5ec2a21c5c40201bc..449b3b662d4bc7a551b2fd72afa17f70d71d5d51 100644 (file)
@@ -33,13 +33,17 @@ public:
         wauthn_error_e result,
         void *user_data)
     {
-        user_data_s *userData = _ResponseCBHead(result, user_data);
-        MessageBuffer buffer(userData->service->GetSocketmanager()->newMessage());
-        int ret = try_catch([&]() -> int {
+        user_data_s *userData = GetUserData(result, user_data);
+        if (userData != nullptr)
+        {
+            MessageBuffer buffer(userData->service->GetSocketmanager()->newMessage());
             Serialization::Serialize(buffer, result, pubkey_cred);
-            return WAUTHN_ERROR_NONE;
-        });
-        _ResponseCBTail(ret, userData, std::move(buffer));
+            userData->service->GetSocketmanager()->Write(userData->connectionID, std::move(buffer));
+        }
+        else
+        {
+            LogError("Cannot write response to client");
+        }
     }
 
 private:
index 3d42aa013a900fa6679a909aa96c06ef945886ea..09062bf2327e19457606b0adb13b65f7d36a5239 100644 (file)
@@ -33,13 +33,17 @@ public:
         wauthn_error_e result,
         void *user_data)
     {
-        user_data_s *userData = _ResponseCBHead(result, user_data);
-        MessageBuffer buffer(userData->service->GetSocketmanager()->newMessage());
-        int ret = try_catch([&]() -> int {
+        user_data_s *userData = GetUserData(result, user_data);
+        if (userData != nullptr)
+        {
+            MessageBuffer buffer(userData->service->GetSocketmanager()->newMessage());
             Serialization::Serialize(buffer, result, pubkey_cred);
-            return WAUTHN_ERROR_NONE;
-        });
-        _ResponseCBTail(ret, userData, std::move(buffer));
+            userData->service->GetSocketmanager()->Write(userData->connectionID, std::move(buffer));
+        }
+        else
+        {
+            LogError("Cannot write response to client");
+        }
     }
 private:
     std::string m_API = "wah_make_credential";
index 3bedeb708cf19e7f0774b5665b7e647f8a235130..e77a71059af1d327d9c3f187129970a8d9417abb 100644 (file)
@@ -44,33 +44,22 @@ public:
     }
 
 protected:
-    static user_data_s *_ResponseCBHead(wauthn_error_e result, void *user_data)
+    static user_data_s *GetUserData(wauthn_error_e result, void *user_data)
     {
         LogDebug("result: " << wauthn_error_to_string(result));
         if (user_data == nullptr)
-            ThrowMsg(ServiceException::InvalidUserdata, "Invalid user_data");
+        {
+            LogError("The user_data is null");
+            return nullptr;
+        }
         user_data_s *userData = static_cast<user_data_s *>(user_data);
         if (userData->service == nullptr || userData->connectionID.sock == 0)
-            ThrowMsg(ServiceException::InvalidUserdata, "Invalid user_data");
-        return userData;
-    }
-
-    static void _ResponseCBTail(int ret, user_data_s *userData, MessageBuffer &&buffer)
-    {
-        if (ret != WAUTHN_ERROR_NONE)
         {
-            buffer.InitForStreaming();
-            switch (ret){
-                case WAUTHN_ERROR_INVALID_PARAMETER:
-                    LogError("Invalid pubkey_cred");
-                    Serialization::Serialize(buffer, WAUTHN_ERROR_INVALID_STATE);
-                    break;
-                default:
-                    LogError("Unknown error");
-                    Serialization::Serialize(buffer, WAUTHN_ERROR_UNKNOWN);
-            }
+            LogError("Any member of user_data is invalid");
+            return nullptr;
         }
-        userData->service->GetSocketmanager()->Write(userData->connectionID, std::move(buffer));
+        return userData;
     }
 };
+
 } // namespace WebAuthn