From f46c717ff9702c2b7708fb6b0d0164c7a087c745 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Wed, 7 Sep 2022 09:27:04 -0700 Subject: [PATCH] Don't update token count until after we have spent the token --- protocol/connections/engine_token_handler.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/protocol/connections/engine_token_handler.go b/protocol/connections/engine_token_handler.go index 2f3d5ec..604f3b0 100644 --- a/protocol/connections/engine_token_handler.go +++ b/protocol/connections/engine_token_handler.go @@ -41,6 +41,7 @@ func (e *engine) NewTokenHandler(tokenService string, tokens []*privacypass.Toke func (e *engine) FetchToken(tokenService string) (*privacypass.Token, int, error) { tokenManagerPointer, _ := e.tokenManagers.LoadOrStore(tokenService, new(TokenManager)) tokenManager := tokenManagerPointer.(*TokenManager) - e.eventManager.Publish(event.NewEvent(event.TokenManagerInfo, map[event.Field]string{event.ServerTokenOnion: tokenService, event.ServerTokenCount: strconv.Itoa(tokenManager.NumTokens())})) - return tokenManager.FetchToken() + token, numTokens, err := tokenManager.FetchToken() + e.eventManager.Publish(event.NewEvent(event.TokenManagerInfo, map[event.Field]string{event.ServerTokenOnion: tokenService, event.ServerTokenCount: strconv.Itoa(numTokens)})) + return token, numTokens, err }