Merge pull request #9209 from kb2ma/gcoap/observe_change_token
net/gcoap: Observer re-register with new token
This commit is contained in:
commit
341debd5e0
@ -279,7 +279,6 @@ static size_t _handle_req(coap_pkt_t *pdu, uint8_t *buf, size_t len,
|
|||||||
case GCOAP_RESOURCE_NO_PATH:
|
case GCOAP_RESOURCE_NO_PATH:
|
||||||
return gcoap_response(pdu, buf, len, COAP_CODE_PATH_NOT_FOUND);
|
return gcoap_response(pdu, buf, len, COAP_CODE_PATH_NOT_FOUND);
|
||||||
case GCOAP_RESOURCE_FOUND:
|
case GCOAP_RESOURCE_FOUND:
|
||||||
/* used below to ensure a memo not already recorded for the resource */
|
|
||||||
_find_obs_memo_resource(&resource_memo, resource);
|
_find_obs_memo_resource(&resource_memo, resource);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -288,8 +287,12 @@ static size_t _handle_req(coap_pkt_t *pdu, uint8_t *buf, size_t len,
|
|||||||
int empty_slot = _find_obs_memo(&memo, remote, pdu);
|
int empty_slot = _find_obs_memo(&memo, remote, pdu);
|
||||||
/* record observe memo */
|
/* record observe memo */
|
||||||
if (memo == NULL) {
|
if (memo == NULL) {
|
||||||
if (empty_slot >= 0 && resource_memo == NULL) {
|
if ((resource_memo != NULL)
|
||||||
|
&& _endpoints_equal(remote, resource_memo->observer)) {
|
||||||
|
/* observer re-registering with new token */
|
||||||
|
memo = resource_memo;
|
||||||
|
}
|
||||||
|
else if ((empty_slot >= 0) && (resource_memo == NULL)) {
|
||||||
int obs_slot = _find_observer(&observer, remote);
|
int obs_slot = _find_observer(&observer, remote);
|
||||||
/* cache new observer */
|
/* cache new observer */
|
||||||
if (observer == NULL) {
|
if (observer == NULL) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user