Skip to content

Commit 3c55c80

Browse files
leiwei2094chickenlj
authored andcommitted
Merge pull request #1808, fix URL parsing problem when user filed contains '@' characters.
Fixed #1470
1 parent b48e8ba commit 3c55c80

File tree

2 files changed

+16
-1
lines changed
  • dubbo-common/src

2 files changed

+16
-1
lines changed

dubbo-common/src/main/java/com/alibaba/dubbo/common/URL.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ public static URL valueOf(String url) {
224224
path = url.substring(i + 1);
225225
url = url.substring(0, i);
226226
}
227-
i = url.indexOf("@");
227+
i = url.lastIndexOf("@");
228228
if (i >= 0) {
229229
username = url.substring(0, i);
230230
int j = username.indexOf(":");

dubbo-common/src/test/java/com/alibaba/dubbo/common/URLTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -637,4 +637,19 @@ public void testAddParameters() throws Exception {
637637
parameters.put("version", null);
638638
url.addParameters(parameters);
639639
}
640+
641+
@Test
642+
public void testUserNamePasswordContainsAt(){
643+
// Test username or password contains "@"
644+
URL url = URL.valueOf("ad@min:hello@1234@10.20.130.230:20880/context/path?version=1.0.0&application=morgan");
645+
assertNull(url.getProtocol());
646+
assertEquals("ad@min", url.getUsername());
647+
assertEquals("hello@1234", url.getPassword());
648+
assertEquals("10.20.130.230", url.getHost());
649+
assertEquals(20880, url.getPort());
650+
assertEquals("context/path", url.getPath());
651+
assertEquals(2, url.getParameters().size());
652+
assertEquals("1.0.0", url.getParameter("version"));
653+
assertEquals("morgan", url.getParameter("application"));
654+
}
640655
}

0 commit comments

Comments
 (0)