GODT-2266: Pause event stream while sending
This commit is contained in:
parent
5d4c10c56e
commit
e8a778feca
|
@ -158,7 +158,7 @@ func (user *User) sendMail(authID string, from string, to []string, r io.Reader)
|
|||
|
||||
return nil
|
||||
})
|
||||
}, user.apiUserLock, user.apiAddrsLock)
|
||||
}, user.apiUserLock, user.apiAddrsLock, user.eventLock)
|
||||
}
|
||||
|
||||
// sendWithKey sends the message with the given address key.
|
||||
|
|
|
@ -60,9 +60,11 @@ type User struct {
|
|||
vault *vault.User
|
||||
client *proton.Client
|
||||
reporter reporter.Reporter
|
||||
eventCh *queue.QueuedChannel[events.Event]
|
||||
sendHash *sendRecorder
|
||||
|
||||
eventCh *queue.QueuedChannel[events.Event]
|
||||
eventLock safe.RWMutex
|
||||
|
||||
apiUser proton.User
|
||||
apiUserLock safe.RWMutex
|
||||
|
||||
|
@ -120,9 +122,11 @@ func New(
|
|||
vault: encVault,
|
||||
client: client,
|
||||
reporter: reporter,
|
||||
eventCh: queue.NewQueuedChannel[events.Event](0, 0),
|
||||
sendHash: newSendRecorder(sendEntryExpiry),
|
||||
|
||||
eventCh: queue.NewQueuedChannel[events.Event](0, 0),
|
||||
eventLock: safe.NewRWMutex(),
|
||||
|
||||
apiUser: apiUser,
|
||||
apiUserLock: safe.NewRWMutex(),
|
||||
|
||||
|
@ -548,6 +552,9 @@ func (user *User) initUpdateCh(mode vault.AddressMode) {
|
|||
|
||||
// doEventPoll is called whenever API events should be polled.
|
||||
func (user *User) doEventPoll(ctx context.Context) error {
|
||||
user.eventLock.Lock()
|
||||
defer user.eventLock.Unlock()
|
||||
|
||||
event, err := user.client.GetEvent(ctx, user.vault.EventID())
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get event: %w", err)
|
||||
|
|
Loading…
Reference in New Issue