diff --git a/apps/er-coap/er-coap-observe.c b/apps/er-coap/er-coap-observe.c index 3f3dc34ec..311f08ac8 100644 --- a/apps/er-coap/er-coap-observe.c +++ b/apps/er-coap/er-coap-observe.c @@ -249,6 +249,8 @@ coap_notify_observers_sub(resource_t *resource, const char *subpath) if(notification->code < BAD_REQUEST_4_00) { coap_set_header_observe(notification, (obs->obs_counter)++); + /* mask out to keep the CoAP observe option length <= 3 bytes */ + obs->obs_counter &= 0xffffff; } coap_set_token(notification, obs->token, obs->token_len); @@ -276,6 +278,8 @@ coap_observe_handler(resource_t *resource, void *request, void *response) coap_req->uri_path, coap_req->uri_path_len); if(obs) { coap_set_header_observe(coap_res, (obs->obs_counter)++); + /* mask out to keep the CoAP observe option length <= 3 bytes */ + obs->obs_counter &= 0xffffff; /* * Following payload is for demonstration purposes only. * A subscription should return the same representation as a normal GET.