Ver Fonte

Ignore empty address

wxf há 3 anos atrás
pai
commit
ba5d932de8

+ 3 - 1
src/brpc/policy/discovery_naming_service.cpp

@@ -277,7 +277,9 @@ int DiscoveryClient::DoRegister() {
     std::vector<butil::StringPiece> addrs;
     butil::SplitString(_params.addrs, ',', &addrs);
     for (size_t i = 0; i < addrs.size(); ++i) {
-        os << "&addrs=" << addrs[i];
+        if (!addrs[i].empty()) {
+            os << "&addrs=" << addrs[i];
+        }
     }
 
     os << "&env=" << _params.env

+ 4 - 1
test/brpc_naming_service_unittest.cpp

@@ -627,6 +627,7 @@ public:
     bool HasAddr(const std::string& addr) const {
         return _addrs.find(addr) != _addrs.end();
     }
+    int AddrCount() const { return _addrs.size(); }
 
 private:
     int _renew_count;
@@ -685,12 +686,14 @@ TEST(NamingServiceTest, discovery_sanity) {
     ASSERT_FALSE(svc.HasAddr("http://10.0.0.1:8000"));
 
     // addrs splitted by `,'
-    dparam.addrs = ("grpc://10.0.0.1:8000,http://10.0.0.1:8000");
+    dparam.addrs = ",grpc://10.0.0.1:8000,,http://10.0.0.1:8000,";
     {
         brpc::policy::DiscoveryClient dc;
         ASSERT_EQ(0, dc.Register(dparam));
         ASSERT_TRUE(svc.HasAddr("grpc://10.0.0.1:8000"));
         ASSERT_TRUE(svc.HasAddr("http://10.0.0.1:8000"));
+        ASSERT_FALSE(svc.HasAddr(std::string()));
+        ASSERT_EQ(2, svc.AddrCount());
     }
 }