@@ -35,7 +35,6 @@ struct sip_dialog {
35
35
uint32_t lseq ;
36
36
uint32_t rseq ;
37
37
size_t cpos ;
38
- size_t rpos ;
39
38
enum sip_transp tp ;
40
39
uint32_t srcport ;
41
40
};
@@ -120,7 +119,7 @@ int sip_dialog_alloc(struct sip_dialog **dlgp,
120
119
rend = dlg -> mb -> pos - 2 ;
121
120
}
122
121
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 ;
124
123
err |= mbuf_printf (dlg -> mb , "From: %s%s%s<%s>;tag=%016llx\r\n" ,
125
124
from_name ? "\"" : "" , from_name ,
126
125
from_name ? "\" " : "" ,
@@ -309,7 +308,6 @@ int sip_dialog_create(struct sip_dialog *dlg, const struct sip_msg *msg)
309
308
msg -> req ? & msg -> from .val : & msg -> to .val );
310
309
311
310
dlg -> mb -> pos = dlg -> cpos ;
312
- dlg -> rpos = renc .mb -> pos ;
313
311
err |= mbuf_write_mem (renc .mb , mbuf_buf (dlg -> mb ),
314
312
mbuf_get_left (dlg -> mb ));
315
313
dlg -> mb -> pos = 0 ;
@@ -464,8 +462,6 @@ int sip_dialog_update(struct sip_dialog *dlg, const struct sip_msg *msg)
464
462
{
465
463
const struct sip_hdr * contact ;
466
464
struct sip_addr addr ;
467
- struct route_enc renc ;
468
- struct pl pl ;
469
465
char * uri ;
470
466
int err ;
471
467
@@ -479,43 +475,14 @@ int sip_dialog_update(struct sip_dialog *dlg, const struct sip_msg *msg)
479
475
if (sip_addr_decode (& addr , & contact -> val ))
480
476
return EBADMSG ;
481
477
482
- renc .mb = mbuf_alloc (512 );
483
- if (!renc .mb )
484
- return ENOMEM ;
485
-
486
478
err = pl_strdup (& uri , & addr .auri );
487
479
if (err )
488
480
return err ;
489
481
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 ) {
507
483
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 {
518
484
struct uri tmp ;
485
+ struct pl pl ;
519
486
520
487
pl_set_str (& pl , uri );
521
488
err = uri_decode (& tmp , & pl );
@@ -525,14 +492,10 @@ int sip_dialog_update(struct sip_dialog *dlg, const struct sip_msg *msg)
525
492
dlg -> route = tmp ;
526
493
}
527
494
528
- mem_deref (dlg -> mb );
529
495
mem_deref (dlg -> uri );
530
-
531
- dlg -> mb = mem_ref (renc .mb );
532
496
dlg -> uri = mem_ref (uri );
533
497
534
498
out :
535
- mem_deref (renc .mb );
536
499
mem_deref (uri );
537
500
538
501
return err ;
0 commit comments