Reset auth when connection closes

This commit is contained in:
Jon Staab
2024-10-18 09:41:23 -07:00
parent c121997a5f
commit b34e4923a8
2 changed files with 15 additions and 2 deletions
+10 -1
View File
@@ -37,6 +37,7 @@ export class ConnectionAuth {
constructor(readonly connection: Connection) { constructor(readonly connection: Connection) {
this.connection.on('receive', this.#onReceive) this.connection.on('receive', this.#onReceive)
this.connection.on('close', this.#onClose)
} }
#onReceive = (connection: Connection, message: SocketMessage) => { #onReceive = (connection: Connection, message: SocketMessage) => {
@@ -63,6 +64,13 @@ export class ConnectionAuth {
} }
} }
#onClose = (connection: Connection) => {
this.challenge = undefined
this.request = undefined
this.message = undefined
this.status = None
}
attempt = async () => { attempt = async () => {
if (!this.challenge) { if (!this.challenge) {
throw new Error("Attempted to authenticate with no challenge") throw new Error("Attempted to authenticate with no challenge")
@@ -124,6 +132,7 @@ export class ConnectionAuth {
} }
destroy = () => { destroy = () => {
this.connection.off('recieve', this.#onReceive) this.connection.off('receive', this.#onReceive)
this.connection.off('close', this.#onClose)
} }
} }
+5 -1
View File
@@ -29,6 +29,10 @@ export type RelayProfile = {
// Utils related to bare urls // Utils related to bare urls
export const isRelayUrl = (url: string) => { export const isRelayUrl = (url: string) => {
if (!url.includes('://')) {
url = 'wss://' + url
}
try { try {
new URL(url) new URL(url)
} catch (e) { } catch (e) {
@@ -59,7 +63,7 @@ export const normalizeRelayUrl = (url: string) => {
// Use our library to normalize // Use our library to normalize
url = normalizeUrl(url, {stripHash: true, stripAuthentication: false}) url = normalizeUrl(url, {stripHash: true, stripAuthentication: false})
// Strip the protocol since only wss works, lowercase // Strip the protocol, lowercase
url = stripProtocol(url).toLowerCase() url = stripProtocol(url).toLowerCase()
// Urls without pathnames are supposed to have a trailing slash // Urls without pathnames are supposed to have a trailing slash