瀏覽代碼

Add new mapping case for SocketAddressMapper

Patrick-Christopher Mattulat 2 年之前
父節點
當前提交
1129a32036

+ 9 - 1
source/ls_std/network/socket/SocketAddressMapper.cpp

@@ -39,7 +39,15 @@ ls::std::network::ConvertedSocketAddress ls::std::network::SocketAddressMapper::
 
   ls::std::network::ConvertedProtocolFamily convertedProtocolFamily = ls::std::network::ProtocolFamilyMapper::from(_parameter.protocolFamilyType);
   socketAddressUnix.sin_family = convertedProtocolFamily.unixDomain;
-  ::inet_aton(_parameter.socketAddress.ipAddress.c_str(), &socketAddressUnix.sin_addr);
+
+  if (!_parameter.socketAddress.ipAddress.empty())
+  {
+    ::inet_aton(_parameter.socketAddress.ipAddress.c_str(), &socketAddressUnix.sin_addr);
+  }
+  else
+  {
+    socketAddressUnix.sin_addr.s_addr = INADDR_ANY;
+  }
 
   return socketAddressUnix;
 }

+ 17 - 1
test/cases/network/socket/SocketAddressMapperTest.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-18
- * Changed:         2022-12-26
+ * Changed:         2022-12-27
  *
  * */
 
@@ -13,6 +13,8 @@
 
 #if LS_STD_UNIX_PLATFORM
 #include <sys/socket.h>
+#include "ls_std/network/socket/Socket.hpp"
+
 #endif
 
 using namespace ls::std::network;
@@ -63,4 +65,18 @@ namespace
     ASSERT_EQ(16, convertedSocketAddress.addressLength);
     #endif
   }
+
+  TEST_F(SocketAddressMapperTest, from_with_empty_address)
+  {
+    SocketAddressMapperParameter parameter = createSocketAddressMapperParameter();
+    parameter.socketAddress.ipAddress = "";
+    ConvertedSocketAddress convertedSocketAddress = SocketAddressMapper::from(parameter);
+
+    #if LS_STD_UNIX_PLATFORM
+    ASSERT_EQ(36895, convertedSocketAddress.socketAddressUnix.sin_port); // expected: return value of htons()
+    ASSERT_EQ(AF_INET, convertedSocketAddress.socketAddressUnix.sin_family);
+    ASSERT_EQ(INADDR_ANY, convertedSocketAddress.socketAddressUnix.sin_addr.s_addr); // expected: return value of inet_aton()
+    ASSERT_EQ(16, convertedSocketAddress.addressLength);
+    #endif
+  }
 }