aboutsummaryrefslogtreecommitdiff
path: root/federationapi/queue/destinationqueue.go
diff options
context:
space:
mode:
Diffstat (limited to 'federationapi/queue/destinationqueue.go')
-rw-r--r--federationapi/queue/destinationqueue.go64
1 files changed, 36 insertions, 28 deletions
diff --git a/federationapi/queue/destinationqueue.go b/federationapi/queue/destinationqueue.go
index 1b7670e9..a638a574 100644
--- a/federationapi/queue/destinationqueue.go
+++ b/federationapi/queue/destinationqueue.go
@@ -76,21 +76,25 @@ func (oq *destinationQueue) sendEvent(event *gomatrixserverlib.HeaderedEvent, re
return
}
- // If there's room in memory to hold the event then add it to the
- // list.
- oq.pendingMutex.Lock()
- if len(oq.pendingPDUs) < maxPDUsInMemory {
- oq.pendingPDUs = append(oq.pendingPDUs, &queuedPDU{
- pdu: event,
- receipt: receipt,
- })
- } else {
- oq.overflowed.Store(true)
- }
- oq.pendingMutex.Unlock()
+ // Check if the destination is blacklisted. If it isn't then wake
+ // up the queue.
+ if !oq.statistics.Blacklisted() {
+ // If there's room in memory to hold the event then add it to the
+ // list.
+ oq.pendingMutex.Lock()
+ if len(oq.pendingPDUs) < maxPDUsInMemory {
+ oq.pendingPDUs = append(oq.pendingPDUs, &queuedPDU{
+ pdu: event,
+ receipt: receipt,
+ })
+ } else {
+ oq.overflowed.Store(true)
+ }
+ oq.pendingMutex.Unlock()
- if !oq.backingOff.Load() {
- oq.wakeQueueAndNotify()
+ if !oq.backingOff.Load() {
+ oq.wakeQueueAndNotify()
+ }
}
}
@@ -103,21 +107,25 @@ func (oq *destinationQueue) sendEDU(event *gomatrixserverlib.EDU, receipt *share
return
}
- // If there's room in memory to hold the event then add it to the
- // list.
- oq.pendingMutex.Lock()
- if len(oq.pendingEDUs) < maxEDUsInMemory {
- oq.pendingEDUs = append(oq.pendingEDUs, &queuedEDU{
- edu: event,
- receipt: receipt,
- })
- } else {
- oq.overflowed.Store(true)
- }
- oq.pendingMutex.Unlock()
+ // Check if the destination is blacklisted. If it isn't then wake
+ // up the queue.
+ if !oq.statistics.Blacklisted() {
+ // If there's room in memory to hold the event then add it to the
+ // list.
+ oq.pendingMutex.Lock()
+ if len(oq.pendingEDUs) < maxEDUsInMemory {
+ oq.pendingEDUs = append(oq.pendingEDUs, &queuedEDU{
+ edu: event,
+ receipt: receipt,
+ })
+ } else {
+ oq.overflowed.Store(true)
+ }
+ oq.pendingMutex.Unlock()
- if !oq.backingOff.Load() {
- oq.wakeQueueAndNotify()
+ if !oq.backingOff.Load() {
+ oq.wakeQueueAndNotify()
+ }
}
}