Merge remote-tracking branch 'origin/main'

This commit is contained in:
greenart7c3
2024-07-22 07:34:36 -03:00
2 changed files with 18 additions and 3 deletions

View File

@@ -75,6 +75,7 @@ class Relay(
private var afterEOSEPerSubscription = mutableMapOf<String, Boolean>() private var afterEOSEPerSubscription = mutableMapOf<String, Boolean>()
private val authResponse = mutableMapOf<HexKey, Boolean>() private val authResponse = mutableMapOf<HexKey, Boolean>()
private val authChallengesSent = mutableSetOf<String>()
private val outboxCache = mutableMapOf<HexKey, EventInterface>() private val outboxCache = mutableMapOf<HexKey, EventInterface>()
fun register(listener: Listener) { fun register(listener: Listener) {
@@ -372,6 +373,9 @@ class Relay(
fun resetEOSEStatuses() { fun resetEOSEStatuses() {
afterEOSEPerSubscription = LinkedHashMap(afterEOSEPerSubscription.size) afterEOSEPerSubscription = LinkedHashMap(afterEOSEPerSubscription.size)
authResponse.clear()
authChallengesSent.clear()
} }
fun sendFilter( fun sendFilter(
@@ -492,8 +496,19 @@ class Relay(
} }
private fun sendAuth(signedEvent: RelayAuthEvent) { private fun sendAuth(signedEvent: RelayAuthEvent) {
authResponse.put(signedEvent.id, false) val challenge = signedEvent.challenge() ?: ""
writeToSocket("""["AUTH",${signedEvent.toJson()}]""")
// only send replies to new challenges to avoid infinite loop:
// 1. Auth is sent
// 2. auth is rejected
// 3. auth is requested
// 4. auth is sent
// ...
if (!authChallengesSent.contains(challenge)) {
authResponse.put(signedEvent.id, false)
authChallengesSent.add(challenge)
writeToSocket("""["AUTH",${signedEvent.toJson()}]""")
}
} }
private fun sendEvent(signedEvent: EventInterface) { private fun sendEvent(signedEvent: EventInterface) {

View File

@@ -59,7 +59,7 @@ class FileServersEvent(
servers servers
.map { .map {
arrayOf("server", it) arrayOf("server", it)
}.plusElement(arrayOf("alt", "Relay list to use for Search")) }.plusElement(arrayOf("alt", ALT))
.toTypedArray() .toTypedArray()
fun updateRelayList( fun updateRelayList(