diff --git a/client/helpers/bgSendHelper.go b/client/helpers/bgSendHelper.go index e9e0298..99af814 100644 --- a/client/helpers/bgSendHelper.go +++ b/client/helpers/bgSendHelper.go @@ -126,19 +126,23 @@ func attemptSendJob(job *client.SendJob) (int, error) { } for i, srv := range job.Servers { - // Prepare for server - var packedUsrMsg *meowlib.PackedUserMessage - err := proto.Unmarshal(data, packedUsrMsg) - if err != nil { - // todo - return -1, err - } - PackMessageForServer(packedUsrMsg, srv.GetUid()) - if job.Retries[i] >= maxRetriesPerServer { continue // this server is exhausted } - _, err = meowlib.HttpPostMessage(srv.Url, data, timeout) + + // Unmarshal the stored PackedUserMessage and wrap it for this server. + packedUsrMsg := &meowlib.PackedUserMessage{} + if err := proto.Unmarshal(data, packedUsrMsg); err != nil { + return -1, err + } + serverData, errTxt, packErr := PackMessageForServer(packedUsrMsg, srv.GetUid()) + if packErr != nil { + logger.Error().Err(packErr).Str("errTxt", errTxt).Str("url", srv.Url).Msg("attemptSendJob: PackMessageForServer") + job.Retries[i]++ + continue + } + + _, err = meowlib.HttpPostMessage(srv.Url, serverData, timeout) if err != nil { logger.Warn().Err(err).Str("url", srv.Url).Int("retry", job.Retries[i]+1).Msg("attemptSendJob: POST failed") job.Retries[i]++