summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormattf <mattf@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2007-08-15 22:13:59 +0000
committermattf <mattf@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2007-08-15 22:13:59 +0000
commitaf47bf96224417154ac9d0a1b57c456eb91176d9 (patch)
tree244ea8fd2d185e9b30deb279bd1f33024f118de3
parent807eb5c644548c0938db7c4023f460183c9146d5 (diff)
Merged revisions 2847 via svnmerge from
https://origsvn.digium.com/svn/zaptel/branches/1.4 ........ r2847 | mattf | 2007-08-15 17:12:58 -0500 (Wed, 15 Aug 2007) | 1 line Fix for 8277. Inproper alarm handling on dynamic spans ........ git-svn-id: http://svn.digium.com/svn/zaptel/trunk@2848 5390a7c7-147a-4af0-8ec9-7488f05a26cb
-rw-r--r--ztdynamic.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/ztdynamic.c b/ztdynamic.c
index f202630..8d95b0a 100644
--- a/ztdynamic.c
+++ b/ztdynamic.c
@@ -105,7 +105,6 @@ static struct zt_dynamic {
char addr[40];
char dname[20];
int err;
- int alarm;
int usecount;
int dead;
long rxjif;
@@ -149,12 +148,13 @@ static void checkmaster(void)
while(z) {
if (z->timing) {
z->master = 0;
- newhasmaster = 1;
- if (!z->alarm && (z->timing < best) && !z->dead) {
+ if (!(z->span.alarms & ZT_ALARM_RED) &&
+ (z->timing < best) && !z->dead) {
/* If not in alarm and they're
a better timing source, use them */
master = z;
best = z->timing;
+ newhasmaster = 1;
}
}
z = z->next;
@@ -184,7 +184,7 @@ static void ztd_sendmessage(struct zt_dynamic *z)
/* Byte 1: Flags */
*buf = 0;
- if (z->alarm & ZT_ALARM_RED)
+ if (z->span.alarms & ZT_ALARM_RED)
*buf |= ZTD_FLAG_YELLOW_ALARM;
*buf |= ZTD_FLAG_SIGBITS_PRESENT;
buf++; msglen++;
@@ -402,6 +402,7 @@ void zt_dynamic_receive(struct zt_span *span, unsigned char *msg, int msglen)
if (newalarm != span->alarms) {
span->alarms = newalarm;
zt_alarm_notify(span);
+ checkmaster();
}
/* Keep track of last received packet */