]> sjero.net Git - linphone/commitdiff
enable tcp transport
authorJehan Monnier <jehan.monnier@linphone.org>
Thu, 3 Jun 2010 06:45:24 +0000 (08:45 +0200)
committerJehan Monnier <jehan.monnier@linphone.org>
Thu, 3 Jun 2010 06:45:24 +0000 (08:45 +0200)
coreapi/linphonecore.c
coreapi/private.h
coreapi/sal_eXosip2.c
m4/exosip.m4

index f62449e62e88f84ad56b245a07f9be215a7a0c92..518d887b203bf7247430d4ea0baef235f1912e01 100644 (file)
@@ -646,7 +646,18 @@ static void sip_config_read(LinphoneCore *lc)
        }
        linphone_core_enable_ipv6(lc,ipv6);
        port=lp_config_get_int(lc->config,"sip","sip_port",5060);
-       linphone_core_set_sip_port(lc,port);
+
+       tmpstr=lp_config_get_string(lc->config,"sip","transport","udp");
+       if (strcmp("udp",tmpstr) == 0 ) {
+               lc->sip_conf.transport=SalTransportDatagram;
+       } else if (strcmp("tcp",tmpstr) == 0) {
+               lc->sip_conf.transport=SalTransportStream;
+       } else {
+               lc->sip_conf.transport=SalTransportDatagram;
+               ms_warning("unsupported transport, using udp");
+       }
+       /*start listening on port*/
+       linphone_core_set_sip_port(lc,port);
 
        tmpstr=lp_config_get_string(lc->config,"sip","contact",NULL);
        if (tmpstr==NULL || linphone_core_set_primary_contact(lc,tmpstr)==-1) {
@@ -697,6 +708,11 @@ static void sip_config_read(LinphoneCore *lc)
                        break;
                }
        }
+
+
+
+
+       lc->sip_conf.sdp_200_ack=lp_config_get_int(lc->config,"sip","sdp_200_ack",0);
        
        /*for tuning or test*/
        lc->sip_conf.sdp_200_ack=lp_config_get_int(lc->config,"sip","sdp_200_ack",0);
@@ -1482,9 +1498,11 @@ void linphone_core_set_sip_port(LinphoneCore *lc,int port)
                anyaddr="::0";
        else
                anyaddr="0.0.0.0";
-       err=sal_listen_port (lc->sal,anyaddr,port, SalTransportDatagram,FALSE);
+
+
+       err=sal_listen_port (lc->sal,anyaddr,port, lc->sip_conf.transport,FALSE);
        if (err<0){
-               char *msg=ortp_strdup_printf("UDP port %i seems already in use ! Cannot initialize.",port);
+               char *msg=ortp_strdup_printf("Port %i seems already in use ! Cannot initialize.",port);
                ms_warning(msg);
                lc->vtable.display_warning(lc,msg);
                ms_free(msg);
index c3e2960a32a64c2aaf90b8c95a3d0f0f44db3754..ff09be8d9b4790769dc8caac580d5bdfc0938746 100644 (file)
@@ -242,6 +242,7 @@ struct _LinphoneFriend{
        bool_t inc_subscribe_pending;
 };     
 
+
 typedef struct sip_config
 {
        char *contact;
@@ -261,6 +262,8 @@ typedef struct sip_config
        bool_t ping_with_options;
        bool_t auto_net_state_mon;
        unsigned int keepalive_period; /* interval in ms between keep alive messages sent to the proxy server*/
+       SalTransport transport;
+
 } sip_config_t;
 
 typedef struct rtp_config
index 97cde63c25ff8e6121d055603f19f8da5e0e0b40..463f0bcdb2c5cc8d20e2376badbcff28dd11b03a 100644 (file)
@@ -314,6 +314,17 @@ int sal_listen_port(Sal *ctx, const char *addr, int port, SalTransport tr, int i
        bool_t ipv6;
        int proto=IPPROTO_UDP;
        
+       switch (tr) {
+       case SalTransportDatagram:
+               proto=IPPROTO_UDP;
+               break;
+       case SalTransportStream:
+               proto= IPPROTO_TCP;
+               break;
+       default:
+               ms_warning("unexpected proto, using datagram");
+       }
+
        if (ctx->running){
                eXosip_quit();
                eXosip_init();
@@ -325,8 +336,8 @@ int sal_listen_port(Sal *ctx, const char *addr, int port, SalTransport tr, int i
        ipv6=strchr(addr,':')!=NULL;
        eXosip_enable_ipv6(ipv6);
 
-       if (tr!=SalTransportDatagram || is_secure){
-               ms_fatal("SIP over TCP or TLS or DTLS is not supported yet.");
+       if (is_secure){
+               ms_fatal("SIP over TLS or DTLS is not supported yet.");
                return -1;
        }
        err=eXosip_listen_addr(proto, addr, port, ipv6 ?  PF_INET6 : PF_INET, 0);
index fc1775a42aef3f941fb5c0159527b93e1c85049e..fb75e67273b80ce36668118a93c1ed8c7b730c4e 100644 (file)
@@ -3,6 +3,13 @@ AC_DEFUN([LP_SETUP_EXOSIP],[
 AC_REQUIRE([AC_CANONICAL_HOST])
 AC_REQUIRE([LP_CHECK_OSIP2])
 
+
+case $target_os in
+       *darwin*)
+               OSIP_LIBS="$OSIP_LIBS  -framework CoreFoundation -framework CFNetwork "
+       ;;
+esac
+
 dnl eXosip embeded stuff
 EXOSIP_CFLAGS="$OSIP_CFLAGS -DOSIP_MT "
 EXOSIP_LIBS="$OSIP_LIBS -leXosip2  "
@@ -12,6 +19,8 @@ CPPFLAGS="$OSIP_CFLAGS $CPPFLAGS"
 AC_CHECK_HEADER([eXosip2/eXosip.h], ,AC_MSG_ERROR([Could not find eXosip2 headers !]))
 CPPFLAGS=$CPPFLAGS_save
 
+
+
 dnl check for eXosip2 libs
 LDFLAGS_save=$LDFLAGS
 LDFLAGS="$OSIP_LIBS $LDFLAGS"