mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-05-16 15:29:41 +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)
|
buffer = await connection.readLp(DefaultMaxRpcSize.int)
|
||||||
except LPStreamRemoteClosedError:
|
except LPStreamRemoteClosedError:
|
||||||
error "Failed to read responose from peer", error = getCurrentExceptionMsg()
|
error "Failed to read responose from peer", error = getCurrentExceptionMsg()
|
||||||
|
if wl.reputationManager.isSome:
|
||||||
|
wl.reputationManager.get().setReputation(peer.peerId, some(false))
|
||||||
return lightpushResultInternalError(
|
return lightpushResultInternalError(
|
||||||
"Failed to read response from peer: " & getCurrentExceptionMsg()
|
"Failed to read response from peer: " & getCurrentExceptionMsg()
|
||||||
)
|
)
|
||||||
@ -64,12 +66,16 @@ proc sendPushRequest(
|
|||||||
let response = LightpushResponse.decode(buffer).valueOr:
|
let response = LightpushResponse.decode(buffer).valueOr:
|
||||||
error "failed to decode response"
|
error "failed to decode response"
|
||||||
waku_lightpush_v3_errors.inc(labelValues = [decodeRpcFailure])
|
waku_lightpush_v3_errors.inc(labelValues = [decodeRpcFailure])
|
||||||
|
if wl.reputationManager.isSome:
|
||||||
|
wl.reputationManager.get().setReputation(peer.peerId, some(false))
|
||||||
return lightpushResultInternalError(decodeRpcFailure)
|
return lightpushResultInternalError(decodeRpcFailure)
|
||||||
|
|
||||||
if response.requestId != req.requestId and
|
if response.requestId != req.requestId and
|
||||||
response.statusCode != TOO_MANY_REQUESTS.uint32:
|
response.statusCode != TOO_MANY_REQUESTS.uint32:
|
||||||
error "response failure, requestId mismatch",
|
error "response failure, requestId mismatch",
|
||||||
requestId = req.requestId, responseRequestId = response.requestId
|
requestId = req.requestId, responseRequestId = response.requestId
|
||||||
|
if wl.reputationManager.isSome:
|
||||||
|
wl.reputationManager.get().setReputation(peer.peerId, some(false))
|
||||||
return lightpushResultInternalError("response failure, requestId mismatch")
|
return lightpushResultInternalError("response failure, requestId mismatch")
|
||||||
|
|
||||||
if wl.reputationManager.isSome:
|
if wl.reputationManager.isSome:
|
||||||
@ -100,13 +106,6 @@ proc publish*(
|
|||||||
for obs in wl.publishObservers:
|
for obs in wl.publishObservers:
|
||||||
obs.onMessagePublished(pubSubTopic.get(""), message)
|
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)
|
return lightpushSuccessResult(publishedCount)
|
||||||
|
|
||||||
# TODO: move selectPeerForLightPush logic into PeerManager
|
# TODO: move selectPeerForLightPush logic into PeerManager
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user