Skip to content

Commit 1fe415f

Browse files
juha-hsreimers
authored andcommitted
This PR reverts fc588b9 which broke common re-invite usage (hold/unhold) (#986)
1 parent edf418f commit 1fe415f

File tree

1 file changed

+3
-40
lines changed

1 file changed

+3
-40
lines changed

src/sip/dialog.c

Lines changed: 3 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ struct sip_dialog {
3535
uint32_t lseq;
3636
uint32_t rseq;
3737
size_t cpos;
38-
size_t rpos;
3938
enum sip_transp tp;
4039
uint32_t srcport;
4140
};
@@ -120,7 +119,7 @@ int sip_dialog_alloc(struct sip_dialog **dlgp,
120119
rend = dlg->mb->pos - 2;
121120
}
122121
err |= mbuf_printf(dlg->mb, "To: <%s>\r\n", to_uri);
123-
dlg->cpos = dlg->rpos = dlg->mb->pos;
122+
dlg->cpos = dlg->mb->pos;
124123
err |= mbuf_printf(dlg->mb, "From: %s%s%s<%s>;tag=%016llx\r\n",
125124
from_name ? "\"" : "", from_name,
126125
from_name ? "\" " : "",
@@ -309,7 +308,6 @@ int sip_dialog_create(struct sip_dialog *dlg, const struct sip_msg *msg)
309308
msg->req ? &msg->from.val : &msg->to.val);
310309

311310
dlg->mb->pos = dlg->cpos;
312-
dlg->rpos = renc.mb->pos;
313311
err |= mbuf_write_mem(renc.mb, mbuf_buf(dlg->mb),
314312
mbuf_get_left(dlg->mb));
315313
dlg->mb->pos = 0;
@@ -464,8 +462,6 @@ int sip_dialog_update(struct sip_dialog *dlg, const struct sip_msg *msg)
464462
{
465463
const struct sip_hdr *contact;
466464
struct sip_addr addr;
467-
struct route_enc renc;
468-
struct pl pl;
469465
char *uri;
470466
int err;
471467

@@ -479,43 +475,14 @@ int sip_dialog_update(struct sip_dialog *dlg, const struct sip_msg *msg)
479475
if (sip_addr_decode(&addr, &contact->val))
480476
return EBADMSG;
481477

482-
renc.mb = mbuf_alloc(512);
483-
if (!renc.mb)
484-
return ENOMEM;
485-
486478
err = pl_strdup(&uri, &addr.auri);
487479
if (err)
488480
return err;
489481

490-
renc.end = 0;
491-
492-
err |= sip_msg_hdr_apply(msg, msg->req, SIP_HDR_RECORD_ROUTE,
493-
record_route_handler, &renc) ? EINVAL : 0;
494-
err |= mbuf_printf(renc.mb, "To: %r\r\n",
495-
msg->req ? &msg->from.val : &msg->to.val);
496-
497-
dlg->mb->pos = dlg->rpos;
498-
dlg->rpos = renc.mb->pos;
499-
err |= mbuf_write_mem(renc.mb, mbuf_buf(dlg->mb),
500-
mbuf_get_left(dlg->mb));
501-
dlg->mb->pos = 0;
502-
503-
if (err)
504-
goto out;
505-
506-
renc.mb->pos = 0;
482+
if (dlg->route.scheme.p == dlg->uri) {
507483

508-
if (renc.end) {
509-
pl.p = (const char *)mbuf_buf(renc.mb) + ROUTE_OFFSET;
510-
pl.l = renc.end - ROUTE_OFFSET;
511-
err = sip_addr_decode(&addr, &pl);
512-
if (err)
513-
goto out;
514-
515-
dlg->route = addr.uri;
516-
}
517-
else {
518484
struct uri tmp;
485+
struct pl pl;
519486

520487
pl_set_str(&pl, uri);
521488
err = uri_decode(&tmp, &pl);
@@ -525,14 +492,10 @@ int sip_dialog_update(struct sip_dialog *dlg, const struct sip_msg *msg)
525492
dlg->route = tmp;
526493
}
527494

528-
mem_deref(dlg->mb);
529495
mem_deref(dlg->uri);
530-
531-
dlg->mb = mem_ref(renc.mb);
532496
dlg->uri = mem_ref(uri);
533497

534498
out:
535-
mem_deref(renc.mb);
536499
mem_deref(uri);
537500

538501
return err;

0 commit comments

Comments
 (0)