diff options
author | Andrew Elder <aelder@audioscience.com> | 2016-01-11 13:31:51 -0500 |
---|---|---|
committer | Andrew Elder <aelder@audioscience.com> | 2016-01-11 13:31:51 -0500 |
commit | 260b3b48afa3e34984c45e86898a063a5261e942 (patch) | |
tree | 951ff50f9da372b7e37d15820fed118d4b9023bf | |
parent | 858f3be2ba183828ee2920d2982a09d9dd31248a (diff) | |
download | Open-AVB-260b3b48afa3e34984c45e86898a063a5261e942.tar.gz |
MRP: correct TA and TR merging per #338. Test case now passes.
-rw-r--r-- | daemons/mrpd/msrp.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/daemons/mrpd/msrp.c b/daemons/mrpd/msrp.c index f98fddf6..8dd127e4 100644 --- a/daemons/mrpd/msrp.c +++ b/daemons/mrpd/msrp.c @@ -329,20 +329,23 @@ int msrp_merge(struct msrp_attribute *rattrib) * TalkerFailed <- TalkerAdvertise and * TalkerAdvertise <- TalkerFailed */ - attrib->attribute.talk_listen.FailureInformation.FailureCode = - rattrib->attribute.talk_listen.FailureInformation. - FailureCode; - memcpy(attrib->attribute.talk_listen.FailureInformation. - BridgeID, - rattrib->attribute.talk_listen.FailureInformation. - BridgeID, 8); + if (rattrib->operation == attrib->operation) { + + attrib->attribute.talk_listen.FailureInformation.FailureCode = + rattrib->attribute.talk_listen.FailureInformation. + FailureCode; + memcpy(attrib->attribute.talk_listen.FailureInformation. + BridgeID, + rattrib->attribute.talk_listen.FailureInformation. + BridgeID, 8); #ifdef ENABLE_MERGED_LATENCY - attrib->attribute.talk_listen.AccumulatedLatency = - rattrib->attribute.talk_listen.AccumulatedLatency; + attrib->attribute.talk_listen.AccumulatedLatency = + rattrib->attribute.talk_listen.AccumulatedLatency; #endif - if (attrib->type != rattrib->type) { - attrib->type = rattrib->type; - attrib->registrar.mrp_state = MRP_MT_STATE; /* ugly - force a notify */ + if (attrib->type != rattrib->type) { + attrib->type = rattrib->type; + attrib->registrar.mrp_state = MRP_MT_STATE; /* ugly - force a notify */ + } } break; case MSRP_LISTENER_TYPE: |