This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git


The following commit(s) were added to refs/heads/master by this push:
     new 3c55c80  Merge pull request #1808, fix URL parsing problem when user 
filed contains '@' characters.
3c55c80 is described below

commit 3c55c802ac4553467d8fa109ac4601f4935d2766
Author: Lei Wei <[email protected]>
AuthorDate: Thu May 17 16:21:30 2018 +0800

    Merge pull request #1808, fix URL parsing problem when user filed contains 
'@' characters.
    
    Fixed #1470
---
 .../src/main/java/com/alibaba/dubbo/common/URL.java       |  2 +-
 .../src/test/java/com/alibaba/dubbo/common/URLTest.java   | 15 +++++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/URL.java 
b/dubbo-common/src/main/java/com/alibaba/dubbo/common/URL.java
index f96946d..f8a1119 100644
--- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/URL.java
+++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/URL.java
@@ -224,7 +224,7 @@ public final class URL implements Serializable {
             path = url.substring(i + 1);
             url = url.substring(0, i);
         }
-        i = url.indexOf("@");
+        i = url.lastIndexOf("@");
         if (i >= 0) {
             username = url.substring(0, i);
             int j = username.indexOf(":");
diff --git a/dubbo-common/src/test/java/com/alibaba/dubbo/common/URLTest.java 
b/dubbo-common/src/test/java/com/alibaba/dubbo/common/URLTest.java
index a670c3c..0a19b7a 100644
--- a/dubbo-common/src/test/java/com/alibaba/dubbo/common/URLTest.java
+++ b/dubbo-common/src/test/java/com/alibaba/dubbo/common/URLTest.java
@@ -637,4 +637,19 @@ public class URLTest {
         parameters.put("version", null);
         url.addParameters(parameters);
     }
+
+    @Test
+    public void testUserNamePasswordContainsAt(){
+        // Test username or password contains "@"
+        URL url = 
URL.valueOf("ad@min:hello@[email protected]:20880/context/path?version=1.0.0&application=morgan");
+        assertNull(url.getProtocol());
+        assertEquals("ad@min", url.getUsername());
+        assertEquals("hello@1234", url.getPassword());
+        assertEquals("10.20.130.230", url.getHost());
+        assertEquals(20880, url.getPort());
+        assertEquals("context/path", url.getPath());
+        assertEquals(2, url.getParameters().size());
+        assertEquals("1.0.0", url.getParameter("version"));
+        assertEquals("morgan", url.getParameter("application"));
+    }
 }
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to