mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-01-16 12:53:14 +00:00
adjust reputation depending on lightpush response
This commit is contained in:
parent
0446dbaa8d
commit
236abfa83f
@ -57,6 +57,8 @@ proc sendPushRequest(
|
||||
buffer = await connection.readLp(DefaultMaxRpcSize.int)
|
||||
except LPStreamRemoteClosedError:
|
||||
error "Failed to read responose from peer", error = getCurrentExceptionMsg()
|
||||
if wl.reputationManager.isSome:
|
||||
wl.reputationManager.get().setReputation(peer.peerId, some(false))
|
||||
return lightpushResultInternalError(
|
||||
"Failed to read response from peer: " & getCurrentExceptionMsg()
|
||||
)
|
||||
@ -64,12 +66,16 @@ proc sendPushRequest(
|
||||
let response = LightpushResponse.decode(buffer).valueOr:
|
||||
error "failed to decode response"
|
||||
waku_lightpush_v3_errors.inc(labelValues = [decodeRpcFailure])
|
||||
if wl.reputationManager.isSome:
|
||||
wl.reputationManager.get().setReputation(peer.peerId, some(false))
|
||||
return lightpushResultInternalError(decodeRpcFailure)
|
||||
|
||||
if response.requestId != req.requestId and
|
||||
response.statusCode != TOO_MANY_REQUESTS.uint32:
|
||||
error "response failure, requestId mismatch",
|
||||
requestId = req.requestId, responseRequestId = response.requestId
|
||||
if wl.reputationManager.isSome:
|
||||
wl.reputationManager.get().setReputation(peer.peerId, some(false))
|
||||
return lightpushResultInternalError("response failure, requestId mismatch")
|
||||
|
||||
if wl.reputationManager.isSome:
|
||||
@ -100,13 +106,6 @@ proc publish*(
|
||||
for obs in wl.publishObservers:
|
||||
obs.onMessagePublished(pubSubTopic.get(""), message)
|
||||
|
||||
# FIXME: where is negative result returned?
|
||||
# we should check publish result for adjusting reputation
|
||||
# but it's unclear where to check it, hence checking publishedCount
|
||||
if publishedCount == 0:
|
||||
if wl.reputationManager.isSome:
|
||||
wl.reputationManager.get().setReputation(peer.peerId, some(false))
|
||||
|
||||
return lightpushSuccessResult(publishedCount)
|
||||
|
||||
# TODO: move selectPeerForLightPush logic into PeerManager
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user