From dce14f3c3c73612d26c05496b66c53c668ea70ca Mon Sep 17 00:00:00 2001 From: Qiu Yuzhou Date: Mon, 9 Sep 2019 14:26:43 +0800 Subject: [PATCH] Fixes bug when decode SIP002 URL with plugin but plugin opts is empty string. --- ShadowsocksX-NG/ServerProfile.swift | 2 ++ ShadowsocksX-NGTests/ServerProfileTests.swift | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/ShadowsocksX-NG/ServerProfile.swift b/ShadowsocksX-NG/ServerProfile.swift index 49a9acc..1016e23 100644 --- a/ShadowsocksX-NG/ServerProfile.swift +++ b/ShadowsocksX-NG/ServerProfile.swift @@ -137,6 +137,8 @@ class ServerProfile: NSObject, NSCopying { if parts.count == 2 { plugin = String(parts[0]) pluginOptions = String(parts[1]) + } else if parts.count == 1 { + plugin = String(parts[0]) } } } diff --git a/ShadowsocksX-NGTests/ServerProfileTests.swift b/ShadowsocksX-NGTests/ServerProfileTests.swift index bca5aa5..d47c7c3 100644 --- a/ShadowsocksX-NGTests/ServerProfileTests.swift +++ b/ShadowsocksX-NGTests/ServerProfileTests.swift @@ -141,6 +141,24 @@ class ServerProfileTests: XCTestCase { XCTAssertNotNil(profile) XCTAssertEqual(profile?.remark, "Overriden") } + + func testInitWithSIP002URLProfileWithSIP003PluginNoPluginOpts() { + let url = URL(string: "ss://YWVzLTI1Ni1jZmI6cGFzc3dvcmQ=@134.209.56.100:8088/?plugin=v2ray-plugin;#moon-v2ray")! + + let profile = ServerProfile(url: url) + + XCTAssertNotNil(profile) + XCTAssertEqual(profile?.plugin, "v2ray-plugin") + } + + func testInitWithSIP002URLProfileWithSIP003Plugin() { + let url = URL(string: "ss://YWVzLTI1Ni1jZmI6cGFzc3dvcmQ=@134.209.56.100:8088/?plugin=v2ray-plugin;tls#moon-v2ray")! + + let profile = ServerProfile(url: url) + + XCTAssertNotNil(profile) + XCTAssertEqual(profile?.plugin, "v2ray-plugin") + } func testPerformanceExample() { // This is an example of a performance test case. @@ -148,5 +166,6 @@ class ServerProfileTests: XCTestCase { // Put the code you want to measure the time of here. } } + }