Lines Matching refs:obs
468 coap_subscription_t *obs, *otmp;
491 LL_FOREACH_SAFE(resource->subscribers, obs, otmp) {
493 resource->context->observe_deleted(obs->session, obs,
495 coap_session_release(obs->session);
496 coap_delete_pdu(obs->pdu);
497 coap_delete_cache_key(obs->cache_key);
498 coap_free_type(COAP_SUBSCRIPTION, obs);
649 COPY_COND_WITH_OFFSET(p, bufend, *offset, ";obs", 4, *len);
989 coap_subscription_t *obs, *otmp;
1000 LL_FOREACH_SAFE(r->subscribers, obs, otmp) {
1001 obs_session = obs->session;
1002 if (r->dirty == 0 && obs->dirty == 0) {
1010 if (obs->session->con_active >= COAP_NSTART(obs->session) &&
1012 (obs->non_cnt >= COAP_OBS_MAX_NON))) {
1015 obs->dirty = 1;
1020 if (obs->session->lg_xmit && obs->session->lg_xmit->last_all_sent == 0 &&
1021 obs->session->lg_xmit->last_obs &&
1022 (obs->session->lg_xmit->last_obs + 2*COAP_TICKS_PER_SECOND) > now) {
1025 obs->dirty = 1;
1031 obs->dirty = 0;
1033 response = coap_pdu_init(COAP_MESSAGE_CON, 0, 0, coap_session_max_pdu_size(obs->session));
1035 obs->dirty = 1;
1043 if (!coap_add_token(response, obs->pdu->actual_token.length,
1044 obs->pdu->actual_token.s)) {
1045 obs->dirty = 1;
1054 obs->pdu->mid = response->mid = coap_new_message_id(obs->session);
1056 if (COAP_PROTO_NOT_RELIABLE(obs->session->proto) &&
1059 obs->non_cnt < COAP_OBS_MAX_NON)) {
1071 if (coap_get_block_b(obs->session, obs->pdu, COAP_OPTION_BLOCK2,
1082 else if (coap_get_block_b(obs->session, obs->pdu, COAP_OPTION_Q_BLOCK2,
1094 h = r->handler[obs->pdu->code - 1];
1097 query = coap_get_query(obs->pdu);
1099 coap_show_pdu(COAP_LOG_DEBUG, obs->pdu);
1103 h(r, obs->session, obs->pdu, query, response);
1105 coap_check_code_lg_xmit(obs->session, obs->pdu, response, r, query);
1111 coap_delete_observer(r, obs->session, &obs->pdu->actual_token);
1112 obs = NULL;
1123 if (obs) {
1126 obs->non_cnt = 0;
1128 obs->non_cnt++;
1133 coap_get_block_b(obs->session, response, COAP_OPTION_Q_BLOCK2,
1136 query = coap_get_query(obs->pdu);
1137 mid = coap_send_q_block2(obs->session, r, query, obs->pdu->code,
1149 if (COAP_INVALID_MID == mid && obs) {
1154 if (s == obs) {
1155 /* obs not deleted during coap_send_internal() */
1156 obs->dirty = 1;
1272 coap_subscription_t *obs, *otmp;
1274 LL_FOREACH_SAFE(resource->subscribers, obs, otmp) {
1275 if (obs->session == session &&
1276 coap_binary_equal(token, &obs->pdu->actual_token)) {
1279 obs->fail_cnt++;
1280 if (obs->fail_cnt >= COAP_OBS_MAX_FAIL) {
1281 coap_cancel_all_messages(context, obs->session,
1282 &obs->pdu->actual_token);