diff --git a/auth/request.go b/auth/request.go index 8e9c1c58e206bfb51ca952cbec66227497f593f7..be8f08d23532b67e74575f8eb45368ad66c467d7 100644 --- a/auth/request.go +++ b/auth/request.go @@ -33,12 +33,6 @@ func RequestAuth(partner, me contact.Contact, message string, rng io.Reader, storage *storage.Session, net interfaces.NetworkManager) error { /*edge checks generation*/ - // check that messages can be sent over the network - if !net.GetHealthTracker().IsHealthy() { - return errors.New("Cannot create authenticated message " + - "when the network is not healthy") - } - // check that an authenticated channel does not already exists if _, err := storage.E2e().GetPartner(partner.ID); err == nil || !strings.Contains(err.Error(), e2e.NoPartnerErrorStr) { @@ -145,47 +139,58 @@ func RequestAuth(partner, me contact.Contact, message string, rng io.Reader, //store the message as a critical message so it will always be sent storage.GetCriticalRawMessages().AddProcessing(cmixMsg, partner.ID) - jww.INFO.Printf("Requesting Auth with %s, msgDigest: %s", - partner.ID, cmixMsg.Digest()) - - /*send message*/ - round, _, err := net.SendCMIX(cmixMsg, partner.ID, params.GetDefaultCMIX()) - if err != nil { - // if the send fails just set it to failed, it will but automatically - // retried - jww.INFO.Printf("Auth Request with %s (msgDigest: %s) failed "+ - "to transmit: %+v", partner.ID, cmixMsg.Digest(), err) - storage.GetCriticalRawMessages().Failed(cmixMsg, partner.ID) - return errors.WithMessage(err, "Auth Request Failed to transmit") - } - - jww.INFO.Printf("Auth Request with %s (msgDigest: %s) sent on round %d", - partner.ID, cmixMsg.Digest(), round) - - /*check message delivery*/ - sendResults := make(chan ds.EventReturn, 1) - roundEvents := net.GetInstance().GetRoundEvents() - - roundEvents.AddRoundEventChan(round, sendResults, 1*time.Minute, - states.COMPLETED, states.FAILED) + go func() { + jww.INFO.Printf("Requesting Auth with %s, msgDigest: %s", + partner.ID, cmixMsg.Digest()) + + /*send message*/ + round, _, err := net.SendCMIX(cmixMsg, partner.ID, + params.GetDefaultCMIX()) + if err != nil { + // if the send fails just set it to failed, it will + // but automatically retried + jww.WARN.Printf("Auth Request with %s (msgDigest: %s)"+ + " failed to transmit: %+v", partner.ID, + cmixMsg.Digest(), err) + storage.GetCriticalRawMessages().Failed(cmixMsg, + partner.ID) + } - success, numFailed, _ := utility.TrackResults(sendResults, 1) - if !success { - if numFailed > 0 { - jww.INFO.Printf("Auth Request with %s (msgDigest: %s) failed "+ - "delivery due to round failure, will retry on reconnect", - partner.ID, cmixMsg.Digest()) + jww.INFO.Printf("Auth Request with %s (msgDigest: %s) sent"+ + " on round %d", partner.ID, cmixMsg.Digest(), round) + + /*check message delivery*/ + sendResults := make(chan ds.EventReturn, 1) + roundEvents := net.GetInstance().GetRoundEvents() + + roundEvents.AddRoundEventChan(round, sendResults, 1*time.Minute, + states.COMPLETED, states.FAILED) + + success, numFailed, _ := utility.TrackResults(sendResults, 1) + if !success { + if numFailed > 0 { + jww.WARN.Printf("Auth Request with %s "+ + "(msgDigest: %s) failed "+ + "delivery due to round failure, "+ + "will retry on reconnect", + partner.ID, cmixMsg.Digest()) + } else { + jww.WARN.Printf("Auth Request with %s "+ + "(msgDigest: %s) failed "+ + "delivery due to timeout, "+ + "will retry on reconnect", + partner.ID, cmixMsg.Digest()) + } + storage.GetCriticalRawMessages().Failed(cmixMsg, + partner.ID) } else { - jww.INFO.Printf("Auth Request with %s (msgDigest: %s) failed "+ - "delivery due to timeout, will retry on reconnect", - partner.ID, cmixMsg.Digest()) + jww.INFO.Printf("Auth Request with %s (msgDigest: %s) "+ + "delivered sucessfully", partner.ID, + cmixMsg.Digest()) + storage.GetCriticalRawMessages().Succeeded(cmixMsg, + partner.ID) } - storage.GetCriticalRawMessages().Failed(cmixMsg, partner.ID) - } else { - jww.INFO.Printf("Auth Request with %s (msgDigest: %s) delivered "+ - "sucesfully", partner.ID, cmixMsg.Digest()) - storage.GetCriticalRawMessages().Succeeded(cmixMsg, partner.ID) - } + }() return nil }