rem: if (add_watcher(_p, &(from.uri), c, e, acc, &_m->callid->body, &_m->from->body, &_m->to->body, _w) < 0) {
add: if (add_watcher(_p, &(get_from(_m)->uri), c, e, acc, &_m->callid->body, &_m->from->body, &_m->to->body, _w) < 0) {
context: static inline int update_presentity(struct sip_msg* _m, struct pdomain* _d, struct presentity* _p, struct watcher** _w){	time_t e;	str* c;	if (_m->expires) {		e = ((exp_body_t*)_m->expires->parsed)->val;	} else {		e = default_expires;	}	c = &((contact_body_t*)_m->contact->parsed)->contacts->uri;	get_raw_uri(c);	if (find_watcher(_p, c, _w) == 0) {		if (e == 0) {			if (remove_watcher(_p, *_w) < 0) {				LOG(L_ERR, "update_presentity(): Error while deleting presentity\n");				return -1;			}						(*_w)->expires = 0;   /* The watcher will be freed after NOTIFY is sent */			if (!_p->watchers) {				remove_presentity(_d, _p);			}		} else {			e += time(0);			if (update_watcher(*_w, c, e) < 0) {				LOG(L_ERR, "update_presentity(): Error while updating watcher\n");				return -2;			}		}	} else {		if (e) {			e += time(0);			if (add_watcher(_p, &(from.uri), c, e, acc, &_m->callid->body, &_m->from->body, &_m->to->body, _w) < 0) {				LOG(L_ERR, "update_presentity(): Error while creating presentity\n");				return -2;			}					} else {			DBG("update_presentity(): expires = 0 but no watcher found\n");			*_w = 0;			return 0;		}	}	return 0;}