diff --git a/NEWS b/NEWS index c34031a76..0173bf7d2 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ linphone-3.3.0 -- ????????? * new tabbed ui * be nat friendly using OPTIONS request and using received,rport from responses. + * use stun guessed ports even if symmetric is detected (works with freeboxes) * improve bitrate usage of speex codec * allow speex to run with vbr (variable bit rate) mode * add speex/32000 (ultra wide band speex codec) diff --git a/configure.in b/configure.in index fec1ed279..2ecf17659 100644 --- a/configure.in +++ b/configure.in @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT([linphone],[3.2.99.5],[linphone-developers@nongnu.org]) +AC_INIT([linphone],[3.2.99.7],[linphone-developers@nongnu.org]) AC_CANONICAL_SYSTEM dnl Source packaging numbers diff --git a/coreapi/help/doxygen.dox.in b/coreapi/help/doxygen.dox.in index acdec9090..13502d424 100644 --- a/coreapi/help/doxygen.dox.in +++ b/coreapi/help/doxygen.dox.in @@ -28,6 +28,49 @@ * @verbinclude COPYING */ +/** + * @defgroup tutorial_liblinphone Tutorial: Placing and receiving calls with liblinphone + * + +

Initialize liblinphone

+ +The first thing to do is to initialize the library passing it a set of callbacks functions to receive +various notifications: incoming calls, progress of calls etc... +These callbacks are all grouped in the LinphoneCoreVTable structure. +All are optionnals (use NULL if you don't need them). +The following code shows how initialize liblinphone: + +
+	##include 
+
+	//callback function for notification of incoming calls
+	static void on_invite_recv(LinphoneCore *lc, const char *from){
+		printf("Receiving a call from %s\n",from);
+	}
+
+	//callback function for notification end of calls (by remote)
+	static void on_bye_recv(LinphoneCore *lc, const char *from){
+		printf("Remote end hangup\n");
+	}
+
+	/
+	static void on_display_status(LinphoneCore *lc, const char *msg){
+		printf("%s",msg);
+	}
+
+	int main(int argc, char *argv[]){
+		LinphoneCoreVTable vtable;
+		
+		memset(&vtable,0,sizeof(vtable));
+		vtable.inv_recv=&on_invite_recv;
+		vtable.bye_recv=&on_bye_recv;
+		vtable.display_status=&on_display_status;
+		
+	}
+
+
+ + /** * @defgroup initializing Initialization and destruction diff --git a/coreapi/misc.c b/coreapi/misc.c index 894c3fc22..55aa83d4d 100644 --- a/coreapi/misc.c +++ b/coreapi/misc.c @@ -567,7 +567,8 @@ void linphone_core_run_stun_tests(LinphoneCore *lc, LinphoneCall *call){ } } } - if (ac->addr[0]!='\0' && vc->addr[0]!='\0' && strcmp(ac->addr,vc->addr)==0){ + if ((ac->addr[0]!='\0' && vc->addr[0]!='\0' && strcmp(ac->addr,vc->addr)==0) + || sock2==-1){ strcpy(call->localdesc->addr,ac->addr); } close_socket(sock1); diff --git a/mediastreamer2 b/mediastreamer2 index b437bd3bc..0ca839b53 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit b437bd3bcac6ce8f09218168ae75cc11e9a9255e +Subproject commit 0ca839b53751c4b687535bcfae747273f3dd0c44