From 7ae1342341dc4d455b0d87e7627350b4b9afa8f0 Mon Sep 17 00:00:00 2001 From: Morgan Pretty Date: Mon, 21 Mar 2022 14:32:48 +1100 Subject: [PATCH 1/2] Fixed an issue where open groups with no scheme in the url might not match correctly --- SessionMessagingKit/Open Groups/OpenGroupManagerV2.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SessionMessagingKit/Open Groups/OpenGroupManagerV2.swift b/SessionMessagingKit/Open Groups/OpenGroupManagerV2.swift index 248c16069..ef4688cbb 100644 --- a/SessionMessagingKit/Open Groups/OpenGroupManagerV2.swift +++ b/SessionMessagingKit/Open Groups/OpenGroupManagerV2.swift @@ -31,7 +31,9 @@ public final class OpenGroupManagerV2 : NSObject { // MARK: Adding & Removing public func hasExistingOpenGroup(room: String, server: String, publicKey: String, using transaction: YapDatabaseReadWriteTransaction) -> Bool { - let schemeFreeServer: String = (server.starts(with: "https://") ? server.substring(from: "https://".count) : server.substring(from: "http://".count)) + guard let serverUrl: URL = URL(string: server) else { return false } + + let schemeFreeServer: String = (serverUrl.host ?? server) let schemeFreeDefaultServer: String = OpenGroupAPIV2.defaultServer.substring(from: "http://".count) var serverOptions: Set = Set([ schemeFreeServer, From c9edac4ea8c48d7781d4ab558799bc7169ab7943 Mon Sep 17 00:00:00 2001 From: Morgan Pretty Date: Mon, 21 Mar 2022 14:42:11 +1100 Subject: [PATCH 2/2] Updated the code to add the port if present... --- .../Open Groups/OpenGroupManagerV2.swift | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/SessionMessagingKit/Open Groups/OpenGroupManagerV2.swift b/SessionMessagingKit/Open Groups/OpenGroupManagerV2.swift index ef4688cbb..dff1a97e6 100644 --- a/SessionMessagingKit/Open Groups/OpenGroupManagerV2.swift +++ b/SessionMessagingKit/Open Groups/OpenGroupManagerV2.swift @@ -33,23 +33,25 @@ public final class OpenGroupManagerV2 : NSObject { public func hasExistingOpenGroup(room: String, server: String, publicKey: String, using transaction: YapDatabaseReadWriteTransaction) -> Bool { guard let serverUrl: URL = URL(string: server) else { return false } - let schemeFreeServer: String = (serverUrl.host ?? server) - let schemeFreeDefaultServer: String = OpenGroupAPIV2.defaultServer.substring(from: "http://".count) + let serverHost: String = (serverUrl.host ?? server) + let serverPort: String = (serverUrl.port.map { ":\($0)" } ?? "") + let defaultServerHost: String = OpenGroupAPIV2.defaultServer.substring(from: "http://".count) var serverOptions: Set = Set([ - schemeFreeServer, - "http://\(schemeFreeServer)", - "https://\(schemeFreeServer)" + server, + "\(serverHost)\(serverPort)", + "http://\(serverHost)\(serverPort)", + "https://\(serverHost)\(serverPort)" ]) - if schemeFreeServer == OpenGroupAPIV2.legacyDefaultServerDNS { + if serverHost == OpenGroupAPIV2.legacyDefaultServerDNS { let defaultServerOptions: Set = Set([ - schemeFreeDefaultServer, + defaultServerHost, OpenGroupAPIV2.defaultServer, - "https://\(schemeFreeDefaultServer)" + "https://\(defaultServerHost)" ]) serverOptions = serverOptions.union(defaultServerOptions) } - else if schemeFreeServer == schemeFreeDefaultServer { + else if serverHost == defaultServerHost { let legacyServerOptions: Set = Set([ OpenGroupAPIV2.legacyDefaultServerDNS, "http://\(OpenGroupAPIV2.legacyDefaultServerDNS)",