summaryrefslogtreecommitdiff
path: root/drivers/dahdi/dahdi_dynamic_loc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/dahdi/dahdi_dynamic_loc.c')
-rw-r--r--drivers/dahdi/dahdi_dynamic_loc.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/dahdi/dahdi_dynamic_loc.c b/drivers/dahdi/dahdi_dynamic_loc.c
index 5444110..e661ec9 100644
--- a/drivers/dahdi/dahdi_dynamic_loc.c
+++ b/drivers/dahdi/dahdi_dynamic_loc.c
@@ -82,10 +82,17 @@ dahdi_dynamic_local_transmit(void *pvt, unsigned char *msg, int msglen)
unsigned long flags;
spin_lock_irqsave(&local_lock, flags);
- if (d->peer && d->peer->span)
- dahdi_dynamic_receive(d->peer->span, msg, msglen);
- if (d->monitor_rx_peer && d->monitor_rx_peer->span)
- dahdi_dynamic_receive(d->monitor_rx_peer->span, msg, msglen);
+ if (d->peer && d->peer->span) {
+ if (test_bit(DAHDI_FLAGBIT_REGISTERED, &d->peer->span->flags))
+ dahdi_dynamic_receive(d->peer->span, msg, msglen);
+ }
+ if (d->monitor_rx_peer && d->monitor_rx_peer->span) {
+ if (test_bit(DAHDI_FLAGBIT_REGISTERED,
+ &d->monitor_rx_peer->span->flags)) {
+ dahdi_dynamic_receive(d->monitor_rx_peer->span,
+ msg, msglen);
+ }
+ }
spin_unlock_irqrestore(&local_lock, flags);
return 0;
}