[SIP] Allow setting local port for SIP interface
authorAndreas Eversberg <jolly@eversberg.eu>
Sun, 20 May 2012 15:45:56 +0000 (17:45 +0200)
committerAndreas Eversberg <jolly@eversberg.eu>
Sun, 20 May 2012 15:45:56 +0000 (17:45 +0200)
default/interface.conf
sip.cpp

index 1a465ad..24ec3b2 100644 (file)
 
 # Use Sofia-SIP as SIP point-to-point interface
 #[sip]
-#sip <local ip> <remote ip>[:<remote port>]
+#sip <local ip>[:<local port>] <remote ip>[:<remote port>]
 #sip 10.0.0.12 10.0.0.34
 #earlyb no
 #tones no
diff --git a/sip.cpp b/sip.cpp
index ee455a8..fa351bb 100644 (file)
--- a/sip.cpp
+++ b/sip.cpp
@@ -1826,6 +1826,7 @@ void Psip::rtp_shutdown(void)
 int sip_init_inst(struct interface *interface)
 {
        struct sip_inst *inst = (struct sip_inst *) MALLOC(sizeof(*inst));
+       char local[64];
 
        interface->sip_inst = inst;
        SCPY(inst->interface_name, interface->name);
@@ -1840,7 +1841,10 @@ int sip_init_inst(struct interface *interface)
                return -EINVAL;
        }
 
-       inst->nua = nua_create(inst->root, sip_callback, inst, TAG_NULL());
+       SPRINT(local, "sip:%s",inst->local_peer);
+       if (!strchr(inst->local_peer, ':'))
+               SCAT(local, ":5060");
+       inst->nua = nua_create(inst->root, sip_callback, inst, NUTAG_URL(local), TAG_END());
        if (!inst->nua) {
                PERROR("Failed to create SIP stack object\n");
                sip_exit_inst(interface);