diff options
author | Henry Heikkinen <henry.heikkinen@ims.fi> | 2015-07-30 13:25:20 +0300 |
---|---|---|
committer | Henry Heikkinen <henry.heikkinen@ims.fi> | 2015-07-30 13:40:06 +0300 |
commit | d77952a61609c9f078bd7c9e2c100749891f0b28 (patch) | |
tree | 7bbae3dacafa69e6c546f05c4f9aa303253d46e4 | |
parent | 9549936c1eb4164cc3f52127d010eae7bfcf1cb4 (diff) |
Fix Mumble URL parsing
URLs including password but no username were parsed incorrectly. The
Mumble Wiki's specification is somewhat confusing for this case. The
General URL specification implies an username is needed to use a
password but later on page it is clear that password can be used
without an accompanying username.
The desktop client also supports these URLs.
-rw-r--r-- | src/androidTest/java/com/morlunk/jumble/test/URLParserTest.java | 12 | ||||
-rw-r--r-- | src/main/java/com/morlunk/jumble/util/MumbleURLParser.java | 2 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/androidTest/java/com/morlunk/jumble/test/URLParserTest.java b/src/androidTest/java/com/morlunk/jumble/test/URLParserTest.java index 0c8788a..fa2720b 100644 --- a/src/androidTest/java/com/morlunk/jumble/test/URLParserTest.java +++ b/src/androidTest/java/com/morlunk/jumble/test/URLParserTest.java @@ -78,6 +78,18 @@ public class URLParserTest extends TestCase { } } + public void testURLWithPassword() { + String url = "mumble://:mypassword@server.com/"; + try { + Server server = MumbleURLParser.parseURL(url); + assertEquals(server.getHost(), "server.com"); + assertEquals(server.getPassword(), "mypassword"); + assertEquals(server.getPort(), Constants.DEFAULT_PORT); + } catch (MalformedURLException e) { + fail("Failed to parse URL."); + } + } + public void testInvalidScheme() { String url = "grumble://server.com/"; try { diff --git a/src/main/java/com/morlunk/jumble/util/MumbleURLParser.java b/src/main/java/com/morlunk/jumble/util/MumbleURLParser.java index 29c4109..5da4117 100644 --- a/src/main/java/com/morlunk/jumble/util/MumbleURLParser.java +++ b/src/main/java/com/morlunk/jumble/util/MumbleURLParser.java @@ -31,7 +31,7 @@ import java.util.regex.Pattern; */ public class MumbleURLParser { - private static final Pattern URL_PATTERN = Pattern.compile("mumble://((.+?)(:(.+?))?@)?(.+?)(:([0-9]+?))?/"); + private static final Pattern URL_PATTERN = Pattern.compile("mumble://(([^:]+)?(:(.+?))?@)?(.+?)(:([0-9]+?))?/"); /** * Parses the passed Mumble URL into a Server object. |