diff options
author | Joshua Colp <jcolp@digium.com> | 2015-08-10 09:03:18 -0500 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2015-08-10 09:03:18 -0500 |
commit | f733bc10b11ec9bef42206898bc404858aa7c42f (patch) | |
tree | bba5ab9ff370d1d7b0d08e5641b5556c0c77df61 /res | |
parent | c3bd7fb83583b357add3638ea1022040197ad250 (diff) | |
parent | e25569ef95c6de6e9267df4673bd1d774b82a000 (diff) |
Merge "res_pjsip_pubsub: More accurately persist packet." into 13
Diffstat (limited to 'res')
-rw-r--r-- | res/res_pjsip_pubsub.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/res/res_pjsip_pubsub.c b/res/res_pjsip_pubsub.c index 650f5c5c8..3e3ced71f 100644 --- a/res/res_pjsip_pubsub.c +++ b/res/res_pjsip_pubsub.c @@ -561,7 +561,7 @@ static void subscription_persistence_update(struct sip_subscription_tree *sub_tr expires = expires_hdr ? expires_hdr->ivalue : DEFAULT_PUBLISH_EXPIRES; sub_tree->persistence->expires = ast_tvadd(ast_tvnow(), ast_samp2tv(expires, 1)); - ast_copy_string(sub_tree->persistence->packet, rdata->pkt_info.packet, + pjsip_msg_print(rdata->msg_info.msg, sub_tree->persistence->packet, sizeof(sub_tree->persistence->packet)); ast_copy_string(sub_tree->persistence->src_name, rdata->pkt_info.src_name, sizeof(sub_tree->persistence->src_name)); @@ -1338,6 +1338,13 @@ static int subscription_persistence_recreate(void *obj, void *arg, int flags) return 0; } + if (rdata.msg_info.msg->type != PJSIP_REQUEST_MSG) { + ast_log(LOG_NOTICE, "Endpoint %s persisted a SIP response instead of a subscribe request. Unable to reload subscription.\n", + ast_sorcery_object_get_id(endpoint)); + ast_sorcery_delete(ast_sip_get_sorcery(), persistence); + return 0; + } + request_uri = pjsip_uri_get_uri(rdata.msg_info.msg->line.req.uri); resource_size = pj_strlen(&request_uri->user) + 1; resource = alloca(resource_size); |