MYNEWT-666; walk of observer list was ending too soon.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/2b3d6ccf Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/2b3d6ccf Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/2b3d6ccf Branch: refs/heads/nrf_cputime Commit: 2b3d6ccf79be225fbb652e15b93e7044047cf1f8 Parents: e67144f Author: Marko Kiiskila <ma...@runtime.io> Authored: Fri Mar 10 12:25:29 2017 -0800 Committer: Marko Kiiskila <ma...@runtime.io> Committed: Fri Mar 10 12:25:29 2017 -0800 ---------------------------------------------------------------------- net/oic/src/messaging/coap/observe.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/2b3d6ccf/net/oic/src/messaging/coap/observe.c ---------------------------------------------------------------------- diff --git a/net/oic/src/messaging/coap/observe.c b/net/oic/src/messaging/coap/observe.c index ed88682..3d45e03 100644 --- a/net/oic/src/messaging/coap/observe.c +++ b/net/oic/src/messaging/coap/observe.c @@ -231,11 +231,13 @@ coap_notify_observers(oc_resource_t *resource, coap_observer_t *obs = NULL; /* iterate over observers */ - for (obs = SLIST_FIRST(&oc_observers); - obs && ((resource && obs->resource == resource) || - (endpoint && - memcmp(&obs->endpoint, endpoint, sizeof(oc_endpoint_t)) == 0)); - obs = SLIST_NEXT(obs, next)) { + for (obs = SLIST_FIRST(&oc_observers); obs; obs = SLIST_NEXT(obs, next)) { + /* skip if neither resource nor endpoint match */ + if (resource != obs->resource && + 0 != memcmp(&obs->endpoint, endpoint, sizeof(oc_endpoint_t))) { + continue; + } + num_observers = obs->resource->num_observers; #if MYNEWT_VAL(OC_SEPARATE_RESPONSES) if (response.separate_response != NULL &&