diff --git a/Makefile.am b/Makefile.am index 68ddb63f5..c76c2d10b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -167,6 +167,15 @@ filelist: zip fi \ done +### LOCALIZATION + +pull-transifex: + tx pull -af + $(MAKE) -C po update-po + +push-transifex: + tx push -s -t -f --no-interactive + ### WINDOWS diff --git a/NEWS b/NEWS index dce0e0824..acdbf2e45 100644 --- a/NEWS +++ b/NEWS @@ -2,12 +2,26 @@ linphone-3.8.0 -- Date to be defined Application level improvements: * The video window has now controls in order to switch fullscreen mode and terminate call. * The out of call video preview feature (to test camera) is moved into the settings and is no longer linked to the in-call video preview feature. - * Lots of updated translations. + * Add an assistant to help users to set audio/video parameters + * Some ergonomics improvments (checkbox to set random port for UDP and TCP, ...) + * Lots of updated translations. Arabic translation has been added + * Experimental feature: play an MKV file by drag-and-dropping it on the video call window Liblinphone level improvements: - * Support for RTP/AVPF (RFCxxxx) for video streams, allowing fast transmission error recovery with VP8 codec only. + * Support for RTP/AVPF (RFC4585) for video streams, allowing fast transmission error recovery with VP8 codec only. * API enhancements, most objects can be ref-counted. + * Add some getter funtctions to the call information API + * Add a function in the API to accept early-media calls + * Add a function to set the SIP transport timeout + * Add a function to change adaptive rate algorithm at runtime + * Add support of file transfer * Call video recording feature, in mkv format (H264 streams only for the moment) + * Call playing feature: play an MKV file and send the audio/video stream through a call + * Local player API. Play WAV and MKV file and display video on a specified window display + * A wrapper for Python has been made + * Support of Wake Locks on Android + * Support of multicast IP addresses + * Support of incoming UPDATEs within dialog (RFC3311) * Support of SRTP by using packages from GNU/Linux distributions linphone-3.7.0 -- February 20th, 2014 diff --git a/README.mingw b/README.mingw index 5e859680b..6f5414753 100644 --- a/README.mingw +++ b/README.mingw @@ -29,7 +29,8 @@ Download lastest linphone-deps-win32 zip from http://download.savannah.gnu.org/releases-noredirect/linphone/misc using your browser. -Download gtk+-2.24.10 win32 _bundle_ from http://www.gtk.org, direct link: http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip +Download gtk+-2.24.10 win32 _bundle_ from http://www.gtk.org, direct link: +http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip Install all these three package in /: @@ -46,26 +47,35 @@ tar -xvzf GTK2-Outcrop.tar.gz #To get the translations working, remove from C:/MinGW/lib : libintl.a libintl.la libintl.dll.a -* Download and install Inno Setup Compiler (required only if you run 'make setup.exe'). Add it to your windows Path environment variable. +* Download and install Inno Setup Compiler (required only if you run +'make setup.exe'). Add it to your windows Path environment variable. -* Install msys-git from (http://msysgit.github.io/). During installation you are asked to make a choice about how line endings are treated by git. Choose "Checkout line endings as they are, commit as they are". THIS CHOICE IS VERY IMPORTANT. OTHERS BREAK AUTOMAKE. +* Install msys-git from (http://msysgit.github.io/). During installation you +are asked to make a choice about how line endings are treated by git. Choose +"Checkout line endings as they are, commit as they are". THIS CHOICE IS VERY +IMPORTANT. OTHERS BREAK AUTOMAKE. General rules for compilation ***************************** -- It is recommended that you create a directory somewhere with a path without any spaces or ~ characters, for example c:\sources\. - This is the place where source code must be compiled. -- git commands (to retrieve source code) must be performed within msys-git terminal. -- all other commands (configure, autogen.sh, make) must be done within the mingw shell (msys). -In both msys and msys-git windows, change into the directory you created for sources: -cd /c/sources -- make sure pkg-config works by adding this env variable to your terminal: - export PKG_CONFIG_PATH=/usr/lib/pkgconfig +* It is recommended that you create a directory somewhere with a path without + any spaces or ~ characters, for example c:\sources\. This is the place where + source code must be compiled. +* git commands (to retrieve source code) must be performed within msys-git + terminal. +* all other commands (configure, autogen.sh, make) must be done within the + mingw shell (msys). In both msys and msys-git windows, change into the + directory you created for sources: + cd /c/sources + +* make sure pkg-config works by adding this env variable to your terminal: + export PKG_CONFIG_PATH=/usr/lib/pkgconfig Building belle-sip ****************** - * make sure that java version 1.6 is available in the PATH. java-1.7 will not work with antlr generator. + * make sure that java version 1.6 is available in the PATH. java-1.7 will + not work with antlr generator. * download the sources with msys-git shell using the following command: $ git clone git://git.linphone.org/belle-sip.git * compile and install @@ -80,11 +90,12 @@ Building Linphone $ git clone git://git.linphone.org/linphone.git --recursive * compile - #always run autogen.sh after a git checkout or update + #always run autogen.sh after a git checkout or update $ ./autogen.sh $ ./configure --prefix=/usr --enable-shared --disable-static - #note: in order to use the tunnel (commercial extension), append --enable-tunnel to the configure line above. + #note: in order to use the tunnel (commercial extension), append + #--enable-tunnel to the configure line above. $ make $ make install @@ -92,15 +103,18 @@ Building Linphone #Option: make a portable binary zip of linphone $ make zip - #additionally you can make binary installer if you have Inno Setup 5 installed in its default path + #additionally you can make binary installer if you have Inno Setup 5 + installed in its default path $ make setup.exe - #now you're done, you have a fresh linphone windows installer in the current directory. + #now you're done, you have a fresh linphone windows installer in the + current directory. Building plugins (optional) *************************** - This the example for msx264 (H264 plugin), the same applies for other linphone plugins. + This the example for msx264 (H264 plugin), the same applies for other + linphone plugins. $ git clone git://git.linphone.org/msx264.git $ cd msx264 $ ./autogen.sh @@ -115,17 +129,17 @@ Building plugins (optional) * Notes about linphone-deps generation * ****************************************************** -Linphone-deps is a collection of linphone dependencies, that are for some of them difficult -to find as windows binaries. -These notes are useful if you want to upgrade part of the software that is included in the -linphone-deps packages. +Linphone-deps is a collection of linphone dependencies, that are for some of +them difficult to find as windows binaries. These notes are useful if you want +to upgrade part of the software that is included in the linphone-deps packages. List of software included in linphone-deps: antlr3c (compiled) bzrtp (compiled) polarssl (compiled libsrtp (compiled) -libavcodec, libavutil, libavformat, libavdevice, libswscale (compiled, all these from ffmpeg) +libavcodec, libavutil, libavformat, libavdevice, libswscale (compiled, all +these from ffmpeg) libtheora (from the web) libx264 (compiled from the version distributed from linphone's web site) libogg (from the web) @@ -137,8 +151,10 @@ libsoup (compiled) libsqlite3 (compiled) Remarks: -For every package compiled that goes into linphone-deps, .la files (libtool files) must be removed to avoid libtool errors. -When running "make install DESTDIR=", somepath must be absolute and should not contain any ~ or space. +For every package compiled that goes into linphone-deps, .la files (libtool +files) must be removed to avoid libtool errors. When running "make install +DESTDIR=", somepath must be absolute and should not contain any ~ or +space. - building antlr3c * download the sources with: @@ -192,9 +208,12 @@ When running "make install DESTDIR=", somepath must be absolute and sh ./configure --enable-shared --disable-static --enable-memalign-hack --extra-cflags="-fno-common" --enable-gpl && make make install DESTDIR=/home//ffmpeg-install Copy to ~/ffmpeg-install/usr/local/* to linphone-deps/. - Copy also all *.dll.a files from the build tree to lib/ directort of linphone-deps. These are the implibs necessary to link a program against the dlls. + Copy also all *.dll.a files from the build tree to lib/ directort of + linphone-deps. These are the implibs necessary to link a program against the + dlls. -- building libxml2: the binaries found on the internet are generated with MSVC++, and for obscure reason they are not suitable for building libsoup +- building libxml2: the binaries found on the internet are generated with + MSVC++, and for obscure reason they are not suitable for building libsoup (that requires libxml2). ./configure --enable-shared --disable-static && make && make install DESTDIR=/home//libxml2-install copy ~/libxml2-install/usr/local/* into linphone-deps/. @@ -217,12 +236,14 @@ When running "make install DESTDIR=", somepath must be absolute and sh - add to linphone-deps - building libsoup (only required for buddylookup plugin) - - download source from gnome ftp (warning: at the time of the writing only version 2.26.x can compile with the - glib version supplied in the gtk-bundle, 2.27 requires a new version of glib) + - download source from gnome ftp (warning: at the time of the writing + only version 2.26.x can compile with the glib version supplied in the + gtk-bundle, 2.27 requires a new version of glib) - uncompress libgnutls zip in / - make sure you have libxml2 installed in / - - apply a bugfix patch (fix gnutls support on windows, completely broken otherwise). The patch - is in linphone-deps/src, apply it this way: + - apply a bugfix patch (fix gnutls support on windows, completely + broken otherwise). The patch is in linphone-deps/src, apply it this + way: cd libsoup-2.26.* cd libsoup patch -p0 < libsoup-gnutls-bugfix.patch diff --git a/build/android/Android.mk b/build/android/Android.mk index 9cf269871..fbdeff652 100755 --- a/build/android/Android.mk +++ b/build/android/Android.mk @@ -85,7 +85,8 @@ LOCAL_CFLAGS += \ -DHAVE_CONFIG_H \ -DLIBLINPHONE_VERSION=\"$(LIBLINPHONE_VERSION)\" \ -DLINPHONE_PLUGINS_DIR=\"\\tmp\" \ - -DUSE_BELLESIP + -DUSE_BELLESIP \ + -DHAVE_ZLIB LOCAL_CFLAGS += -DIN_LINPHONE @@ -118,7 +119,7 @@ LOCAL_C_INCLUDES += \ $(LOCAL_PATH)/../../externals/libxml2/include \ $(LOCAL_PATH)/../../externals/build/libxml2 -LOCAL_LDLIBS += -llog -ldl +LOCAL_LDLIBS += -llog -ldl -lz LOCAL_STATIC_LIBRARIES := \ cpufeatures \ diff --git a/build/android/liblinphone_tester.mk b/build/android/liblinphone_tester.mk index 9f1ab7408..d62f055d8 100644 --- a/build/android/liblinphone_tester.mk +++ b/build/android/liblinphone_tester.mk @@ -37,10 +37,10 @@ LOCAL_MODULE_FILENAME := liblinphone_tester-$(TARGET_ARCH_ABI) LOCAL_SRC_FILES += $(common_SRC_FILES) LOCAL_C_INCLUDES = $(common_C_INCLUDES) LOCAL_CFLAGS = -DIN_LINPHONE -LOCAL_LDLIBS := -llog +LOCAL_LDLIBS := -llog -lz ifeq ($(BUILD_MATROSKA), 1) -LOCAL_CFLAGS += -DHAVE_MATROSKA +LOCAL_CFLAGS += -DHAVE_MATROSKA -DHAVE_ZLIB endif LOCAL_SHARED_LIBRARIES := cunit liblinphone diff --git a/build/wp8/LibLinphone.vcxproj b/build/wp8/LibLinphone.vcxproj index 7e692e325..93900b840 100644 --- a/build/wp8/LibLinphone.vcxproj +++ b/build/wp8/LibLinphone.vcxproj @@ -54,7 +54,7 @@ Level4 $(ProjectDir)..\..\..\belle-sip\include;$(ProjectDir)..\..\oRTP\include;$(ProjectDir)..\..\mediastreamer2\include;$(ProjectDir)..\..\..\tunnel\include;$(ProjectDir)..\..\coreapi;$(ProjectDir)..\..\include;$(SolutionDir)$(Platform)\$(Configuration)\include;$(ProjectDir)..\..\..\zlib;$(ProjectDir)..\..\..\sqlite\;$(ProjectDir);%(AdditionalIncludeDirectories) - __STDC_CONSTANT_MACROS;_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;_USRDLL;WINDOW_NATIVE;_TRUE_TIME;IN_LINPHONE;USE_BELLESIP;TUNNEL_ENABLED;VIDEO_ENABLED;LINPHONE_PACKAGE_NAME="linphone";LIBLINPHONE_EXPORTS;LINPHONE_PLUGINS_DIR=".";UNICODE;_XKEYCHECK_H;HAVE_ZLIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + __STDC_CONSTANT_MACROS;_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;_USRDLL;WINDOW_NATIVE;_TRUE_TIME;IN_LINPHONE;USE_BELLESIP;TUNNEL_ENABLED;VIDEO_ENABLED;LINPHONE_PACKAGE_NAME="linphone";LIBLINPHONE_EXPORTS;LINPHONE_PLUGINS_DIR="\\linphone\\plugins";UNICODE;_XKEYCHECK_H;HAVE_ZLIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) Default NotUsing false @@ -220,4 +220,4 @@ - \ No newline at end of file + diff --git a/build/wp8/LibLinphone_no_tunnel.vcxproj b/build/wp8/LibLinphone_no_tunnel.vcxproj new file mode 100644 index 000000000..6d8167046 --- /dev/null +++ b/build/wp8/LibLinphone_no_tunnel.vcxproj @@ -0,0 +1,219 @@ + + + + + Debug + Win32 + + + Debug + ARM + + + Release + Win32 + + + Release + ARM + + + + {08dd0d38-d9b5-4626-b60d-b4d76b571142} + LibLinphone + en-US + 11.0 + + + + DynamicLibrary + true + v110_wp80 + false + + + DynamicLibrary + false + true + v110_wp80 + false + + + + + + + + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\$(TargetName)\ + + + false + + + + Level4 + $(ProjectDir)..\..\..\belle-sip\include;$(ProjectDir)..\..\oRTP\include;$(ProjectDir)..\..\mediastreamer2\include;$(ProjectDir)..\..\..\tunnel\include;$(ProjectDir)..\..\coreapi;$(ProjectDir)..\..\include;$(SolutionDir)$(Platform)\$(Configuration)\include;$(ProjectDir)..\..\..\zlib;$(ProjectDir)..\..\..\sqlite\;$(ProjectDir);%(AdditionalIncludeDirectories) + __STDC_CONSTANT_MACROS;_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;_USRDLL;WINDOW_NATIVE;_TRUE_TIME;IN_LINPHONE;USE_BELLESIP;VIDEO_ENABLED;LINPHONE_PACKAGE_NAME="linphone";LIBLINPHONE_EXPORTS;LINPHONE_PLUGINS_DIR="\\linphone\\plugins";UNICODE;_XKEYCHECK_H;HAVE_ZLIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + Default + NotUsing + false + $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) + + + Console + false + false + belle-sip_no_tunnel.lib;mediastreamer2.lib;ws2_32.lib;ortp.lib;gsm.lib;speex.lib;speexdsp.lib;libxml2.lib;sqlite.lib;zlib.lib;%(AdditionalDependencies) + $(SolutionDir)$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + $(TargetDir)$(TargetName).lib + + + version.bat + + + Batch script to get the git version + + + + + _DEBUG;MSG_STORAGE_ENABLED;%(PreprocessorDefinitions) + + + true + + + false + + + + + NDEBUG;MSG_STORAGE_ENABLED;%(PreprocessorDefinitions) + MaxSpeed + true + true + true + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + false + + + + + {1db09afe-fc9b-472e-a746-0e33f8ef8883} + + + {4c225a82-800b-427b-ba7b-61686a9b347f} + + + {9924ac72-f96c-4e56-94d9-2b025da43c6b} + + + {072fad20-7007-4da2-b2e7-16ce2b219f67} + + + {36b528f9-fb79-4078-a16b-0a7442581bb7} + + + {d22bd217-d0f8-4274-9b3a-f3f35f46482c} + + + {b16b81a9-bef2-44c9-b603-1065183ae844} + + + {0565952a-ea62-46a2-8261-f5b4b490da42} + + + {a45d63b9-60de-476c-8836-f8eedbe139d0} + + + {027bad0e-9179-48c1-9733-7aa7e2c2ec70} + + + {ffc7b532-0502-4d88-ac98-9e89071cbc97} + + + {5dfa07b4-0be9-46a9-ba32-fdf5a55c580b} + + + {7afac3bb-d97b-4578-b9fe-5e1d2b94ea2f} + + + + + diff --git a/configure.ac b/configure.ac index 3f6354c51..f5c3e996d 100644 --- a/configure.ac +++ b/configure.ac @@ -79,7 +79,7 @@ case $target in x86_64-apple-darwin*|i686-apple-darwin*) MSPLUGINS_CFLAGS="" dnl use macport installation - ACLOCAL_MACOS_FLAGS="-I /opt/local/share/aclocal" + AS_IF([test -d "/opt/local/share/aclocal"], [ACLOCAL_MACOS_FLAGS="-I /opt/local/share/aclocal"]) build_macos=yes ;; @@ -638,6 +638,16 @@ AC_ARG_ENABLE(dtls, [dtls=false] ) +AC_ARG_ENABLE(g729bCN, + [AS_HELP_STRING([--enable-g729bCN], [Turn on or off usage of G729AnnexB in RFC3389 implementation of Comfort Noise Payload (default=no)])], + [case "${enableval}" in + yes) g729bCN=true ;; + no) g729bCN=false ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-g729bCN) ;; + esac], + [g729bCN=false] +) + dnl build console if required AM_CONDITIONAL(BUILD_CONSOLE, test x$console_ui = xtrue) diff --git a/coreapi/Makefile.am b/coreapi/Makefile.am index 85f65bcf1..116530afa 100644 --- a/coreapi/Makefile.am +++ b/coreapi/Makefile.am @@ -131,9 +131,9 @@ endif endif liblinphone_la_LIBADD= \ - $(SIPSTACK_LIBS) \ $(MEDIASTREAMER_LIBS) \ - $(ORTP_LIBS) $(OPENSSL_LIBS) \ + $(ORTP_LIBS) \ + $(SIPSTACK_LIBS) \ $(TUNNEL_LIBS) \ $(LIBSOUP_LIBS) \ $(SQLITE3_LIBS) \ @@ -207,15 +207,13 @@ make_gitversion_h: else \ $(ECHO) -n "" > $(builddir)/$(GITVERSION_FILE_TMP) ; \ fi ; \ - else \ - $(ECHO) -n "" > $(builddir)/$(GITVERSION_FILE_TMP) ; \ + if ! test -f $(builddir)/$(GITVERSION_FILE) ; then \ + cp -f $(builddir)/$(GITVERSION_FILE_TMP) $(builddir)/$(GITVERSION_FILE) ; \ + fi ; \ + if test "`cat $(builddir)/$(GITVERSION_FILE_TMP)`" != "`cat $(builddir)/$(GITVERSION_FILE)`" ; then \ + cp -f $(builddir)/$(GITVERSION_FILE_TMP) $(builddir)/$(GITVERSION_FILE) ; \ + fi ; \ + rm -f $(builddir)/$(GITVERSION_FILE_TMP) ; \ fi - if ! test -f $(builddir)/$(GITVERSION_FILE) ; then \ - cp -f $(builddir)/$(GITVERSION_FILE_TMP) $(builddir)/$(GITVERSION_FILE) ; \ - fi - if test "`cat $(builddir)/$(GITVERSION_FILE_TMP)`" != "`cat $(builddir)/$(GITVERSION_FILE)`" ; then \ - cp -f $(builddir)/$(GITVERSION_FILE_TMP) $(builddir)/$(GITVERSION_FILE) ; \ - fi - rm -f $(builddir)/$(GITVERSION_FILE_TMP) ; $(GITVERSION_FILE): make_gitversion_h diff --git a/coreapi/TunnelManager.cc b/coreapi/TunnelManager.cc index bbce579a3..128707a12 100644 --- a/coreapi/TunnelManager.cc +++ b/coreapi/TunnelManager.cc @@ -202,8 +202,8 @@ void TunnelManager::setMode(LinphoneTunnelMode mode) { return; } ms_message("TunnelManager: switching mode from %s to %s", - tunnel_mode_to_string(mMode), - tunnel_mode_to_string(mode)); + linphone_tunnel_mode_to_string(mMode), + linphone_tunnel_mode_to_string(mode)); switch(mode) { case LinphoneTunnelModeEnable: if(mState == disabled) { diff --git a/coreapi/authentication.c b/coreapi/authentication.c index de7248316..0306803f8 100644 --- a/coreapi/authentication.c +++ b/coreapi/authentication.c @@ -200,7 +200,7 @@ static char * remove_quotes(char * input){ return input; } -static int realm_match(const char *realm1, const char *realm2){ +static bool_t realm_match(const char *realm1, const char *realm2){ if (realm1==NULL && realm2==NULL) return TRUE; if (realm1!=NULL && realm2!=NULL){ if (strcmp(realm1,realm2)==0) return TRUE; @@ -226,7 +226,7 @@ static const LinphoneAuthInfo *find_auth_info(LinphoneCore *lc, const char *user LinphoneAuthInfo *pinfo = (LinphoneAuthInfo*)elem->data; if (username && pinfo->username && strcmp(username,pinfo->username)==0) { if (realm && domain){ - if (pinfo->realm && strcmp(realm,pinfo->realm)==0 + if (pinfo->realm && realm_match(realm,pinfo->realm) && pinfo->domain && strcmp(domain,pinfo->domain)==0) { return pinfo; } @@ -238,9 +238,9 @@ static const LinphoneAuthInfo *find_auth_info(LinphoneCore *lc, const char *user } ret=pinfo; } - } else if (domain && pinfo->domain && strcmp(domain,pinfo->domain)==0) { + } else if (domain && pinfo->domain && strcmp(domain,pinfo->domain)==0 && pinfo->ha1==NULL) { return pinfo; - } else if (!domain) { + } else if (!domain && pinfo->ha1==NULL) { return pinfo; } } @@ -271,6 +271,7 @@ const LinphoneAuthInfo *linphone_core_find_auth_info(LinphoneCore *lc, const cha if (ai==NULL){ ai=find_auth_info(lc,username,NULL,NULL); } + /*if (ai) ms_message("linphone_core_find_auth_info(): returning auth info username=%s, realm=%s", ai->username, ai->realm);*/ return ai; } diff --git a/coreapi/bellesip_sal/sal_impl.c b/coreapi/bellesip_sal/sal_impl.c index 3b3c24955..9829d22b3 100644 --- a/coreapi/bellesip_sal/sal_impl.c +++ b/coreapi/bellesip_sal/sal_impl.c @@ -1149,7 +1149,7 @@ void sal_enable_sip_update_method(Sal *ctx,bool_t value) { ctx->enable_sip_update=value; } -void sal_default_enable_sdp_removal(Sal *sal, bool_t enable) { - if (enable) ms_message("Enabling SDP removal feature by default for all new SalOp in Sal[%p]!", sal); - sal->default_sdp_removal = enable; +void sal_default_set_sdp_handling(Sal *sal, SalOpSDPHandling sdp_handling_method) { + if (sdp_handling_method != SalOpSDPNormal ) ms_message("Enabling special SDP handling for all new SalOp in Sal[%p]!", sal); + sal->default_sdp_handling = sdp_handling_method; } diff --git a/coreapi/bellesip_sal/sal_impl.h b/coreapi/bellesip_sal/sal_impl.h index 21aeadc74..a2ec659f7 100644 --- a/coreapi/bellesip_sal/sal_impl.h +++ b/coreapi/bellesip_sal/sal_impl.h @@ -24,8 +24,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "belle-sip/belle-sip.h" #include "belle-sip/belle-sdp.h" - - struct Sal{ SalCallbacks callbacks; MSList *pending_auths;/*MSList of SalOp */ @@ -52,7 +50,7 @@ struct Sal{ bool_t enable_test_features; bool_t no_initial_route; bool_t enable_sip_update; /*true by default*/ - bool_t default_sdp_removal; + SalOpSDPHandling default_sdp_handling; }; typedef enum SalOpState { @@ -107,7 +105,7 @@ struct SalOp{ bool_t call_released; bool_t manual_refresher; bool_t has_auth_pending; - bool_t sdp_removal; /* do not add SDP in outgoing INVITE and remove it from incoming INVITE */ + SalOpSDPHandling sdp_handling; int auth_requests; /*number of auth requested for this op*/ }; diff --git a/coreapi/bellesip_sal/sal_op_call.c b/coreapi/bellesip_sal/sal_op_call.c index 7cf64947e..58b7e9290 100644 --- a/coreapi/bellesip_sal/sal_op_call.c +++ b/coreapi/bellesip_sal/sal_op_call.c @@ -94,7 +94,7 @@ static int set_sdp(belle_sip_message_t *msg,belle_sdp_session_description_t* ses /* try to marshal the description. This could go higher than 2k so we iterate */ while( error != BELLE_SIP_OK && bufLen <= hardlimit && buff != NULL){ - error = belle_sip_object_marshal(BELLE_SIP_OBJECT(session_desc),buff,bufLen,&length); + error = belle_sip_object_marshal(BELLE_SIP_OBJECT(session_desc),buff,bufLen,&length); if( error != BELLE_SIP_OK ){ bufLen *= 2; length = 0; @@ -217,7 +217,8 @@ static void call_process_response(void *op_base, const belle_sip_response_event_ dialog_state=dialog ? belle_sip_dialog_get_state(dialog) : BELLE_SIP_DIALOG_NULL; method=belle_sip_request_get_method(req); ms_message("Op [%p] receiving call response [%i], dialog is [%p] in state [%s]",op,code,dialog,belle_sip_dialog_state_to_string(dialog_state)); - + /*to make sure no cb will destroy op*/ + sal_op_ref(op); switch(dialog_state) { case BELLE_SIP_DIALOG_NULL: case BELLE_SIP_DIALOG_EARLY: { @@ -316,6 +317,7 @@ static void call_process_response(void *op_base, const belle_sip_response_event_ } break; } + sal_op_unref(op); } static void call_process_timeout(void *user_ctx, const belle_sip_timeout_event_t *event) { @@ -392,19 +394,23 @@ static int extract_sdp(SalOp *op, belle_sip_message_t* message,belle_sdp_session const char *body; belle_sip_header_content_type_t* content_type; - if (op&&op->sdp_removal){ - ms_error("Removed willingly SDP because sal_call_enable_sdp_removal was set to TRUE."); + if (op&&op->sdp_handling == SalOpSDPSimulateError){ + ms_error("Simulating SDP parsing error for op %p", op); *session_desc=NULL; *error=SalReasonNotAcceptable; return -1; + } else if( op && op->sdp_handling == SalOpSDPSimulateRemove){ + ms_error("Simulating no SDP for op %p", op); + *session_desc = NULL; + return 0; } - + body = belle_sip_message_get_body(message); if(body == NULL) { *session_desc = NULL; return 0; } - + content_type = belle_sip_message_get_header_by_type(message,belle_sip_header_content_type_t); if (content_type){ if (strcmp("application",belle_sip_header_content_type_get_type(content_type))==0 @@ -735,8 +741,14 @@ static void handle_offer_answer_response(SalOp* op, belle_sip_response_t* respon set_sdp_from_desc(BELLE_SIP_MESSAGE(response),op->base.local_media); }else{ - if (op->sdp_answer==NULL) - sdp_process(op); + if ( op->sdp_answer==NULL ) + { + if( op->sdp_handling == SalOpSDPSimulateRemove ){ + ms_warning("Simulating SDP removal in answer for op %p", op); + } else { + sdp_process(op); + } + } if (op->sdp_answer){ set_sdp(BELLE_SIP_MESSAGE(response),op->sdp_answer); diff --git a/coreapi/bellesip_sal/sal_op_impl.c b/coreapi/bellesip_sal/sal_op_impl.c index 5c953ffc5..bdd120ae9 100644 --- a/coreapi/bellesip_sal/sal_op_impl.c +++ b/coreapi/bellesip_sal/sal_op_impl.c @@ -25,7 +25,7 @@ SalOp * sal_op_new(Sal *sal){ op->type=SalOpUnknown; op->privacy=SalPrivacyNone; op->manual_refresher=FALSE;/*tells that requests with expiry (SUBSCRIBE, PUBLISH) will be automatically refreshed*/ - op->sdp_removal=sal->default_sdp_removal; + op->sdp_handling=sal->default_sdp_handling; sal_op_ref(op); return op; } @@ -799,7 +799,7 @@ void sal_op_stop_refreshing(SalOp *op){ } } -void sal_call_enable_sdp_removal(SalOp *h, bool_t enable) { - if (enable) ms_message("Enabling SDP removal feature for SalOp[%p]!", h); - h->sdp_removal = enable; +void sal_call_set_sdp_handling(SalOp *h, SalOpSDPHandling handling) { + if (handling != SalOpSDPNormal) ms_message("Enabling special SDP handling for SalOp[%p]!", h); + h->sdp_handling = handling; } diff --git a/coreapi/bellesip_sal/sal_op_registration.c b/coreapi/bellesip_sal/sal_op_registration.c index f6b6547a3..d56587db2 100644 --- a/coreapi/bellesip_sal/sal_op_registration.c +++ b/coreapi/bellesip_sal/sal_op_registration.c @@ -74,6 +74,7 @@ static void register_refresher_listener (belle_sip_refresher_t* refresher int sal_register(SalOp *op, const char *proxy, const char *from, int expires){ belle_sip_request_t *req; belle_sip_uri_t* req_uri; + belle_sip_header_t* accept_header; if (op->refresher){ belle_sip_refresher_stop(op->refresher); @@ -92,6 +93,8 @@ int sal_register(SalOp *op, const char *proxy, const char *from, int expires){ time_t curtime=time(NULL); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(belle_sip_header_date_create_from_time(&curtime))); } + accept_header = belle_sip_header_create("Accept", "application/sdp, text/plain, application/vnd.gsma.rcs-ft-http+xml"); + belle_sip_message_add_header(BELLE_SIP_MESSAGE(req), accept_header); belle_sip_message_set_header(BELLE_SIP_MESSAGE(req),(belle_sip_header_t*)sal_op_create_contact(op)); return sal_op_send_and_create_refresher(op,req,expires,register_refresher_listener); } diff --git a/coreapi/bellesip_sal/sal_sdp.c b/coreapi/bellesip_sal/sal_sdp.c index ce780c1cf..806b50e10 100644 --- a/coreapi/bellesip_sal/sal_sdp.c +++ b/coreapi/bellesip_sal/sal_sdp.c @@ -389,23 +389,6 @@ belle_sdp_session_description_t * media_description_to_sdp ( const SalMediaDescr if (desc->ice_pwd[0] != '\0') belle_sdp_session_description_add_attribute(session_desc, belle_sdp_attribute_create("ice-pwd",desc->ice_pwd)); if (desc->ice_ufrag[0] != '\0') belle_sdp_session_description_add_attribute(session_desc, belle_sdp_attribute_create("ice-ufrag",desc->ice_ufrag)); - /* insert DTLS session attribute if needed */ - if ((desc->dtls_role != SalDtlsRoleInvalid) && (strlen(desc->dtls_fingerprint)>0)) { - switch(desc->dtls_role) { - case SalDtlsRoleIsClient: - belle_sdp_session_description_add_attribute(session_desc, belle_sdp_attribute_create("setup","active")); - break; - case SalDtlsRoleIsServer: - belle_sdp_session_description_add_attribute(session_desc, belle_sdp_attribute_create("setup","passive")); - break; - case SalDtlsRoleUnset: - default: - belle_sdp_session_description_add_attribute(session_desc, belle_sdp_attribute_create("setup","actpass")); - break; - } - belle_sdp_session_description_add_attribute(session_desc, belle_sdp_attribute_create("fingerprint",desc->dtls_fingerprint)); - } - if (desc->rtcp_xr.enabled == TRUE) { belle_sdp_session_description_add_attribute(session_desc, create_rtcp_xr_attribute(&desc->rtcp_xr)); } @@ -691,8 +674,6 @@ static SalStreamDescription * sdp_to_stream_description(SalMediaDescription *md, stream=&md->streams[md->nb_streams]; media=belle_sdp_media_description_get_media ( media_desc ); - memset ( stream,0,sizeof ( *stream ) ); - proto = belle_sdp_media_get_protocol ( media ); stream->proto=SalProtoOther; if ( proto ) { @@ -765,8 +746,6 @@ static SalStreamDescription * sdp_to_stream_description(SalMediaDescription *md, } /* Read DTLS specific attributes : check is some are found in the stream description otherwise copy the session description one(which are at least set to Invalid) */ - stream->dtls_role = SalDtlsRoleInvalid; - stream->dtls_fingerprint[0] = '\0'; if (((stream->proto == SalProtoUdpTlsRtpSavpf) || (stream->proto == SalProtoUdpTlsRtpSavp))) { attribute=belle_sdp_media_description_get_attribute(media_desc,"setup"); if (attribute && (value=belle_sdp_attribute_get_value(attribute))!=NULL){ @@ -777,20 +756,9 @@ static SalStreamDescription * sdp_to_stream_description(SalMediaDescription *md, } else if (strncmp(value, "passive", 7) == 0) { stream->dtls_role = SalDtlsRoleIsServer; } - - if (stream->dtls_role != SalDtlsRoleInvalid || md->dtls_role != SalDtlsRoleInvalid) { - attribute=belle_sdp_media_description_get_attribute(media_desc,"fingerprint"); - if (attribute && (value=belle_sdp_attribute_get_value(attribute))!=NULL){ - strncpy(stream->dtls_fingerprint, value, sizeof(stream->dtls_fingerprint)-1); - } else { - /* no valid stream attributes, get them from session */ - if (stream->dtls_role == SalDtlsRoleInvalid) stream->dtls_role = md->dtls_role; - strncpy(stream->dtls_fingerprint, md->dtls_fingerprint, strlen(md->dtls_fingerprint)+1); - } - } - } else { /* no setup attribute found in the stream, get the one from the session */ - stream->dtls_role = md->dtls_role; - strncpy(stream->dtls_fingerprint, md->dtls_fingerprint, strlen(md->dtls_fingerprint)+1); + } + if (stream->dtls_role != SalDtlsRoleInvalid && (attribute=belle_sdp_media_description_get_attribute(media_desc,"fingerprint"))) { + strncpy(stream->dtls_fingerprint, belle_sdp_attribute_get_value(attribute),sizeof(stream->dtls_fingerprint)); } } @@ -823,6 +791,8 @@ int sdp_to_media_description ( belle_sdp_session_description_t *session_desc, S belle_sdp_media_description_t* media_desc; belle_sdp_session_name_t *sname; const char* value; + SalDtlsRole session_role=SalDtlsRoleInvalid; + int i; desc->nb_streams = 0; desc->dir = SalStreamSendRecv; @@ -849,25 +819,23 @@ int sdp_to_media_description ( belle_sdp_session_description_t *session_desc, S desc->dir=SalStreamInactive; } - /* Read dtls specific session attributes if any (setup and fingerprint - rfc5763) */ - /* Presence of a valid dtls offer(setup and fingerprint attribute) is set in media Description by a dtls_fingerprint string longer than 0 - * and a dtls_role != SalDtlsRoleInvalid */ - desc->dtls_role = SalDtlsRoleInvalid; - desc->dtls_fingerprint[0] = '\0'; + /*DTLS attributes can be defined at session level.*/ value=belle_sdp_session_description_get_attribute_value(session_desc,"setup"); if (value){ if (strncmp(value, "actpass", 7) == 0) { - desc->dtls_role = SalDtlsRoleUnset; + session_role = SalDtlsRoleUnset; } else if (strncmp(value, "active", 6) == 0) { - desc->dtls_role = SalDtlsRoleIsClient; + session_role = SalDtlsRoleIsClient; } else if (strncmp(value, "passive", 7) == 0) { - desc->dtls_role = SalDtlsRoleIsServer; + session_role = SalDtlsRoleIsServer; } } - value=belle_sdp_session_description_get_attribute_value(session_desc,"fingerprint"); - if (value){ - strncpy(desc->dtls_fingerprint, value, sizeof(desc->dtls_fingerprint)-1); + /*copy dtls attributes to every streams, might be overwritten stream by stream*/ + for (i=0;istreams[i].dtls_fingerprint, value, sizeof(desc->streams[i].dtls_fingerprint)); + desc->streams[i].dtls_role=session_role; /*set or reset value*/ } /* Get ICE remote ufrag and remote pwd, and ice_lite flag */ diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index 47032e22e..fa29096b7 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -76,7 +76,7 @@ void linphone_core_update_streams_destinations(LinphoneCore *lc, LinphoneCall *c static void _clear_early_media_destinations(LinphoneCall *call, MediaStream *ms){ RtpSession *session=ms->sessions.rtp_session; rtp_session_clear_aux_remote_addr(session); - if (!call->ice_session) rtp_session_set_symmetric_rtp(session,TRUE);/*restore symmetric rtp if ICE is not used*/ + if (!call->ice_session) rtp_session_set_symmetric_rtp(session,linphone_core_symmetric_rtp_enabled(call->core));/*restore symmetric rtp if ICE is not used*/ } static void clear_early_media_destinations(LinphoneCall *call){ @@ -221,7 +221,7 @@ static bool_t is_duplicate_call(LinphoneCore *lc, const LinphoneAddress *from, c static bool_t already_a_call_with_remote_address(const LinphoneCore *lc, const LinphoneAddress *remote) { MSList *elem; - ms_warning(" searching for already_a_call_with_remote_address."); + ms_message("Searching for already_a_call_with_remote_address."); for(elem=lc->calls;elem!=NULL;elem=elem->next){ const LinphoneCall *call=(LinphoneCall*)elem->data; @@ -494,6 +494,14 @@ static void call_accepted(SalOp *op){ break; } + if( (call->prevstate == LinphoneCallOutgoingEarlyMedia) && (md == NULL || sal_media_description_empty(md)) ){ + /* media description is null or empty because no SDP was received in the 200 OK, we can possibly use the early-media SDP. */ + if( call->resultdesc != NULL){ + ms_message("Using early media SDP since none were received with the 200 OK"); + md = call->resultdesc; + } + } + if (md && !sal_media_description_empty(md) && !linphone_core_incompatible_security(lc,md)){ linphone_call_update_remote_session_id_and_ver(call); if (sal_media_description_has_dir(md,SalStreamSendOnly) || diff --git a/coreapi/chat.c b/coreapi/chat.c index 72660e011..269af03e6 100644 --- a/coreapi/chat.c +++ b/coreapi/chat.c @@ -281,7 +281,6 @@ static void linphone_chat_message_process_response_from_post_file(void *data, co belle_http_request_listener_callbacks_t cbs={0}; belle_http_request_listener_t *l; belle_generic_uri_t *uri; - belle_http_request_t *req; belle_sip_multipart_body_handler_t *bh; char* ua; char *first_part_header; @@ -311,26 +310,24 @@ static void linphone_chat_message_process_response_from_post_file(void *data, co /* create the http request: do not include the message header at this point, it is done by bellesip when setting the multipart body handler in the message */ ua = ms_strdup_printf("%s/%s", linphone_core_get_user_agent_name(), linphone_core_get_user_agent_version()); uri=belle_generic_uri_parse(linphone_core_get_file_transfer_server(msg->chat_room->lc)); - req=belle_http_request_create("POST", + if (msg->http_request) belle_sip_object_unref(msg->http_request); + msg->http_request=belle_http_request_create("POST", uri, belle_sip_header_create("User-Agent",ua), NULL); + belle_sip_object_ref(msg->http_request); /* keep a reference to the http request to be able to cancel it during upload */ ms_free(ua); - belle_sip_message_set_body_handler(BELLE_SIP_MESSAGE(req),BELLE_SIP_BODY_HANDLER(bh)); + belle_sip_message_set_body_handler(BELLE_SIP_MESSAGE(msg->http_request),BELLE_SIP_BODY_HANDLER(bh)); cbs.process_response=linphone_chat_message_process_response_from_post_file; cbs.process_io_error=process_io_error_upload; cbs.process_auth_requested=process_auth_requested_upload; l=belle_http_request_listener_create_from_callbacks(&cbs,msg); - msg->http_request=req; /* update the reference to the http request to be able to cancel it during upload */ - belle_http_provider_send_request(msg->chat_room->lc->http_provider,req,l); + belle_http_provider_send_request(msg->chat_room->lc->http_provider,msg->http_request,l); } if (code == 200 ) { /* file has been uploaded correctly, get server reply and send it */ - const char *body; - /* TODO Check that the transfer has not been cancelled, note this shall be removed once the belle sip API will provide a cancel request as we shall never reach this part if the transfer is actually cancelled */ - if (msg->http_request == NULL) { - return; - } - body = belle_sip_message_get_body((belle_sip_message_t *)event->response); + const char *body = belle_sip_message_get_body((belle_sip_message_t *)event->response); + belle_sip_object_unref(msg->http_request); + msg->http_request = NULL; msg->message = ms_strdup(body); msg->content_type = ms_strdup("application/vnd.gsma.rcs-ft-http+xml"); if (msg->cb) { @@ -588,7 +585,6 @@ static void _linphone_chat_room_send_message(LinphoneChatRoom *cr, LinphoneChatM belle_http_request_listener_callbacks_t cbs={0}; belle_http_request_listener_t *l; belle_generic_uri_t *uri; - belle_http_request_t *req; const char *transfer_server = linphone_core_get_file_transfer_server(cr->lc); if (transfer_server == NULL) { @@ -597,17 +593,17 @@ static void _linphone_chat_room_send_message(LinphoneChatRoom *cr, LinphoneChatM } uri=belle_generic_uri_parse(transfer_server); - req=belle_http_request_create("POST", + msg->http_request=belle_http_request_create("POST", uri, NULL, NULL, NULL); + belle_sip_object_ref(msg->http_request); /* keep a reference on the request to be able to cancel it */ cbs.process_response=linphone_chat_message_process_response_from_post_file; cbs.process_io_error=process_io_error_upload; cbs.process_auth_requested=process_auth_requested_upload; l=belle_http_request_listener_create_from_callbacks(&cbs,msg); /* give msg to listener to be able to start the actual file upload when server answer a 204 No content */ - msg->http_request = req; /* keep a reference on the request to be able to cancel it */ - belle_http_provider_send_request(cr->lc->http_provider,req,l); + belle_http_provider_send_request(cr->lc->http_provider,msg->http_request,l); linphone_chat_message_unref(msg); return; } @@ -849,6 +845,10 @@ static void process_im_is_composing_notification(LinphoneChatRoom *cr, xmlparsin cr->remote_is_composing = state; linphone_core_notify_is_composing_received(cr->lc, cr); + linphone_free_xml_text_content(state_str); + } + if (refresh_str != NULL) { + linphone_free_xml_text_content(refresh_str); } } @@ -1216,10 +1216,7 @@ const LinphoneContent *linphone_chat_message_get_file_transfer_information(const static void on_recv_body(belle_sip_user_body_handler_t *bh, belle_sip_message_t *msg, void *data, size_t offset, const uint8_t *buffer, size_t size){ LinphoneChatMessage* chatMsg=(LinphoneChatMessage *)data; LinphoneCore *lc = chatMsg->chat_room->lc; - /* TODO: while belle sip doesn't implement the cancel http request method, test if a request is still linked to the message before forwarding the data to callback */ - if (chatMsg->http_request == NULL) { - return; - } + if (linphone_chat_message_cbs_get_file_transfer_recv(chatMsg->callbacks)) { LinphoneBuffer *lb = linphone_buffer_new_from_data(buffer, size); linphone_chat_message_cbs_get_file_transfer_recv(chatMsg->callbacks)(chatMsg, chatMsg->file_transfer_information, lb); @@ -1228,7 +1225,6 @@ static void on_recv_body(belle_sip_user_body_handler_t *bh, belle_sip_message_t /* Legacy: call back given by application level */ linphone_core_notify_file_transfer_recv(lc, chatMsg, chatMsg->file_transfer_information, (char *)buffer, size); } - return; } @@ -1323,17 +1319,16 @@ void linphone_chat_message_download_file(LinphoneChatMessage *message) { belle_http_request_listener_callbacks_t cbs={0}; belle_http_request_listener_t *l; belle_generic_uri_t *uri; - belle_http_request_t *req; const char *url=message->external_body_url; char* ua = ms_strdup_printf("%s/%s", linphone_core_get_user_agent_name(), linphone_core_get_user_agent_version()); uri=belle_generic_uri_parse(url); - req=belle_http_request_create("GET", + message->http_request=belle_http_request_create("GET", uri, belle_sip_header_create("User-Agent",ua), NULL); - + belle_sip_object_ref(message->http_request); /* keep a reference on the request to be able to cancel the download */ ms_free(ua); cbs.process_response_headers=linphone_chat_process_response_headers_from_get_file; @@ -1341,10 +1336,9 @@ void linphone_chat_message_download_file(LinphoneChatMessage *message) { cbs.process_io_error=process_io_error_download; cbs.process_auth_requested=process_auth_requested_download; l=belle_http_request_listener_create_from_callbacks(&cbs, (void *)message); - belle_sip_object_data_set(BELLE_SIP_OBJECT(req),"message",(void *)message,NULL); - message->http_request = req; /* keep a reference on the request to be able to cancel the download */ + belle_sip_object_data_set(BELLE_SIP_OBJECT(message->http_request),"message",(void *)message,NULL); message->state = LinphoneChatMessageStateInProgress; /* start the download, status is In Progress */ - belle_http_provider_send_request(message->chat_room->lc->http_provider,req,l); + belle_http_provider_send_request(message->chat_room->lc->http_provider,message->http_request,l); } /** @@ -1365,15 +1359,17 @@ void linphone_chat_message_start_file_download(LinphoneChatMessage *message, Lin * @param msg #LinphoneChatMessage */ void linphone_chat_message_cancel_file_transfer(LinphoneChatMessage *msg) { - ms_message("Cancelled file transfer %s - msg [%p] chat room[%p]", (msg->external_body_url==NULL)?linphone_core_get_file_transfer_server(msg->chat_room->lc):msg->external_body_url, msg, msg->chat_room); - /* TODO: here we shall call the cancel http request from bellesip API when it is available passing msg->http_request */ - /* waiting for this API, just set to NULL the reference to the request in the message and any request */ - msg->http_request = NULL; - if (msg->cb) { - msg->cb(msg, LinphoneChatMessageStateNotDelivered, msg->cb_ud); - } - if (linphone_chat_message_cbs_get_msg_state_changed(msg->callbacks)) { - linphone_chat_message_cbs_get_msg_state_changed(msg->callbacks)(msg, LinphoneChatMessageStateNotDelivered); + if (!belle_http_request_is_cancelled(msg->http_request)) { + ms_message("Cancelled file transfer %s - msg [%p] chat room[%p]", (msg->external_body_url==NULL)?linphone_core_get_file_transfer_server(msg->chat_room->lc):msg->external_body_url, msg, msg->chat_room); + belle_http_provider_cancel_request(msg->chat_room->lc->http_provider, msg->http_request); + belle_sip_object_unref(msg->http_request); + msg->http_request = NULL; + if (msg->cb) { + msg->cb(msg, LinphoneChatMessageStateNotDelivered, msg->cb_ud); + } + if (linphone_chat_message_cbs_get_msg_state_changed(msg->callbacks)) { + linphone_chat_message_cbs_get_msg_state_changed(msg->callbacks)(msg, LinphoneChatMessageStateNotDelivered); + } } } diff --git a/coreapi/content.c b/coreapi/content.c index 332789d2a..36ebbb0a7 100644 --- a/coreapi/content.c +++ b/coreapi/content.c @@ -33,6 +33,7 @@ static void linphone_content_destroy(LinphoneContent *content) { } static void linphone_content_clone(LinphoneContent *obj, const LinphoneContent *ref) { + obj->owned_fields = TRUE; linphone_content_set_type(obj, linphone_content_get_type(ref)); linphone_content_set_subtype(obj, linphone_content_get_subtype(ref)); linphone_content_set_encoding(obj, linphone_content_get_encoding(ref)); diff --git a/coreapi/dict.c b/coreapi/dict.c index 4535e1a27..417bb33f0 100644 --- a/coreapi/dict.c +++ b/coreapi/dict.c @@ -27,7 +27,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** - * @addtogroup linphone_dict + * @addtogroup misc * @{ **/ diff --git a/coreapi/event.h b/coreapi/event.h index 894f3e32a..fe3f984de 100644 --- a/coreapi/event.h +++ b/coreapi/event.h @@ -20,7 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define LINPHONEEVENT_H /** - * @addtogroup subscriptions + * @addtogroup event_api * @{ **/ diff --git a/coreapi/help/doxygen.dox b/coreapi/help/doxygen.dox index 0f8e094f4..a8baa5138 100644 --- a/coreapi/help/doxygen.dox +++ b/coreapi/help/doxygen.dox @@ -221,6 +221,12 @@ void text_received(LinphoneCore *lc, LinphoneChatRoom *room, const LinphoneAddre * **/ + +/** + * @defgroup event_api Managing generic subscriptions and publishes + * The LinphoneEvent api allows application to control subscriptions, receive notifications and make publish to peers, in a generic manner. + */ + /** * @defgroup misc Miscenalleous: logs, version strings, config storage **/ diff --git a/coreapi/linphone_tunnel.cc b/coreapi/linphone_tunnel.cc index 9dd4e8adf..7dd27d890 100644 --- a/coreapi/linphone_tunnel.cc +++ b/coreapi/linphone_tunnel.cc @@ -29,8 +29,6 @@ #include "private.h" #include "lpconfig.h" -static const char *_tunnel_mode_str[3] = { "disable", "enable", "auto" }; - LinphoneTunnel* linphone_core_get_tunnel(const LinphoneCore *lc){ return lc->tunnel; } @@ -234,7 +232,7 @@ void linphone_tunnel_clean_servers(LinphoneTunnel *tunnel){ } void linphone_tunnel_set_mode(LinphoneTunnel *tunnel, LinphoneTunnelMode mode){ - lp_config_set_string(config(tunnel),"tunnel","mode", tunnel_mode_to_string(mode)); + lp_config_set_string(config(tunnel),"tunnel","mode", linphone_tunnel_mode_to_string(mode)); bcTunnel(tunnel)->setMode(mode); } @@ -336,31 +334,13 @@ static void my_ortp_logv(OrtpLogLevel level, const char *fmt, va_list args){ ortp_logv(level,fmt,args); } -LinphoneTunnelMode string_to_tunnel_mode(const char *string) { - if(string != NULL) { - int i; - for(i=0; i<3 && strcmp(string, _tunnel_mode_str[i]) != 0; i++); - if(i<3) { - return (LinphoneTunnelMode)i; - } else { - ms_error("Invalid tunnel mode '%s'", string); - return LinphoneTunnelModeDisable; - } - } else { - return LinphoneTunnelModeDisable; - } -} - -const char *tunnel_mode_to_string(LinphoneTunnelMode mode) { - return _tunnel_mode_str[mode]; -} /** * Startup tunnel using configuration. * Called internally from linphonecore at startup. */ void linphone_tunnel_configure(LinphoneTunnel *tunnel){ - LinphoneTunnelMode mode = string_to_tunnel_mode(lp_config_get_string(config(tunnel), "tunnel", "mode", NULL)); + LinphoneTunnelMode mode = linphone_tunnel_mode_from_string(lp_config_get_string(config(tunnel), "tunnel", "mode", NULL)); bool_t tunnelizeSIPPackets = (bool_t)lp_config_get_int(config(tunnel), "tunnel", "sip", TRUE); linphone_tunnel_enable_logs_with_handler(tunnel,TRUE,my_ortp_logv); linphone_tunnel_load_config(tunnel); diff --git a/coreapi/linphone_tunnel.h b/coreapi/linphone_tunnel.h index f071f3c37..c1c378ed3 100644 --- a/coreapi/linphone_tunnel.h +++ b/coreapi/linphone_tunnel.h @@ -65,14 +65,14 @@ typedef enum _LinphoneTunnelMode { * @return An LinphoneTunnelMode enum. If the passed string is NULL or * does not match with any mode, the LinphoneTunnelModeDisable is returned. */ -LINPHONE_PUBLIC LinphoneTunnelMode string_to_tunnel_mode(const char *string); +LINPHONE_PUBLIC LinphoneTunnelMode linphone_tunnel_mode_from_string(const char *string); /** * Convert a tunnel mode enum into string * @param mode Enum to convert * @return "disable", "enable" or "auto" */ -LINPHONE_PUBLIC const char *tunnel_mode_to_string(LinphoneTunnelMode mode); +LINPHONE_PUBLIC const char *linphone_tunnel_mode_to_string(LinphoneTunnelMode mode); /** * Create a new tunnel configuration diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 164beb5ca..f877feae6 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -356,9 +356,8 @@ typedef struct _CodecConstraints{ MSList *previously_used; }CodecConstraints; -static MSList *make_codec_list(LinphoneCore *lc, CodecConstraints * hints, const MSList *codecs){ +static MSList *make_codec_list(LinphoneCore *lc, CodecConstraints * hints, SalStreamType stype, const MSList *codecs){ MSList *l=NULL; - MSList *specials=NULL; const MSList *it; int nb = 0; @@ -389,8 +388,10 @@ static MSList *make_codec_list(LinphoneCore *lc, CodecConstraints * hints, const nb++; if ((hints->max_codecs > 0) && (nb >= hints->max_codecs)) break; } - specials=create_special_payload_types(lc,l); - l=ms_list_concat(l,specials); + if (stype==SalAudio){ + MSList *specials=create_special_payload_types(lc,l); + l=ms_list_concat(l,specials); + } linphone_core_assign_payload_type_numbers(lc, l); return l; } @@ -438,7 +439,22 @@ static int setup_encryption_key(SalSrtpCryptoAlgo *crypto, MSCryptoSuite suite, } return 0; } +static void setup_dtls_keys(LinphoneCall *call, SalMediaDescription *md){ + int i; + for(i=0; inb_streams; i++) { + if (!sal_stream_description_active(&md->streams[i])) continue; + /* if media encryption is set to DTLS check presence of fingerprint in the call which shall have been set at stream init but it may have failed when retrieving certificate resulting in no fingerprint present and then DTLS not usable */ + if (sal_stream_description_has_dtls(&md->streams[i]) == TRUE) { + strncpy(md->streams[i].dtls_fingerprint, call->dtls_certificate_fingerprint, sizeof(md->streams[i].dtls_fingerprint)); /* get the self fingerprint from call(it's computed at stream init) */ + md->streams[i].dtls_role = SalDtlsRoleUnset; /* if we are offering, SDP will have actpass setup attribute when role is unset, if we are responding the result mediadescription will be set to SalDtlsRoleIsClient */ + } else { + md->streams[i].dtls_fingerprint[0] = '\0'; + md->streams[i].dtls_role = SalDtlsRoleInvalid; + } + } + +} static void setup_encryption_keys(LinphoneCall *call, SalMediaDescription *md){ LinphoneCore *lc=call->core; int i,j; @@ -540,14 +556,11 @@ static void transfer_already_assigned_payload_types(SalMediaDescription *old, Sa static const char *linphone_call_get_bind_ip_for_stream(LinphoneCall *call, int stream_index){ const char *bind_ip=call->af==AF_INET6 ? "::0" : "0.0.0.0"; - + if (stream_index<2 && call->media_ports[stream_index].multicast_ip[0]!='\0'){ if (call->dir==LinphoneCallOutgoing){ - /*as multicast sender, we must decide a local interface to use to send multicast, and bind to it*/ + /*as multicast sender, we must decide a local interface to use to send multicast, and bind to it*/ bind_ip=call->localip; - }else{ - /*as receiver, just bind to the multicast address*/ - bind_ip=call->media_ports[stream_index].multicast_ip; } } return bind_ip; @@ -621,7 +634,7 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * codec_hints.bandwidth_limit=call->params->audio_bw; codec_hints.max_codecs=-1; codec_hints.previously_used=old_md ? old_md->streams[0].already_assigned_payloads : NULL; - l=make_codec_list(lc, &codec_hints, lc->codecs_conf.audio_codecs); + l=make_codec_list(lc, &codec_hints, SalAudio, lc->codecs_conf.audio_codecs); md->streams[0].max_rate=get_max_codec_sample_rate(l); md->streams[0].payloads=l; if (call->audiostream && call->audiostream->ms.sessions.rtp_session) { @@ -646,7 +659,7 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * codec_hints.bandwidth_limit=0; codec_hints.max_codecs=-1; codec_hints.previously_used=old_md ? old_md->streams[1].already_assigned_payloads : NULL; - l=make_codec_list(lc, &codec_hints, lc->codecs_conf.video_codecs); + l=make_codec_list(lc, &codec_hints, SalVideo, lc->codecs_conf.video_codecs); md->streams[1].payloads=l; if (call->videostream && call->videostream->ms.sessions.rtp_session) { char* me = linphone_address_as_string_uri_only(call->me); @@ -672,19 +685,11 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall * codec_hints.bandwidth_limit=0; codec_hints.max_codecs=1; codec_hints.previously_used=NULL; - l = make_codec_list(lc, &codec_hints, lc->codecs_conf.video_codecs); + l = make_codec_list(lc, &codec_hints, SalVideo, lc->codecs_conf.video_codecs); md->streams[i].payloads = l; } - setup_encryption_keys(call,md); - /* if media encryption is set to DTLS check presence of fingerprint in the call which shall have been set at stream init but it may have failed when retrieving certificate resulting in no fingerprint present and then DTLS not usable */ - if ((call->params->media_encryption==LinphoneMediaEncryptionDTLS) && (call->dtls_certificate_fingerprint!= NULL)) { - memcpy(md->dtls_fingerprint, call->dtls_certificate_fingerprint, strlen((const char *)(call->dtls_certificate_fingerprint))); /* get the self fingerprint from call(it's computed at stream init) */ - md->dtls_role = SalDtlsRoleUnset; /* if we are offering, SDP will have actpass setup attribute when role is unset, if we are responding the result mediadescription will be set to SalDtlsRoleIsClient */ - } else { - md->dtls_fingerprint[0] = '\0'; - md->dtls_role = SalDtlsRoleInvalid; - } + setup_dtls_keys(call,md); setup_rtcp_fb(call, md); setup_rtcp_xr(call, md); @@ -996,8 +1001,8 @@ void linphone_call_set_compatible_incoming_call_parameters(LinphoneCall *call, c if (md->streams[i].rtp_addr[i]!='\0' && ms_is_multicast(md->streams[i].rtp_addr)) { strncpy(call->media_ports[i].multicast_ip,md->streams[i].rtp_addr,sizeof(call->media_ports[i].multicast_ip)); ms_message("Disabling rtcp on call [%p], stream [%i] because of multicast",call,i); - call->media_ports[i].rtp_port=md->streams[i].rtp_port; - call->media_ports[i].rtcp_port=0; + call->media_ports[i].mcast_rtp_port=md->streams[i].rtp_port; + call->media_ports[i].mcast_rtcp_port=0; } } } @@ -1788,7 +1793,6 @@ static void _linphone_call_prepare_ice_for_stream(LinphoneCall *call, int stream if ((linphone_core_get_firewall_policy(call->core) == LinphonePolicyUseIce) && (call->ice_session != NULL)){ IceCheckList *cl; rtp_session_set_pktinfo(ms->sessions.rtp_session, TRUE); - rtp_session_set_symmetric_rtp(ms->sessions.rtp_session, FALSE); cl=ice_session_check_list(call->ice_session, stream_index); if (cl == NULL && create_checklist) { cl=ice_check_list_new(); @@ -1837,7 +1841,12 @@ int linphone_call_prepare_ice(LinphoneCall *call, bool_t incoming_offer){ return 0; } - +/*eventually join to a multicast group if told to do so*/ +static void linphone_call_join_multicast_group(LinphoneCall *call, int stream_index, MediaStream *ms){ + if (call->media_ports[stream_index].multicast_ip[stream_index]!='\0' && call->media_ports[stream_index].mcast_rtp_port!=0){ + media_stream_join_multicast_group(ms, call->media_ports[stream_index].multicast_ip); + } +} void linphone_call_init_audio_stream(LinphoneCall *call){ LinphoneCore *lc=call->core; @@ -1852,7 +1861,10 @@ void linphone_call_init_audio_stream(LinphoneCall *call){ if (call->audiostream != NULL) return; if (call->sessions[0].rtp_session==NULL){ call->audiostream=audiostream=audio_stream_new2(linphone_call_get_bind_ip_for_stream(call,0), - call->media_ports[0].rtp_port, call->media_ports[0].rtcp_port); + call->media_ports[0].mcast_rtp_port ? call->media_ports[0].mcast_rtp_port : call->media_ports[0].rtp_port, + call->media_ports[0].mcast_rtcp_port ? call->media_ports[0].mcast_rtcp_port : call->media_ports[0].rtcp_port); + linphone_call_join_multicast_group(call, 0, &audiostream->ms); + rtp_session_enable_network_simulation(call->audiostream->ms.sessions.rtp_session, &lc->net_conf.netsim_params); cname = linphone_address_as_string_uri_only(call->me); audio_stream_set_rtcp_information(call->audiostream, cname, rtcp_tool); ms_free(cname); @@ -1958,7 +1970,10 @@ void linphone_call_init_video_stream(LinphoneCall *call){ if (call->sessions[1].rtp_session==NULL){ call->videostream=video_stream_new2(linphone_call_get_bind_ip_for_stream(call,1), - call->media_ports[1].rtp_port,call->media_ports[1].rtcp_port); + call->media_ports[1].mcast_rtp_port>0 ? call->media_ports[1].mcast_rtp_port : call->media_ports[1].rtp_port, + call->media_ports[1].mcast_rtcp_port>0 ? call->media_ports[1].mcast_rtcp_port : call->media_ports[1].rtcp_port); + linphone_call_join_multicast_group(call, 1, &call->videostream->ms); + rtp_session_enable_network_simulation(call->videostream->ms.sessions.rtp_session, &lc->net_conf.netsim_params); cname = linphone_address_as_string_uri_only(call->me); video_stream_set_rtcp_information(call->videostream, cname, rtcp_tool); ms_free(cname); @@ -2306,6 +2321,64 @@ static void configure_rtp_session_for_rtcp_xr(LinphoneCore *lc, LinphoneCall *ca } rtp_session_configure_rtcp_xr(session, ¤tconfig); } +void static start_dtls( MSMediaStreamSessions *sessions, const SalStreamDescription *sd,const SalStreamDescription *remote) { + if (sal_stream_description_has_dtls(sd) == TRUE) { + /*DTLS*/ + SalDtlsRole salRole = sd->dtls_role; + if (salRole!=SalDtlsRoleInvalid) { /* if DTLS is available at both end points */ + /* give the peer certificate fingerprint to dtls context */ + ms_dtls_srtp_set_peer_fingerprint(sessions->dtls_context, remote->dtls_fingerprint); + ms_dtls_srtp_set_role(sessions->dtls_context, (salRole == SalDtlsRoleIsClient)?MSDtlsSrtpRoleIsClient:MSDtlsSrtpRoleIsServer); /* set the role to client */ + ms_dtls_srtp_start(sessions->dtls_context); /* then start the engine, it will send the DTLS client Hello */ + } else { + ms_warning("unable to start DTLS engine on stream session [%p], Dtls role in resulting media description is invalid",sessions); + } + } +} +void static start_dtls_on_all_streams(LinphoneCall *call) { + SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); + SalMediaDescription *result_desc = sal_call_get_final_media_description(call->op); + if (call->audiostream && (media_stream_get_state((const MediaStream *)call->audiostream) == MSStreamStarted))/*dtls must start at the end of ice*/ + start_dtls(&call->audiostream->ms.sessions + ,sal_media_description_find_best_stream(result_desc,SalAudio) + ,sal_media_description_find_best_stream(remote_desc,SalAudio)); +#if VIDEO_ENABLED + if (call->videostream && (media_stream_get_state((const MediaStream *)call->videostream) == MSStreamStarted))/*dtls must start at the end of ice*/ + start_dtls(&call->videostream->ms.sessions + ,sal_media_description_find_best_stream(result_desc,SalVideo) + ,sal_media_description_find_best_stream(remote_desc,SalVideo)); +#endif + return; +} + +void static set_dtls_fingerprint( MSMediaStreamSessions *sessions, const SalStreamDescription *sd,const SalStreamDescription *remote) { + if (sal_stream_description_has_dtls(sd) == TRUE) { + /*DTLS*/ + SalDtlsRole salRole = sd->dtls_role; + if (salRole!=SalDtlsRoleInvalid) { /* if DTLS is available at both end points */ + /* give the peer certificate fingerprint to dtls context */ + ms_dtls_srtp_set_peer_fingerprint(sessions->dtls_context, remote->dtls_fingerprint); + } else { + ms_warning("unable to start DTLS engine on stream session [%p], Dtls role in resulting media description is invalid",sessions); + } + } +} + +void static set_dtls_fingerprint_on_all_streams(LinphoneCall *call) { + SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); + SalMediaDescription *result_desc = sal_call_get_final_media_description(call->op); + if (call->audiostream && (media_stream_get_state((const MediaStream *)call->audiostream) == MSStreamStarted))/*dtls must start at the end of ice*/ + set_dtls_fingerprint(&call->audiostream->ms.sessions + ,sal_media_description_find_best_stream(result_desc,SalAudio) + ,sal_media_description_find_best_stream(remote_desc,SalAudio)); +#if VIDEO_ENABLED + if (call->videostream && (media_stream_get_state((const MediaStream *)call->videostream) == MSStreamStarted))/*dtls must start at the end of ice*/ + set_dtls_fingerprint(&call->videostream->ms.sessions + ,sal_media_description_find_best_stream(result_desc,SalVideo) + ,sal_media_description_find_best_stream(remote_desc,SalVideo)); +#endif + return; +} static void linphone_call_start_audio_stream(LinphoneCall *call, bool_t muted, bool_t send_ringbacktone, bool_t use_arc){ LinphoneCore *lc=call->core; @@ -2605,6 +2678,7 @@ void linphone_call_start_media_streams(LinphoneCall *call, bool_t all_inputs_mut call->playing_ringbacktone=send_ringbacktone; call->up_bw=linphone_core_get_upload_bandwidth(lc); + /*might be moved in audio/video stream_start*/ if (call->params->media_encryption==LinphoneMediaEncryptionZRTP) { MSZrtpParams params; memset(¶ms,0,sizeof(MSZrtpParams)); @@ -2618,58 +2692,18 @@ void linphone_call_start_media_streams(LinphoneCall *call, bool_t all_inputs_mut video_stream_enable_zrtp(call->videostream,call->audiostream,¶ms); } #endif - } else if (call->params->media_encryption==LinphoneMediaEncryptionDTLS) { - /* DTLS engine was already initialised during stream init. Before starting it we must be sure that the role(client or server) is set. - * Role may have already been set to server if we initiate the call and already received a packet from peer, in that case do nothing */ - SalDtlsRole salRole = call->resultdesc->streams[0].dtls_role; /* TODO: is streams[0] necessary the audiostream in the media description ? */ - if (salRole==SalDtlsRoleInvalid) { /* it's invalid in streams[0] but check also at session level */ - salRole = call->resultdesc->dtls_role; - } - - if (salRole!=SalDtlsRoleInvalid) { /* if DTLS is available at both end points */ - /* give the peer certificate fingerprint to dtls context */ - SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); - ms_dtls_srtp_set_peer_fingerprint(call->audiostream->ms.sessions.dtls_context, remote_desc->streams[0].dtls_fingerprint); - } else { - ms_warning("unable to start DTLS engine on audiostream, Dtls role in resulting media description is invalid\n"); - } - if (salRole == SalDtlsRoleIsClient) { /* local endpoint is client */ - ms_dtls_srtp_set_role(call->audiostream->ms.sessions.dtls_context, MSDtlsSrtpRoleIsClient); /* set the role to client */ - ms_dtls_srtp_start(call->audiostream->ms.sessions.dtls_context); /* then start the engine, it will send the DTLS client Hello */ - } else if (salRole == SalDtlsRoleIsServer) { /* local endpoint is server */ - ms_dtls_srtp_set_role(call->audiostream->ms.sessions.dtls_context, MSDtlsSrtpRoleIsServer); /* this may complete the server setup */ - /* no need to start engine, we are waiting for DTLS Client Hello */ - } -#ifdef VIDEO_ENABLED - salRole = call->resultdesc->streams[1].dtls_role; /* TODO: is streams[1] necessary the videostream in the media description ? */ - if (salRole==SalDtlsRoleInvalid) { /* it's invalid in streams[0] but check also at session level */ - salRole = call->resultdesc->dtls_role; - } - - if (salRole!=SalDtlsRoleInvalid) { /* if DTLS is available at both end points */ - /* give the peer certificate fingerprint to dtls context */ - SalMediaDescription *remote_desc = sal_call_get_remote_media_description(call->op); - ms_dtls_srtp_set_peer_fingerprint(call->videostream->ms.sessions.dtls_context, remote_desc->streams[1].dtls_fingerprint); - } else { - ms_warning("unable to start DTLS engine on videostream, Dtls role in resulting media description is invalid\n"); - } - if (salRole == SalDtlsRoleIsClient) { /* local endpoint is client */ - ms_dtls_srtp_set_role(call->videostream->ms.sessions.dtls_context, MSDtlsSrtpRoleIsClient); /* set the role to client */ - ms_dtls_srtp_start(call->videostream->ms.sessions.dtls_context); /* then start the engine, it will send the DTLS client Hello */ - } else if (salRole == SalDtlsRoleIsServer) { /* local endpoint is server */ - ms_dtls_srtp_set_role(call->videostream->ms.sessions.dtls_context, MSDtlsSrtpRoleIsServer); /* this may complete the server setup */ - /* no need to start engine, we are waiting for DTLS Client Hello */ - } - -#endif - - } else { + }else if (call->params->media_encryption==LinphoneMediaEncryptionSRTP){ call->current_params->media_encryption=linphone_call_all_streams_encrypted(call) ? LinphoneMediaEncryptionSRTP : LinphoneMediaEncryptionNone; } + set_dtls_fingerprint_on_all_streams(call); + if ((call->ice_session != NULL) && (ice_session_state(call->ice_session) != IS_Completed)) { ice_session_start_connectivity_checks(call->ice_session); + } else { + /*should not start dtls until ice is completed*/ + start_dtls_on_all_streams(call); } } @@ -2710,6 +2744,8 @@ void linphone_call_update_crypto_parameters(LinphoneCall *call, SalMediaDescript update_stream_crypto_params(call,local_st_desc,old_stream,new_stream,&call->audiostream->ms)){ } + start_dtls_on_all_streams(call); + #ifdef VIDEO_ENABLED local_st_desc = sal_media_description_find_secure_stream_of_type(call->localdesc, SalVideo); old_stream = sal_media_description_find_secure_stream_of_type(old_md, SalVideo); @@ -3248,6 +3284,7 @@ static void change_ice_media_destinations(LinphoneCall *call) { result = ice_check_list_selected_valid_remote_candidate(ice_session_check_list(call->ice_session, 0), &rtp_addr, &rtp_port, &rtcp_addr, &rtcp_port); if (result == TRUE) { ms_message("Change audio stream destination: RTP=%s:%d RTCP=%s:%d", rtp_addr, rtp_port, rtcp_addr, rtcp_port); + rtp_session_set_symmetric_rtp(call->audiostream->ms.sessions.rtp_session, FALSE); rtp_session_set_remote_addr_full(call->audiostream->ms.sessions.rtp_session, rtp_addr, rtp_port, rtcp_addr, rtcp_port); } } @@ -3256,6 +3293,7 @@ static void change_ice_media_destinations(LinphoneCall *call) { result = ice_check_list_selected_valid_remote_candidate(ice_session_check_list(call->ice_session, 1), &rtp_addr, &rtp_port, &rtcp_addr, &rtcp_port); if (result == TRUE) { ms_message("Change video stream destination: RTP=%s:%d RTCP=%s:%d", rtp_addr, rtp_port, rtcp_addr, rtcp_port); + rtp_session_set_symmetric_rtp(call->videostream->ms.sessions.rtp_session, FALSE); rtp_session_set_remote_addr_full(call->videostream->ms.sessions.rtp_session, rtp_addr, rtp_port, rtcp_addr, rtcp_port); } } @@ -3269,17 +3307,27 @@ static void handle_ice_events(LinphoneCall *call, OrtpEvent *ev){ if (evt == ORTP_EVENT_ICE_SESSION_PROCESSING_FINISHED) { LinphoneCallParams *params = linphone_call_params_copy(call->current_params); - if (call->params->media_encryption == LinphoneMediaEncryptionZRTP) { - /* preserve media encryption param because at that time ZRTP negociation may still be ongoing*/ + switch (call->params->media_encryption) { + case LinphoneMediaEncryptionZRTP: + case LinphoneMediaEncryptionDTLS: + /* preserve media encryption param because at that time ZRTP/SRTP-DTLS negociation may still be ongoing*/ params->media_encryption=call->params->media_encryption; + break; + case LinphoneMediaEncryptionSRTP: + case LinphoneMediaEncryptionNone: + /*keep all values to make sure a warning will be generated by compiler if new enum value is added*/ + break; } + switch (ice_session_state(call->ice_session)) { case IS_Completed: ice_session_select_candidates(call->ice_session); - if (ice_session_role(call->ice_session) == IR_Controlling) { + if (ice_session_role(call->ice_session) == IR_Controlling + && lp_config_get_int(call->core->config, "sip", "update_call_when_ice_completed", TRUE)) { linphone_core_update_call(call->core, call, params); } change_ice_media_destinations(call); + start_dtls_on_all_streams(call); break; case IS_Failed: if (ice_session_has_completed_check_list(call->ice_session) == TRUE) { diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index ef108df18..ae7a22222 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1484,11 +1484,7 @@ static void misc_config_read(LinphoneCore *lc) { }else if (strcmp(uuid,"0")!=0) /*to allow to disable sip.instance*/ sal_set_uuid(lc->sal, uuid); - /* DTLS: if media_encryption DTLS SRTP is available, get or create the certificate directory */ - /*if (ms_dtls_srtp_available()){ - *//*JOHAN: USELESS? REMOVE IT*/ - //const char *user_certificate_config_path = lp_config_get_string(config,"misc","uuid",); -// }*/ + lc->user_certificates_path=ms_strdup(lp_config_get_string(config,"misc","user_certificates_path",".")); } static void linphone_core_start(LinphoneCore * lc) { @@ -1617,6 +1613,7 @@ static void linphone_core_init(LinphoneCore * lc, const LinphoneCoreVTable *vtab lc->data=userdata; lc->ringstream_autorelease=TRUE; + memcpy(local_vtable,vtable,sizeof(LinphoneCoreVTable)); lc->vtables=ms_list_append(lc->vtables,local_vtable); @@ -5750,6 +5747,10 @@ void linphone_core_set_use_files(LinphoneCore *lc, bool_t yesno){ lc->use_files=yesno; } +const char * linphone_core_get_play_file(const LinphoneCore *lc) { + return lc->play_file; +} + /** * Sets a wav file to be played when putting somebody on hold, * or when files are used instead of soundcards (see linphone_core_set_use_files()). @@ -5772,6 +5773,9 @@ void linphone_core_set_play_file(LinphoneCore *lc, const char *file){ } } +const char * linphone_core_get_record_file(const LinphoneCore *lc) { + return lc->rec_file; +} /** * Sets a wav file where incoming stream is to be recorded, @@ -6760,10 +6764,11 @@ const char *linphone_core_get_zrtp_secrets_file(LinphoneCore *lc){ } void linphone_core_set_user_certificates_path(LinphoneCore *lc, const char* path){ - if (lc->user_certificates_path != NULL) { - ms_free(lc->user_certificates_path); - } - lc->user_certificates_path = path ? ms_strdup(path) : NULL; + char* new_value; + new_value = path?ms_strdup(path):NULL; + if (lc->user_certificates_path) ms_free(lc->user_certificates_path); + lp_config_set_string(lc->config,"misc","user_certificates_path",lc->user_certificates_path=new_value); + return ; } const char *linphone_core_get_user_certificates_path(LinphoneCore *lc){ diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 5a6b7f108..5f1e4f5c2 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -676,7 +676,14 @@ LINPHONE_PUBLIC void *linphone_call_get_user_data(const LinphoneCall *call); **/ LINPHONE_PUBLIC void linphone_call_set_user_data(LinphoneCall *call, void *ud); +/** + * Get the core that has created the specified call. + * @param[in] call LinphoneCall object + * @return The LinphoneCore object that has created the specified call. + * @ingroup call_control + */ LINPHONE_PUBLIC LinphoneCore *linphone_call_get_core(const LinphoneCall *call); + LINPHONE_PUBLIC LinphoneCallState linphone_call_get_state(const LinphoneCall *call); LINPHONE_PUBLIC bool_t linphone_call_asked_to_autoanswer(LinphoneCall *call); @@ -3006,7 +3013,32 @@ void linphone_core_show_video(LinphoneCore *lc, bool_t show); #define linphone_core_use_files(lc, yesno) linphone_core_set_use_files(lc, yesno) /*play/record support: use files instead of soundcard*/ LINPHONE_PUBLIC void linphone_core_set_use_files(LinphoneCore *lc, bool_t yesno); + +/** + * Get the wav file that is played when putting somebody on hold, + * or when files are used instead of soundcards (see linphone_core_set_use_files()). + * + * The file is a 16 bit linear wav file. + * @ingroup media_parameters + * @param[in] lc LinphoneCore object + * @return The path to the file that is played when putting somebody on hold. + */ +LINPHONE_PUBLIC const char * linphone_core_get_play_file(const LinphoneCore *lc); + LINPHONE_PUBLIC void linphone_core_set_play_file(LinphoneCore *lc, const char *file); + +/** + * Get the wav file where incoming stream is recorded, + * when files are used instead of soundcards (see linphone_core_set_use_files()). + * + * This feature is different from call recording (linphone_call_params_set_record_file()) + * The file is a 16 bit linear wav file. + * @ingroup media_parameters + * @param[in] lc LinphoneCore object + * @return The path to the file where incoming stream is recorded. +**/ +LINPHONE_PUBLIC const char * linphone_core_get_record_file(const LinphoneCore *lc); + LINPHONE_PUBLIC void linphone_core_set_record_file(LinphoneCore *lc, const char *file); LINPHONE_PUBLIC void linphone_core_play_dtmf(LinphoneCore *lc, char dtmf, int duration_ms); @@ -3449,6 +3481,27 @@ LINPHONE_PUBLIC void linphone_core_enable_video_multicast(LinphoneCore *core, bo **/ LINPHONE_PUBLIC bool_t linphone_core_video_multicast_enabled(const LinphoneCore *core); +/** + * Set the network simulator parameters. + * Liblinphone has the capabability of simulating the effects of a network (latency, lost packets, jitter, max bandwidth). + * Please refer to the oRTP documentation for the meaning of the parameters of the OrtpNetworkSimulatorParams structure. + * This function has effect for future calls, but not for currently running calls, though this behavior may be changed in future versions. + * @warning Due to design of network simulation in oRTP, simulation is applied independently for audio and video stream. This means for example that a bandwidth + * limit of 250kbit/s will have no effect on an audio stream running at 40kbit/s while a videostream targetting 400kbit/s will be highly affected. + * @param lc the LinphoneCore + * @param params the parameters used for the network simulation. + * @return 0 if successful, -1 otherwise. +**/ +LINPHONE_PUBLIC int linphone_core_set_network_simulator_params(LinphoneCore *lc, const OrtpNetworkSimulatorParams *params); + + +/** + * Get the previously set network simulation parameters. + * @see linphone_core_set_network_simulator_params + * @return a OrtpNetworkSimulatorParams structure. +**/ +LINPHONE_PUBLIC const OrtpNetworkSimulatorParams *linphone_core_get_network_simulator_params(const LinphoneCore *lc); + #ifdef __cplusplus } #endif diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index b562cf31a..e9fc0b787 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -1160,10 +1160,23 @@ extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_newLinphoneCore(JNIEnv* if (factoryConfig) env->ReleaseStringUTFChars(jfactoryConfig, factoryConfig); return nativePtr; } -extern "C" void Java_org_linphone_core_LinphoneCoreImpl_delete(JNIEnv* env, jobject thiz, jlong lc) { - jobject core = (jobject)linphone_core_get_user_data((LinphoneCore*)lc); - linphone_core_destroy((LinphoneCore*)lc); +extern "C" void Java_org_linphone_core_LinphoneCoreImpl_delete(JNIEnv* env, jobject thiz, jlong native_ptr) { + LinphoneCore *lc=(LinphoneCore*)native_ptr; + jobject core = (jobject)linphone_core_get_user_data(lc); + + jobject multicast_lock = lc->multicast_lock; + jobject multicast_lock_class = lc->multicast_lock_class; + jobject wifi_lock = lc->wifi_lock; + jobject wifi_lock_class = lc->wifi_lock_class; + + linphone_core_destroy(lc); ms_exit(); + + if (wifi_lock) env->DeleteGlobalRef(wifi_lock); + if (wifi_lock_class) env->DeleteGlobalRef(wifi_lock_class); + if (multicast_lock) env->DeleteGlobalRef(multicast_lock); + if (multicast_lock_class) env->DeleteGlobalRef(multicast_lock_class); + if (core) { env->DeleteGlobalRef(core); } @@ -1200,6 +1213,10 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_uploadLogCollection(JNIE linphone_core_upload_log_collection(core); } +extern "C" void Java_org_linphone_core_LinphoneCoreImpl_resetLogCollection(JNIEnv* env, jobject thiz) { + linphone_core_reset_log_collection(); +} + extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_migrateToMultiTransport(JNIEnv* env ,jobject thiz ,jlong lc) { @@ -1603,6 +1620,7 @@ extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_findPayloadType(JNIEnv* env->ReleaseStringUTFChars(jmime, mime); return result; } + extern "C" jlongArray Java_org_linphone_core_LinphoneCoreImpl_listVideoPayloadTypes(JNIEnv* env ,jobject thiz ,jlong lc) { @@ -1675,6 +1693,21 @@ extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_getPayloadTypeBitrate(JN return (jint)linphone_core_get_payload_type_bitrate((LinphoneCore*)lc,(PayloadType*)pt); } +extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setPayloadTypeNumber(JNIEnv* env + ,jobject thiz + ,jlong lc + ,jlong pt + ,jint number) { + linphone_core_set_payload_type_number((LinphoneCore*)lc,(PayloadType*)pt,number); +} + +extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_getPayloadTypeNumber(JNIEnv* env + ,jobject thiz + ,jlong lc + ,jlong pt) { + return (jint)linphone_core_get_payload_type_number((LinphoneCore*)lc,(PayloadType*)pt); +} + extern "C" void Java_org_linphone_core_LinphoneCoreImpl_enableAdaptiveRateControl(JNIEnv* env ,jobject thiz ,jlong lc @@ -2747,6 +2780,12 @@ extern "C" jlong Java_org_linphone_core_LinphoneCallImpl_getPlayer(JNIEnv *env, return (jlong)linphone_call_get_player((LinphoneCall *)callPtr); } +extern "C" jboolean Java_org_linphone_core_LinphoneCallImpl_mediaInProgress( JNIEnv* env + ,jobject thiz + ,jlong ptr) { + return (jboolean) linphone_call_media_in_progress((LinphoneCall*)ptr); +} + //LinphoneFriend extern "C" jlong Java_org_linphone_core_LinphoneFriendImpl_newLinphoneFriend(JNIEnv* env ,jobject thiz @@ -4056,33 +4095,43 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setAndroidPowerManager(J #endif } +/*released in Java_org_linphone_core_LinphoneCoreImpl_delete*/ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setAndroidWifiLock(JNIEnv *env, jobject thiz, jlong ptr, jobject wifi_lock) { #ifdef ANDROID LinphoneCore *lc=(LinphoneCore*)ptr; - if (lc->wifi_lock) + if (lc->wifi_lock) { env->DeleteGlobalRef(lc->wifi_lock); + env->DeleteGlobalRef(lc->wifi_lock_class); + } if (wifi_lock != NULL) { lc->wifi_lock=env->NewGlobalRef(wifi_lock); - jclass wifiLockClass = env->FindClass("android/net/wifi/WifiManager$WifiLock"); - lc->wifi_lock_acquire_id = env->GetMethodID(wifiLockClass, "acquire", "()V"); - lc->wifi_lock_release_id = env->GetMethodID(wifiLockClass, "release", "()V"); + lc->wifi_lock_class = env->FindClass("android/net/wifi/WifiManager$WifiLock"); + lc->wifi_lock_class = (jclass)env->NewGlobalRef(lc->wifi_lock_class); /*to make sure methodid are preserved*/ + lc->wifi_lock_acquire_id = env->GetMethodID(lc->wifi_lock_class, "acquire", "()V"); + lc->wifi_lock_release_id = env->GetMethodID(lc->wifi_lock_class, "release", "()V"); } else { lc->wifi_lock=NULL; + lc->wifi_lock_class=NULL; } #endif } +/*released in Java_org_linphone_core_LinphoneCoreImpl_delete*/ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setAndroidMulticastLock(JNIEnv *env, jobject thiz, jlong ptr, jobject multicast_lock) { #ifdef ANDROID LinphoneCore *lc=(LinphoneCore*)ptr; - if (lc->multicast_lock) + if (lc->multicast_lock) { env->DeleteGlobalRef(lc->multicast_lock); + env->DeleteGlobalRef(lc->multicast_lock_class); + } if (multicast_lock != NULL) { lc->multicast_lock=env->NewGlobalRef(multicast_lock); - jclass multicastLockClass = env->FindClass("android/net/wifi/WifiManager$MulticastLock"); - lc->multicast_lock_acquire_id = env->GetMethodID(multicastLockClass, "acquire", "()V"); - lc->multicast_lock_release_id = env->GetMethodID(multicastLockClass, "release", "()V"); + lc->multicast_lock_class = env->FindClass("android/net/wifi/WifiManager$MulticastLock"); + lc->multicast_lock_class = (jclass)env->NewGlobalRef(lc->multicast_lock_class);/*to make sure methodid are preserved*/ + lc->multicast_lock_acquire_id = env->GetMethodID(lc->multicast_lock_class, "acquire", "()V"); + lc->multicast_lock_release_id = env->GetMethodID(lc->multicast_lock_class, "release", "()V"); } else { lc->multicast_lock=NULL; + lc->multicast_lock_class=NULL; } #endif } diff --git a/coreapi/message_storage.c b/coreapi/message_storage.c index 2684ba0b5..91fd8e333 100644 --- a/coreapi/message_storage.c +++ b/coreapi/message_storage.c @@ -591,6 +591,7 @@ void linphone_core_message_storage_init(LinphoneCore *lc){ errmsg=sqlite3_errmsg(db); ms_error("Error in the opening: %s.\n", errmsg); sqlite3_close(db); + return; } linphone_message_storage_activate_debug(db, lc->debug_storage); diff --git a/coreapi/misc.c b/coreapi/misc.c index 5912acc8f..666ac8919 100644 --- a/coreapi/misc.c +++ b/coreapi/misc.c @@ -1600,3 +1600,43 @@ bool_t linphone_core_symmetric_rtp_enabled(LinphoneCore*lc){ return lp_config_get_int(lc->config,"rtp","symmetric",1); } +int linphone_core_set_network_simulator_params(LinphoneCore *lc, const OrtpNetworkSimulatorParams *params){ + if (params!=&lc->net_conf.netsim_params) + lc->net_conf.netsim_params=*params; + /*TODO: should we make some sanity checks on the parameters here*/ + return 0; +} + +const OrtpNetworkSimulatorParams *linphone_core_get_network_simulator_params(const LinphoneCore *lc){ + return &lc->net_conf.netsim_params; +} + +static const char *_tunnel_mode_str[3] = { "disable", "enable", "auto" }; + +LinphoneTunnelMode linphone_tunnel_mode_from_string(const char *string) { + if(string != NULL) { + int i; + for(i=0; i<3 && strcmp(string, _tunnel_mode_str[i]) != 0; i++); + if(i<3) { + return (LinphoneTunnelMode)i; + } else { + ms_error("Invalid tunnel mode '%s'", string); + return LinphoneTunnelModeDisable; + } + } else { + return LinphoneTunnelModeDisable; + } +} + +const char *linphone_tunnel_mode_to_string(LinphoneTunnelMode mode) { + switch(mode){ + case LinphoneTunnelModeAuto: + return "auto"; + case LinphoneTunnelModeDisable: + return "disable"; + case LinphoneTunnelModeEnable: + return "enable"; + } + return "invalid"; +} + diff --git a/coreapi/offeranswer.c b/coreapi/offeranswer.c index 9baedd158..a74105963 100644 --- a/coreapi/offeranswer.c +++ b/coreapi/offeranswer.c @@ -394,6 +394,21 @@ static void initiate_outgoing(const SalStreamDescription *local_offer, result->rtp_ssrc=local_offer->rtp_ssrc; strncpy(result->rtcp_cname,local_offer->rtcp_cname,sizeof(result->rtcp_cname)); + // Handle dtls session attribute: if both local and remote have a dtls fingerprint and a dtls setup, get the remote fingerprint into the result + if ((local_offer->dtls_role!=SalDtlsRoleInvalid) && (remote_answer->dtls_role!=SalDtlsRoleInvalid) + &&(strlen(local_offer->dtls_fingerprint)>0) && (strlen(remote_answer->dtls_fingerprint)>0)) { + strncpy(result->dtls_fingerprint, remote_answer->dtls_fingerprint,sizeof(result->dtls_fingerprint)); + if (remote_answer->dtls_role==SalDtlsRoleIsClient) { + result->dtls_role = SalDtlsRoleIsServer; + } else { + result->dtls_role = SalDtlsRoleIsClient; + } + } else { + result->dtls_fingerprint[0] = '\0'; + result->dtls_role = SalDtlsRoleInvalid; + } + + } @@ -449,6 +464,20 @@ static void initiate_incoming(const SalStreamDescription *local_cap, result->rtp_ssrc=local_cap->rtp_ssrc; strncpy(result->rtcp_cname,local_cap->rtcp_cname,sizeof(result->rtcp_cname)); + // Handle dtls stream attribute: if both local and remote have a dtls fingerprint and a dtls setup, add the local fingerprint to the answer + // Note: local description usually stores dtls config at session level which means it apply to all streams, check this too + if (((local_cap->dtls_role!=SalDtlsRoleInvalid)) && (remote_offer->dtls_role!=SalDtlsRoleInvalid) + && (strlen(local_cap->dtls_fingerprint)>0) && (strlen(remote_offer->dtls_fingerprint)>0)) { + strncpy(result->dtls_fingerprint, local_cap->dtls_fingerprint,sizeof(result->dtls_fingerprint)); + if (remote_offer->dtls_role==SalDtlsRoleUnset) { + result->dtls_role = SalDtlsRoleIsClient; + } + } else { + result->dtls_fingerprint[0] = '\0'; + result->dtls_role = SalDtlsRoleInvalid; + } + + } @@ -484,21 +513,6 @@ int offer_answer_initiate_outgoing(const SalMediaDescription *local_offer, result->rtcp_xr.enabled = FALSE; } - // Handle dtls session attribute: if both local and remote have a dtls fingerprint and a dtls setup, get the remote fingerprint into the result - if ((local_offer->dtls_role!=SalDtlsRoleInvalid) && (remote_answer->dtls_role!=SalDtlsRoleInvalid) - &&(strlen(local_offer->dtls_fingerprint)>0) && (strlen(remote_answer->dtls_fingerprint)>0)) { - strcpy(result->dtls_fingerprint, remote_answer->dtls_fingerprint); - if (remote_answer->dtls_role==SalDtlsRoleIsClient) { - result->dtls_role = SalDtlsRoleIsServer; - } else { - result->dtls_role = SalDtlsRoleIsClient; - } - } else { - result->dtls_fingerprint[0] = '\0'; - result->dtls_role = SalDtlsRoleInvalid; - } - - return 0; } @@ -553,24 +567,6 @@ int offer_answer_initiate_incoming(const SalMediaDescription *local_capabilities }else ms_warning("Unknown protocol for mline %i, declining",i); if (ls){ initiate_incoming(ls,rs,&result->streams[i],one_matching_codec); - - // Handle dtls stream attribute: if both local and remote have a dtls fingerprint and a dtls setup, add the local fingerprint to the answer - // Note: local description usually stores dtls config at session level which means it apply to all streams, check this too - if (((ls->dtls_role!=SalDtlsRoleInvalid) || (local_capabilities->dtls_role!=SalDtlsRoleInvalid)) && (rs->dtls_role!=SalDtlsRoleInvalid) - && ((strlen(ls->dtls_fingerprint)>0) || (strlen(local_capabilities->dtls_fingerprint)>0)) && (strlen(rs->dtls_fingerprint)>0)) { - if (strlen(ls->dtls_fingerprint)>0) { /* get the fingerprint in stream description */ - strcpy(result->streams[i].dtls_fingerprint, ls->dtls_fingerprint); - } else { /* get the fingerprint in session description */ - strcpy(result->streams[i].dtls_fingerprint, local_capabilities->dtls_fingerprint); - } - if (rs->dtls_role==SalDtlsRoleUnset) { - result->streams[i].dtls_role = SalDtlsRoleIsClient; - } - } else { - result->streams[i].dtls_fingerprint[0] = '\0'; - result->streams[i].dtls_role = SalDtlsRoleInvalid; - } - // Handle media RTCP XR attribute memset(&result->streams[i].rtcp_xr, 0, sizeof(result->streams[i].rtcp_xr)); if (rs->rtcp_xr.enabled == TRUE) { @@ -611,18 +607,6 @@ int offer_answer_initiate_incoming(const SalMediaDescription *local_capabilities strcpy(result->name,local_capabilities->name); - // Handle dtls session attribute: if both local and remote have a dtls fingerprint and a dtls setup, add the local fingerprint to the answer - if ((local_capabilities->dtls_role!=SalDtlsRoleInvalid) && (remote_offer->dtls_role!=SalDtlsRoleInvalid) - &&(strlen(local_capabilities->dtls_fingerprint)>0) && (strlen(remote_offer->dtls_fingerprint)>0)) { - strcpy(result->dtls_fingerprint, local_capabilities->dtls_fingerprint); - if (remote_offer->dtls_role==SalDtlsRoleUnset) { - result->dtls_role = SalDtlsRoleIsClient; - } - } else { - result->dtls_fingerprint[0] = '\0'; - result->dtls_role = SalDtlsRoleInvalid; - } - // Handle session RTCP XR attribute memset(&result->rtcp_xr, 0, sizeof(result->rtcp_xr)); if (remote_offer->rtcp_xr.enabled == TRUE) { diff --git a/coreapi/presence.c b/coreapi/presence.c index 869f723ed..e944d3a45 100644 --- a/coreapi/presence.c +++ b/coreapi/presence.c @@ -1211,19 +1211,15 @@ static int process_pidf_xml_presence_services(xmlparsing_context_t *xml_ctx, Lin service_id_str = linphone_get_xml_text_content(xml_ctx, xpath_str); service = presence_service_new(service_id_str, basic_status); if (service != NULL) { - if (timestamp_str != NULL) { - presence_service_set_timestamp(service, parse_timestamp(timestamp_str)); - linphone_free_xml_text_content(timestamp_str); - } - if (contact_str != NULL) { - linphone_presence_service_set_contact(service, contact_str); - linphone_free_xml_text_content(contact_str); - } + if (timestamp_str != NULL) presence_service_set_timestamp(service, parse_timestamp(timestamp_str)); + if (contact_str != NULL) linphone_presence_service_set_contact(service, contact_str); process_pidf_xml_presence_service_notes(xml_ctx, service, i); linphone_presence_model_add_service(model, service); } - linphone_free_xml_text_content(basic_status_str); + if (timestamp_str != NULL) linphone_free_xml_text_content(timestamp_str); + if (contact_str != NULL) linphone_free_xml_text_content(contact_str); if (service_id_str != NULL) linphone_free_xml_text_content(service_id_str); + linphone_free_xml_text_content(basic_status_str); } } if (service_object != NULL) xmlXPathFreeObject(service_object); diff --git a/coreapi/private.h b/coreapi/private.h index 15083943e..d08c569ff 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -203,6 +203,8 @@ typedef struct StunCandidate{ typedef struct _PortConfig{ char multicast_ip[LINPHONE_IPADDR_SIZE]; + int mcast_rtp_port; + int mcast_rtcp_port; int rtp_port; int rtcp_port; }PortConfig; @@ -620,6 +622,7 @@ typedef struct net_config int download_bw; int upload_bw; int mtu; + OrtpNetworkSimulatorParams netsim_params; bool_t nat_sdp_only; }net_config_t; @@ -803,9 +806,11 @@ struct _LinphoneCore LinphoneCoreVTable *current_vtable; // the latest vtable to call a callback, see linphone_core_get_current_vtable #ifdef ANDROID jobject wifi_lock; + jclass wifi_lock_class; jmethodID wifi_lock_acquire_id; jmethodID wifi_lock_release_id; jobject multicast_lock; + jclass multicast_lock_class; jmethodID multicast_lock_acquire_id; jmethodID multicast_lock_release_id; #endif diff --git a/coreapi/remote_provisioning.c b/coreapi/remote_provisioning.c index fd5d2eb92..5562f65db 100644 --- a/coreapi/remote_provisioning.c +++ b/coreapi/remote_provisioning.c @@ -60,33 +60,38 @@ static void linphone_remote_provisioning_apply(LinphoneCore *lc, const char *xml , error_msg); } +static char *load_file_content(const char *path){ + FILE *f=fopen(path,"rb"); + size_t bufsize=2048; + size_t step=bufsize; + size_t pos=0; + size_t count; + char *buffer=ms_malloc(bufsize+1); + if (!f) { + ms_error("load_file_content(): could not open [%s]",path); + return NULL; + } + while((count=fread(buffer+pos, 1, step, f))>0){ + pos+=count; + if (pos+step>=bufsize){ + bufsize*=2; + buffer=ms_realloc(buffer, bufsize+1); + } + } + buffer[pos]='\0'; + fclose(f); + return buffer; +} + int linphone_remote_provisioning_load_file( LinphoneCore* lc, const char* file_path){ int status = -1; - FILE* f = fopen(file_path, "r"); + char* provisioning=load_file_content(file_path); - if( f ){ - long fsize; - char* provisioning; - - fseek(f, 0, SEEK_END); - fsize = ftell(f); - fseek(f, 0, SEEK_SET); - - provisioning = ms_malloc(fsize + 1); - provisioning[fsize]='\0'; - if (fread(provisioning, fsize, 1, f)==0){ - ms_error("Could not read xml provisioning file from %s",file_path); - status=-1; - }else{ - linphone_remote_provisioning_apply(lc, provisioning); - status = 0; - } + if (provisioning){ + linphone_remote_provisioning_apply(lc, provisioning); + status = 0; ms_free(provisioning); - fclose(f); - } else { - ms_error("Couldn't open file %s for provisioning", file_path); } - return status; } diff --git a/coreapi/sal.c b/coreapi/sal.c index ea26b25d8..a5a0755d1 100644 --- a/coreapi/sal.c +++ b/coreapi/sal.c @@ -318,6 +318,10 @@ int sal_stream_description_equals(const SalStreamDescription *sd1, const SalStre if (sd1->ptime != sd2->ptime) result |= SAL_MEDIA_DESCRIPTION_CODEC_CHANGED; if (sd1->dir != sd2->dir) result |= SAL_MEDIA_DESCRIPTION_CODEC_CHANGED; + /*DTLS*/ + if (sd1->dtls_role != sd2->dtls_role) result |= SAL_MEDIA_DESCRIPTION_CRYPTO_KEYS_CHANGED; + if (strcmp(sd1->dtls_fingerprint, sd2->dtls_fingerprint) != 0) result |= SAL_MEDIA_DESCRIPTION_CRYPTO_KEYS_CHANGED; + return result; } diff --git a/gtk/chat.c b/gtk/chat.c index daa5fd95a..1f2234d72 100644 --- a/gtk/chat.c +++ b/gtk/chat.c @@ -161,16 +161,19 @@ void linphone_gtk_push_text(GtkWidget *w, const LinphoneAddress *from, if(g_strcmp0(from_message,from_str)!=0){ gtk_text_buffer_get_iter_at_offset(buffer,&iter,off); gtk_text_buffer_get_end_iter(buffer,&iter); - gtk_text_buffer_insert_with_tags_by_name(buffer,&iter,get_display_name(from),-1,"bold",me ? "bg":NULL,NULL); + gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, get_display_name(from), -1, + "bold", me ? "bg" : NULL, me ? "font_black" : NULL, NULL); gtk_text_buffer_get_end_iter(buffer,&iter); - gtk_text_buffer_insert_with_tags_by_name(buffer,&iter," : ",-1,"bold",me ? "bg":NULL,NULL); + gtk_text_buffer_insert_with_tags_by_name(buffer,&iter, " : ", -1, + "bold", me ? "bg" : NULL, me ? "font_black" : NULL, NULL); gtk_text_buffer_get_end_iter(buffer,&iter); gtk_text_buffer_insert(buffer,&iter,"\n",-1); g_free(from_message); g_object_set_data(G_OBJECT(w),"from_message",g_strdup(from_str)); } gtk_text_buffer_get_end_iter(buffer,&iter); - gtk_text_buffer_insert_with_tags_by_name(buffer,&iter,linphone_chat_message_get_text(msg),-1,"margin",me ? "bg":NULL,NULL); + gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, linphone_chat_message_get_text(msg), -1, + "margin", me ? "bg" : NULL, me ? "font_black" : NULL, NULL); gtk_text_buffer_get_end_iter(buffer,&iter); gtk_text_buffer_insert(buffer,&iter,"\n",-1); gtk_text_buffer_get_end_iter(buffer,&iter); @@ -378,8 +381,9 @@ GtkWidget* linphone_gtk_init_chatroom(LinphoneChatRoom *cr, const LinphoneAddres GtkWidget *main_window=linphone_gtk_get_main_window(); GtkNotebook *notebook=(GtkNotebook *)linphone_gtk_get_widget(main_window,"viewswitch"); GtkWidget *text=linphone_gtk_get_widget(chat_view,"textview"); - GdkColor color; - GdkColor colorb; + GdkColor color_grey = {0, 32512, 32512, 32512}; + GdkColor color_light_grey = {0, 56832, 60928, 61952}; + GdkColor color_black = {0}; int idx; GtkWidget *button; GtkWidget *entry = linphone_gtk_get_widget(chat_view,"text_entry"); @@ -387,13 +391,6 @@ GtkWidget* linphone_gtk_init_chatroom(LinphoneChatRoom *cr, const LinphoneAddres GHashTable *table; char *with_str; - color.red = 32512; - color.green = 32512; - color.blue = 32512; - colorb.red = 56832; - colorb.green = 60928; - colorb.blue = 61952; - with_str=linphone_address_as_string_uri_only(with); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text),GTK_WRAP_WORD_CHAR); gtk_text_view_set_editable(GTK_TEXT_VIEW(text),FALSE); @@ -417,11 +414,13 @@ GtkWidget* linphone_gtk_init_chatroom(LinphoneChatRoom *cr, const LinphoneAddres gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), "small","size",9*PANGO_SCALE,NULL); gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), - "font_grey","foreground-gdk",&color,NULL); + "font_grey","foreground-gdk",&color_grey,NULL); + gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), + "font_black","foreground-gdk",&color_black,NULL); gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), "margin","indent",10,NULL); gtk_text_buffer_create_tag(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), - "bg","paragraph-background-gdk",&colorb,NULL); + "bg","paragraph-background-gdk",&color_light_grey,NULL); messages = linphone_chat_room_get_history(cr,NB_MSG_HIST); display_history_message(chat_view,messages,with); button = linphone_gtk_get_widget(chat_view,"send"); diff --git a/gtk/main.c b/gtk/main.c index 8162927fa..f840435cc 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -22,6 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "linphone.h" #include "lpconfig.h" +#include "liblinphone_gitversion.h" #include @@ -50,6 +51,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #endif + const char *this_program_ident_string="linphone_ident_string=" LINPHONE_VERSION; static LinphoneCore *the_core=NULL; @@ -561,7 +563,7 @@ void linphone_gtk_show_about(){ } g_free(license); } - gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about),LINPHONE_VERSION); + gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about),LIBLINPHONE_GIT_VERSION); gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(about),linphone_gtk_get_ui_config("title","Linphone")); gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(about),linphone_gtk_get_ui_config("home","http://www.linphone.org")); if (logo) gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(about),logo); diff --git a/include/sal/sal.h b/include/sal/sal.h index 4eedb23ab..7d0ae1eb7 100644 --- a/include/sal/sal.h +++ b/include/sal/sal.h @@ -203,6 +203,11 @@ typedef enum { SalMulticastSenderReceiver } SalMulticastRole; +typedef enum { + SalOpSDPNormal = 0, /** No special handling for SDP */ + SalOpSDPSimulateError, /** Will simulate an SDP parsing error */ + SalOpSDPSimulateRemove /** Will simulate no SDP in the op */ +} SalOpSDPHandling; typedef struct SalStreamDescription{ char name[16]; /*unique name of stream, in order to ease offer/answer model algorithm*/ @@ -260,8 +265,6 @@ typedef struct SalMediaDescription{ bool_t ice_lite; bool_t ice_completed; bool_t pad[2]; - char dtls_fingerprint[256]; - SalDtlsRole dtls_role; } SalMediaDescription; typedef struct SalMessage{ @@ -553,7 +556,7 @@ void sal_signing_key_parse_file(SalAuthInfo* auth_info, const char* path, const * @param[in] generate_certificate if true, if matching certificate and key can't be found, generate it and store it into the given dir, filename will be subject.pem * @param[in] generate_dtls_fingerprint if true and we have a certificate, generate the dtls fingerprint as described in rfc4572 */ -void sal_certificates_chain_parse_directory(char **certificate_pem, char **key_pem, char **fingerprint, const char* path, const char *subject, SalCertificateRawFormat format, bool_t generate_certificate, bool_t generate_dtls_fingerprint); +void sal_certificates_chain_parse_directory(char **certificate_pem, char **key_pem, char **fingerprint, const char* path, const char *subject, SalCertificateRawFormat format, bool_t generate_certificate, bool_t generate_dtls_fingerprint); void sal_certificates_chain_delete(SalCertificatesChain *chain); void sal_signing_key_delete(SalSigningKey *key); @@ -684,11 +687,20 @@ void sal_call_send_vfu_request(SalOp *h); int sal_call_is_offerer(const SalOp *h); int sal_call_notify_refer_state(SalOp *h, SalOp *newcall); /* Call test API */ -/*willingly fails to parse SDP from received packets (INVITE and/or ACK) if value=true */ -/* First version: for all new SalOp created (eg. each incoming or outgoing call). Do not forget to reset previous value when you are done!*/ -void sal_default_enable_sdp_removal(Sal* h, bool_t enable) ; + + +/** + * @brief Invoking this on the SAL will modify every subsequent SalOp to have a special handling for SDP. + * @details This is especially useful while testing, to simulate some specific behaviors, like missing SDP or an error in parsing. + * + * @warning Don't forget to reset the handling method to SalOpSDPNormal afterwards. + * + * @param h the Sal instance + * @param handling_method Could be SalOpSDPNormal, SalOpSDPSimulateError, SalOpSDPSimulateRemoval (\ref SalOpSDPHandling) + */ +void sal_default_set_sdp_handling(Sal* h, SalOpSDPHandling handling_method) ; /* Second version: for a specific call*/ -void sal_call_enable_sdp_removal(SalOp *h, bool_t enable) ; +void sal_call_set_sdp_handling(SalOp *h, SalOpSDPHandling handling) ; /*Registration*/ int sal_register(SalOp *op, const char *proxy, const char *from, int expires); @@ -812,7 +824,7 @@ int sal_lines_get_value(const char *data, const char *key, char *value, size_t v belle_sip_stack_t *sal_get_belle_sip_stack(Sal *sal); char* sal_op_get_public_uri(SalOp *sal); -unsigned long sal_begin_background_task(const char *name, void (*max_time_reached)(void *), void *data); +unsigned long sal_begin_background_task(const char *name, void (*max_time_reached)(void *), void *data); void sal_end_background_task(unsigned long id); #endif diff --git a/java/common/org/linphone/core/LinphoneCall.java b/java/common/org/linphone/core/LinphoneCall.java index 404fdbcf0..cd74b6d07 100644 --- a/java/common/org/linphone/core/LinphoneCall.java +++ b/java/common/org/linphone/core/LinphoneCall.java @@ -268,6 +268,16 @@ public interface LinphoneCall { void setAuthenticationTokenVerified(boolean verified); boolean isInConference(); + + /** + * Indicates whether an operation is in progress at the media side. + * It can a bad idea to initiate signaling operations (adding video, pausing the call, removing video, changing video parameters) while + * the media is busy in establishing the connection (typically ICE connectivity checks). It can result in failures generating loss of time + * in future operations in the call. + * Applications are invited to check this function after each call state change to decide whether certain operations are permitted or not. + * @return TRUE if media is busy in establishing the connection, FALSE otherwise. + **/ + boolean mediaInProgress(); float getPlayVolume(); @@ -349,4 +359,5 @@ public interface LinphoneCall { * @return A player */ public LinphonePlayer getPlayer(); + } diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java index 7c23cb9bb..495f6642a 100644 --- a/java/common/org/linphone/core/LinphoneCore.java +++ b/java/common/org/linphone/core/LinphoneCore.java @@ -269,6 +269,10 @@ public interface LinphoneCore { * ZRTP */ static public final MediaEncryption ZRTP = new MediaEncryption(2,"ZRTP"); + /** + * DTLS + */ + static public final MediaEncryption DTLS = new MediaEncryption(3,"DTLS"); protected final int mValue; private final String mStringValue; @@ -786,6 +790,26 @@ public interface LinphoneCore { */ int getPayloadTypeBitrate(PayloadType pt); + /** + * Set an explicit bitrate (IP bitrate, not codec bitrate) for a given codec, in kbit/s. + * @param pt the payload type + * @param number target IP bitrate in kbit/s + */ + + /** + * Force a number for a payload type. The LinphoneCore does payload type number assignment automatically. THis function is to be used mainly for tests, in order + * to override the automatic assignment mechanism. + * @param pt the payload type + * @param number + **/ + void setPayloadTypeNumber(PayloadType pt, int number); + + /** + * @param pt the payload type + * @return the payload type number assigned for this codec. + */ + int getPayloadTypeNumber(PayloadType pt); + /** * Enable adaptive rate control. * @param enable @@ -1889,6 +1913,11 @@ public interface LinphoneCore { * Upload the log collection to the configured server url. */ public void uploadLogCollection(); + + /** + * Reset the log collection by removing the log files. + */ + public void resetLogCollection(); /** diff --git a/java/impl/org/linphone/core/LinphoneCallImpl.java b/java/impl/org/linphone/core/LinphoneCallImpl.java index b2cad202c..de9e25364 100644 --- a/java/impl/org/linphone/core/LinphoneCallImpl.java +++ b/java/impl/org/linphone/core/LinphoneCallImpl.java @@ -43,6 +43,7 @@ class LinphoneCallImpl implements LinphoneCall { private native int getDuration(long nativePtr); private native float getCurrentQuality(long nativePtr); private native float getAverageQuality(long nativePtr); + private native boolean mediaInProgress(long nativePtr); /* * This method must always be called from JNI, nothing else. @@ -167,6 +168,8 @@ class LinphoneCallImpl implements LinphoneCall { return params.localConferenceMode(); } + public boolean mediaInProgress() { return mediaInProgress(nativePtr);} + @Override public String toString() { return "Call " + nativePtr; @@ -251,4 +254,5 @@ class LinphoneCallImpl implements LinphoneCall { public LinphonePlayer getPlayer() { return new LinphonePlayerImpl(getPlayer(nativePtr)); } + } diff --git a/java/impl/org/linphone/core/LinphoneCoreImpl.java b/java/impl/org/linphone/core/LinphoneCoreImpl.java index bd361daca..8595ff079 100644 --- a/java/impl/org/linphone/core/LinphoneCoreImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java @@ -1274,6 +1274,18 @@ class LinphoneCoreImpl implements LinphoneCore { public synchronized int getPayloadTypeBitrate(PayloadType pt) { return getPayloadTypeBitrate(nativePtr, ((PayloadTypeImpl)pt).nativePtr); } + + private native void setPayloadTypeNumber(long coreptr, long payload_ptr, int number); + @Override + public synchronized void setPayloadTypeNumber(PayloadType pt, int number) { + setPayloadTypeNumber(nativePtr, ((PayloadTypeImpl)pt).nativePtr, number); + } + private native int getPayloadTypeNumber(long coreptr, long payload_ptr); + @Override + public synchronized int getPayloadTypeNumber(PayloadType pt) { + return getPayloadTypeNumber(nativePtr, ((PayloadTypeImpl)pt).nativePtr); + } + @Override public synchronized void enableAdaptiveRateControl(boolean enable) { enableAdaptiveRateControl(nativePtr,enable); @@ -1352,6 +1364,9 @@ class LinphoneCoreImpl implements LinphoneCore { public void uploadLogCollection() { uploadLogCollection(nativePtr); } + + @Override + public native void resetLogCollection(); private native void setPreferredFramerate(long nativePtr, float fps); @Override diff --git a/linphone.spec.in b/linphone.spec.in index eb8c65b51..9e10c35c1 100644 --- a/linphone.spec.in +++ b/linphone.spec.in @@ -90,6 +90,7 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/linphone %{_datadir}/pixmaps/linphone.png %{_datadir}/sounds/linphone +%{_datadir}/appdata/linphone.appdata.xml %files devel %defattr(-,root,root) diff --git a/mediastreamer2 b/mediastreamer2 index 394858138..938c6e4ca 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 3948581385b9521c17a54c05c05d613add95e631 +Subproject commit 938c6e4cade5c09e6cfa5a5e9189007f8323f3d0 diff --git a/oRTP b/oRTP index 7822737d9..d515df047 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 7822737d9cce52a956594d9466cb6419595ed7a8 +Subproject commit d515df047678da3777b5e4691dc069c6837f77bf diff --git a/pixmaps/linphone-banner.png b/pixmaps/linphone-banner.png index 0abff3ebf..6fe99ab77 100644 Binary files a/pixmaps/linphone-banner.png and b/pixmaps/linphone-banner.png differ diff --git a/po/ar.po b/po/ar.po index c93c03c58..97b57e7b5 100644 --- a/po/ar.po +++ b/po/ar.po @@ -9,9 +9,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-13 16:34+0000\n" -"Last-Translator: محيي الدين \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/linphone-gtk/" "language/ar/)\n" "Language: ar\n" @@ -148,7 +149,7 @@ msgstr "ابدأ مرشد الصوت" msgid "Run self test and exit 0 if succeed" msgstr "شغِّل الاختبار الذاتي ثم اخرِجْ 0 إذا نجح" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -160,7 +161,7 @@ msgstr "" "هل تريد السماح له برؤية معلومات حضورك وكذا إضافته إلى جهة اتصالك أيضا ؟ إذا " "أجبت ب لا، سيُحظَر هذا الشخص مؤقتا." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" @@ -169,59 +170,59 @@ msgstr "" "ادخل كلمة السر ل %s\n" " في نطاق %s:" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "خطأ في المكالمة" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "إنتهت المكالمة" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "مكالمة واردة" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "أجِبْ" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "ارفضْ" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "المكالمة متوقفة" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "بواسطة %s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "يود %s تشغيل الفيديو. هل تقبل ذلك ؟" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "وصلة إلى الموقع وِبْ" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "لِنْفُونْ - الهاتف المرئي عبر الإنترنت" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (افتراضي)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "التحويل إلى %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -229,7 +230,7 @@ msgstr "" "لا وجود للوحة الصوت على هذا الحاسوب.\n" "لن تتمكن من تلقي أو إجراء أي مكالمة." -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "هاتف SIP المرئي الحر" @@ -383,15 +384,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "يجب إعادة تشغيل لِنْفُونْ لكي تٌفعَّل اللغة المختارة." -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "بدون" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ZRTP" @@ -573,7 +578,7 @@ msgstr "تأكيد (المرحلة 2/2)" msgid "Error" msgstr "خطأ" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "في طور الإنهاء" @@ -666,7 +671,7 @@ msgstr "ضع السماعة" msgid "Calling..." msgstr "يجري الاتصال..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -703,55 +708,59 @@ msgid "Secured by SRTP" msgstr "آمن بواسطة SRTP" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "آمن بواسطة ZRTP - [شارة الهوية : %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "أكِّدْ عدم تحقُّقك" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "أكِّدْ تحقُّقَك" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "في اجتماع" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "المكالمة جارية" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "المكالمة متوقفة مؤقتا" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "إنتهت المكالمة." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "يجري الإرسال" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "انتهى الإرسال." -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "فَشِل الإرسال." -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "استأنِفْ" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "إيقاف مؤقت" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" @@ -760,7 +769,7 @@ msgstr "" "يسجل في\n" "%s %s" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(متوقف)" @@ -859,23 +868,23 @@ msgstr "تشغيل" msgid "Let's start Linphone now" msgstr "لنُشغِّل لِنْفُونْ الآن" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "مرشد الصوت" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "مرشد الصوت" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "معايرة كسب الميكروفون" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "معايرة شدة مكبر الصوت" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "سَجِّل واقرأ " @@ -1742,68 +1751,68 @@ msgstr "تجري التهيئة..." msgid "Please wait while fetching configuration from server..." msgstr "رجاءً انتظر ريثما ينتهي من جلب الإعدادات من الخادم..." -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "جاهز" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "تجري التهيئة" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "يجري البحث عن وجهة رقم الهاتف..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "لم يتمكن من إيجاد هذا الرقم." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "يتصل ب" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "لم يتمكن من الاتصال" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "آسف، وصل عدد المكالمات الآنية إلى حده الأقصى" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "يتصل بك" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "ويطلب ردا تلقائيا." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "يجري تعديل إعدادات المكالمة..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "متصل." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "أُلغيت المكالمة" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "لم يتمكن من توقيف المكالمة مؤقتا" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "وضع المكالمة قيد الانتظار..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "يجري بحث STUN..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "يجري جلب مرشَّحي ICE المحلين..." @@ -1859,14 +1868,14 @@ msgstr "في عطلة" msgid "Unknown status" msgstr "حالة مجهولة" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" "عنوان SIP الذي أدخلت غير صالح، يجب أن يبدأ ب \"sip:\" متبوعا بإسم النطاق." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1874,126 +1883,127 @@ msgstr "" "هوية SIP التي أدخلت غير صحيحة.\n" "يجب أن تشبه هذا النمط sip:username@proxydomain، مثلا sip:alice@example.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "تعذر الولوج بالهوية %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "يرن الجرس عن بعد..." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "يرن الجرس عن بعد..." -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "أخذ المكالمة مبكرا." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "المكاملة مع %s متوقفة." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "يجيب %s عن المكالمة - في وضع الانتظار." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "استُعيدت المكالمة." -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "أجاب عن المكالمة %s." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "غير موائم، تحقق من المراميز أو إعدادات الأمان..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "إعدادات الوسائط غير موائمة." -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "استُأنِفت المكالمة." #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "وُقِّفت المكالمة مؤقتا من طرف آخر." #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "حُدِّث الاتصال من البعيد." -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "أُنهيت المكالمة." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "المستخدم مشغول." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "المستخدم غير متاح مؤقتا." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "لا يريد المستخدم أي إزعاج." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "تم تجاهل المكالمة." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "انتهت مهلة الطلب." -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "مُوجَّه" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "فشل الاتصال." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "تم التسجيل في %s بنجاح." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "أُلغي التسجيل في %s ." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "لا إجابة قبل انتهاء المهلة" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "فَشِل التسجيل في %s: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "خدمة غير متاحة، تجري الإعادة" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "شارة التحقق من الهوية هي %s" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/cs.po b/po/cs.po index 1df2c980c..79d5e0344 100644 --- a/po/cs.po +++ b/po/cs.po @@ -9,9 +9,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Czech (http://www.transifex.com/projects/p/linphone-gtk/" "language/cs/)\n" "Language: cs\n" @@ -142,7 +143,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -155,66 +156,66 @@ msgstr "" "do svého adresáře?\n" "Odpovíte-li ne, tato osobo bude dočasně blokována." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "Chyba hovoru" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Hovor ukončen" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Příchozí hovor" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Odpovědět" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Odmítnout" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "Hovor odložen" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "kým: %s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "%s navrhuje začít videohovor. Přijímáte?" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Odkaz na webovou stránku" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Lipnhone – internetový videofon" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (Výchozí)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "Byly jsme přepojeni na %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -222,7 +223,7 @@ msgstr "" "Na tomto počítači nebyla objevena žádná zvuková karta.\n" "Nebudete moci vytáčet a přijímat a zvukové hovory." -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "Volný SIP videofon" @@ -376,15 +377,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "Aby se projevil výběr nového jazyka, je nutné znovu spustit linphone." -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "Žádné" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ZRTP" @@ -562,7 +567,7 @@ msgstr "Ověření (krok 2/2)" msgid "Error" msgstr "Chyba" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "Ukončuje se" @@ -655,7 +660,7 @@ msgstr "Zavěsit" msgid "Calling..." msgstr "Volá se…" -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00:00:00" @@ -692,55 +697,59 @@ msgid "Secured by SRTP" msgstr "Zabezpečeno pomocí SRTP" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Zabezpečeno pomocí ZRTP – [ověřovací klíč: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "Nastavit na neověřeno" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Nastavit na ověřeno" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "Probíhá konference" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "Probíhá hovor" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "Odložený hovor" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Hovor skončil." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "Probíhá přepojení" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "Přepojení dokončeno." -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "Přepojení selhalo." -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "Obnovit" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Odložit" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" @@ -749,7 +758,7 @@ msgstr "" "Nahrává se do\n" "%s %s" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(Odloženo)" @@ -846,23 +855,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1712,68 +1721,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Připraven." -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Vyhledává se umístění čísla…" -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Toto číslo nelze vyhledat." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Navazuje se spojení" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "Nelze volat" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Je nám líto, ale byl dosažen maximální počet současných hovorů." -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "vás volá" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr " a požaduje automatickou zvednutí." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "Upravují se parametry hovoru…" -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Připojeno." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "Hovor přerušen" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "Hovor nebylo možné odložit" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "Současný hovor se odkládá…" -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "Hledá se adresa pomocí STUN…" -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "Shromažďují se místní kandidáti ICE…" @@ -1829,7 +1838,7 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1837,7 +1846,7 @@ msgstr "" "Adresa SIP proxy, kterou jste zadali, není platná. Musí začínat na „sip:“ a " "pak musí následovat jméno stroje." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1845,126 +1854,127 @@ msgstr "" "SIP identita, kterou jste zadali, není platná.\n" "Měla by mít tvar sip:uživatel@proxydoména, například sip:alice@example.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "Nelze se přihlásit jako %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "Vyzvání na druhé straně." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "Vyzvání na druhé straně…" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Časná média." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "Hovor s %s je odložen." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "Hovor přijat kým: %s – odložen." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "Hovor obnoven." -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "Hovor přijat kým: %s." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "Není slučitelné. Zkontrolujte nastavení kodeků a zabezpečení…" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "Neslučitelné parametry médií." -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "Byli jsme obnoveni." #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "Byli jsme odloženi protistranou." #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "Hovor byl aktualizován protistranou." -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Hovor ukončen." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Uživatel je zaneprázdněn." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Uživatel je dočasně nedostupný." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "Uživatel si nepřeje být rušen." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Volání odmítnuto." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "Přesměrováno" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "Volání se nezdařilo." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Registrace na %s byla úspěšná." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "Odregistrování z %s hotovo." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "odpověď nedorazila včas" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrace na %s selhala: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "Klíč k ověření totožnosti je %s" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/de.po b/po/de.po index 229f60c71..204117b52 100644 --- a/po/de.po +++ b/po/de.po @@ -11,9 +11,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-13 16:34+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: German (http://www.transifex.com/projects/p/linphone-gtk/" "language/de/)\n" "Language: de\n" @@ -144,7 +145,7 @@ msgstr "Starte den Audio-Assistent" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -157,7 +158,7 @@ msgstr "" "Ihrer Kontaktliste hinzufügen?\n" "Wenn Sie mit Nein antworten, wird diese Person vorläufig blockiert." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" @@ -166,59 +167,59 @@ msgstr "" "Bitte geben Sie Ihr Passwort für den Benutzernamen %s\n" " für Bereich %s ein:" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "Anruf fehlgeschlagen" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Anruf beendet" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Eingehender Anruf" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Annehmen" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Abweisen" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "Anruf wird gehalten" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "von %s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "%s schlägt vor, eine Videoübertragung zu starten. Nehmen Sie an?" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Website-Verknüpfung" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - ein Internet-Video-Telefon" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (Vorgabe)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "Vermittlung nach %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -226,7 +227,7 @@ msgstr "" "Auf diesem Rechner können keine Soundkarten gefunden werden.\n" "Sie können keine Audio-Anrufe tätigen oder entgegennehmen." -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "Ein freies SIP-Video-Telefon" @@ -382,15 +383,19 @@ msgstr "" "Linphone muss neu gestartet werden, damit die neue Spracheinstellung wirksam " "wird." -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "Keinen" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ZRTP" @@ -571,7 +576,7 @@ msgstr "Bestätigung (Schritt 2/2)" msgid "Error" msgstr "Fehler" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "Fertigstellen" @@ -664,7 +669,7 @@ msgstr "Auflegen" msgid "Calling..." msgstr "Verbindungsaufbau..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -701,55 +706,59 @@ msgid "Secured by SRTP" msgstr "Gesichert durch SRTP" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Gesichert durch ZRTP - [Auth.-Token: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "Auf „Ungeprüft“ setzen" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Auf „Geprüft“ setzen" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "In Konferenz" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "Im Gespräch" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "Gehaltener Anruf" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Anruf beendet." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "Vermittlung läuft" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "Vermittlung abgeschlossen." -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "Vermittlung fehlgeschlagen." -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "Fortsetzen" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Halten" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" @@ -758,7 +767,7 @@ msgstr "" "Recording into\n" "%s %s" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(pausiert)" @@ -858,23 +867,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "Linphone jetzt starten" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "Audio-Assistant" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "Audio-Assistant" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "Einrichtung MIkrofonverstärker" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "Einrichtung Lautstärke" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "aufnehmen und abspielen" @@ -1746,68 +1755,68 @@ msgid "Please wait while fetching configuration from server..." msgstr "" "Bitte warten Sie während die Einstellungen vom Server abgerufen werden..." -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Bereit" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "Einstellen" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Telefonnummernziel wird gesucht..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Diese Nummer kann nicht aufgelöst werden." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Verbindungsaufbau" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "Anruf kann nicht getätigt werden." -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Die maximale Anzahl der gleichzeitigen Anrufe ist erreicht." -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "ruft Sie an" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr " und fragt nach automatischer Antwort." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "Die Anrufparameter werden verändert..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Verbunden." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "Anruf abgebrochen" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "Anruf kann nicht gehalten werden" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "Aktueller Anruf wird gehalten..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "STUN-Ermittlung läuft..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "Lokale Kandidaten für ICE werden zusammengestellt..." @@ -1863,7 +1872,7 @@ msgstr "Urlaub" msgid "Unknown status" msgstr "Unbekannter Status" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1871,7 +1880,7 @@ msgstr "" "Die von Ihnen eingegebene SIP-Proxy-Adresse ist ungültig, sie muss mit " "„sip:“ gefolgt vom Hostnamen beginnen." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1880,126 +1889,127 @@ msgstr "" "Sie sollte wie sip:benutzername@proxydomain aussehen, also z.B. sip:" "alice@beispiel.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "Anmeldung als %s fehlgeschlagen" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "Klingeln bei der Gegenseite." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "Klingeln bei der Gegenseite..." -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "nicht kompatibel, prüfe Codecs oder Sicherheitseinstellungen..." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "Anruf mit %s wird gehalten." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "Der von %s entgegengenommene Anruf wird gehalten." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "Anruf fortgesetzt." -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "Anruf wird von %s entgegengenommen." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "Inkompatibel, prüfe Codecs oder Sicherheitseinstellungen..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "Inkompatible Medienparameter." -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "Anruf wird fortgesetzt." #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "Anruf wird von der Gegenseite gehalten." #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "Anruf ist von der Gegenseite aktualisiert worden." -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Anruf beendet." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Teilnehmer ist besetzt." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Teilnehmer zur Zeit nicht verfügbar." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "Teilnehmer möchte nicht gestört werden." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Anruf abgewiesen" -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "Zeitüberschreitung bei der Anfrage" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "Umgeleitet" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "Anruf fehlgeschlagen." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Registrierung auf %s erfolgreich." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "Abmeldung von %s ist erfolgt." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "Zeitüberschreitung bei der Antwort" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrierung auf %s fehlgeschlagen: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "Service nicht verfügbar, versuche erneut" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "Authentifizierungs-Token ist %s" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/es.po b/po/es.po index 6a133760e..db3d1dd72 100644 --- a/po/es.po +++ b/po/es.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/linphone-gtk/" "language/es/)\n" "Language: es\n" @@ -137,7 +138,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -150,66 +151,66 @@ msgstr "" "contactos?\n" "Si responde no, esta persona será bloqueada temporalmente." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Llamada entrante" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Contestar" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Enlace a la Web" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - un video-teléfono a través de Internet" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (Opción predeterminada)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "Somos transferidos a %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -217,7 +218,7 @@ msgstr "" "No se ha encontrado una tarjeta de sonido en este equipo.\n" "No será posible realizar o recibir llamadas de audio." -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "Un video-teléfono SIP gratuito" @@ -371,15 +372,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "Deberá reiniciar linphone para aplicar la nueva selección de lenguaje" -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ZRTP" @@ -548,7 +553,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -639,7 +644,7 @@ msgstr "" msgid "Calling..." msgstr "" -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -676,62 +681,66 @@ msgid "Secured by SRTP" msgstr "Cifrada con SRTP" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Cifrada con ZRTP - [token de autenticación: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "Set sin verificar" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Set verificado" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "En conferencia" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "" -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "Reanudar" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Pausar" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -828,23 +837,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1696,68 +1705,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Buscando el número de teléfono del destinatario…" -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "No se ha podido resolver este número." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Disculpe, se ha alcanzado el máximo número de llamadas simultáneas" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "y ha solicitado auto respuesta." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "Modificando parámetros de llamada…" -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Conectado." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "No se pudo pausar la llamada" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "Pausando la llamada actual..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "Búsqueda STUN en proceso…" -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1813,7 +1822,7 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1821,7 +1830,7 @@ msgstr "" "La dirección del Proxy SIP que ha introducido no es válida, debe empezar con " "\"sip:\" seguido del hostname." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1830,126 +1839,127 @@ msgstr "" "Debe ser del tipo sip:username@proxydomain, como por ejemplo sip:" "alice@example.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "" -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Medios iniciales." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "La llamada con %s está puesta en pausa." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "Llamada respondida por %s - en espera." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "" -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "El usuario está ocupado." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "El usuario no está disponible temporalmente." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "El usuario no quiere que le molesten." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Llamada rechazada." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "Redigirida" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "" -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "timeout sin respuesta" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/fr.po b/po/fr.po index aff7882d6..33fa26d57 100644 --- a/po/fr.po +++ b/po/fr.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Belledonne Communications , 2015 # Gautier Pelloux-Prayer , 2014 # Gautier Pelloux-Prayer , 2014 # Gautier Pelloux-Prayer , 2014-2015 @@ -11,9 +12,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-13 16:34+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:30+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: French (http://www.transifex.com/projects/p/linphone-gtk/" "language/fr/)\n" "Language: fr\n" @@ -142,7 +144,7 @@ msgstr "Démarre l'assistant audio" msgid "Run self test and exit 0 if succeed" msgstr "Exécuter le test local et retourner 0 en cas de succès" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -156,7 +158,7 @@ msgstr "" "Si vous répondez non, cette personne sera mise temporairement sur liste " "noire." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" @@ -165,59 +167,59 @@ msgstr "" "Entrez le mot de passe pour %s\n" " sur le domaine %s:" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "Erreur lors de l'appel" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Appel terminé." -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Appel entrant" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Répondre" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Refuser" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "Appel en pause" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "b>par %s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "%s propose de démarrer la vidéo. Acceptez-vous ?" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Lien site web" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - un téléphone video pour l'internet" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (par défaut)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "Transfert vers %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -225,7 +227,7 @@ msgstr "" "Aucune carte son n'a été détectée sur cet ordinateur.\n" "Vous ne pourrez pas effectuer d'appels audio." -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "Un visiophone libre" @@ -381,15 +383,19 @@ msgstr "" "La nouvelle selection de langue prendra effet au prochain démarrage de " "linphone." -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "Aucun" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "DTLS" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ZRTP" @@ -569,7 +575,7 @@ msgstr "Validation (étape 2/2)" msgid "Error" msgstr "Erreur" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "En cours d’arrêt." @@ -662,7 +668,7 @@ msgstr "Raccrocher" msgid "Calling..." msgstr "Tentative d'appel..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -699,55 +705,59 @@ msgid "Secured by SRTP" msgstr "Sécurisé par SRTP" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "Sécurisé par DTLS" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Sécurisé par ZRTP- [jeton: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "Marquer comme non vérifié" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Marquer comme vérifié" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "En conférence" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "Appel en cours" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "Appel en attente" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Appel terminé." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "Transfert en cours" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "Transfert terminé" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "Transfert échoué" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "Reprendre" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Pause" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" @@ -756,7 +766,7 @@ msgstr "" "Enregistrement dans\n" "%s %s" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(en attente)" @@ -856,23 +866,23 @@ msgstr "Jouer" msgid "Let's start Linphone now" msgstr "Démarrons Linphone maintenant" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "Assistant audio" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "Assistant audio" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "Calibration du gain du microphone" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "Calibration du volume du haut parleur" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "Enregistrer et joue" @@ -1744,68 +1754,68 @@ msgstr "" "Veuillez patenter un instant pendant le chargement de la configuration " "distante..." -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Prêt." -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "Configuration en cours" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Recherche de la destination du numéro de téléphone..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "La destination n'a pu être trouvée." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Appel de" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "Echec de l'appel" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Désolé, le nombre maximum d'appels simultanés est atteint." -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "vous appelle" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "et sollicite un décrochage automatique." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "Modifications des paramètres d'appels..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "En ligne." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "Appel abandonné" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "La mise en attente a échoué" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "Mise en attente de l'appel..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "Découverte STUN en cours" -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "Collection des candidats locaux ICE en cours..." @@ -1861,7 +1871,7 @@ msgstr "En congé" msgid "Unknown status" msgstr "Status inconnu" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1869,7 +1879,7 @@ msgstr "" "L'adresse SIP du proxy est invalide. Elle doit commencer par \"sip:\" suivie " "par un nom de domaine." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1878,126 +1888,127 @@ msgstr "" "Elle doit être de la forme sip:username@domain, comme par example sip:" "alice@example.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "Echec de la connexion en tant que %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "Sonnerie distante." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "Sonnerie distante..." -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Prise d'appel anticipée." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "%s est maintenant en attente." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "Appel répondu par %s - en attente" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "Appel repris." -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "Appel répondu par %s." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "Incompatible, vérfiez les codecs ou les paramètres de sécurité..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "Paramètres media incompatibles." -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "Appel repris." #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "L'appel a été mis en attente." #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "L'appel est modifié par la partie distante." -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Appel terminé." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Occupé..." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "L'usager est temporairement indisponible." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "L'usager ne souhaite pas être dérangé" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Appel décliné." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "Délai d'attente de la requête dépassé." -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "Redirection" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "L'appel a échoué." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Enregistrement sur %s effectué." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "Désenregistrement sur %s effectué." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "Pas de réponse" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "Echec de l'enregistrement sur %s: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "Service indisponible, nouvelle tentative" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "Le jeton d'authentification est %s" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/he.po b/po/he.po index 4feae78d6..553b97f58 100644 --- a/po/he.po +++ b/po/he.po @@ -11,9 +11,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/linphone-gtk/" "language/he/)\n" "Language: he\n" @@ -140,7 +141,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -153,7 +154,7 @@ msgstr "" "שלך ?\n" "היה ותשובתך תהיה לא, אדם זה יהיה מסומן באופן זמני ברשימה השחורה." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" @@ -162,59 +163,59 @@ msgstr "" "אנא הזן סיסמה עבור משתמש %s\n" "במתחם %s:" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "שגיאת קריאה" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "שיחה הסתיימה" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "קריאה נכנסת" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "לענות" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "לדחות" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "שיחה הושהתה" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "על ידי %s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "‏%s רוצה להתחיל וידאו. האם אתה מסכים ?" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "קישור אתר רשת" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "‫Linphone - וידאופון אינטרנטי" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "‫%s (ברירת מחדל)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "אנחנו מועברים אל %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -222,7 +223,7 @@ msgstr "" "לא אותרו כרטיסי קול במחשב זה.\n" "לא תהיה ביכולתך לשלוח או לקבל שיחות אודיו." -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "וידאופון SIP חופשי" @@ -376,15 +377,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "עליך לאתחל את לינפון כדי שהשפה החדשה תיכנס לתוקף." -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "ללא" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -559,7 +564,7 @@ msgstr "אימות (צעד 2/2)" msgid "Error" msgstr "שגיאה" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "מסיים כעת" @@ -652,7 +657,7 @@ msgstr "נתק" msgid "Calling..." msgstr "מתקשר כעת..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "‭00::00::00" @@ -689,55 +694,59 @@ msgid "Secured by SRTP" msgstr "מאובטחת על ידי SRTP" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "מאובטחת על ידי ZRTP - [אות אימות: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "הגדר כלא מאומתת" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "הגדר כמאומתת" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "בשיחת ועידה" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "בשיחה כעת" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "שיחה מושהית" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "שיחה הסתיימה." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "העברה מצויה כעת בעיצומה" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "העברה הסתיימה." -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "העברה נכשלה." -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "חזור" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "השהה" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" @@ -746,7 +755,7 @@ msgstr "" "מקליט אל תוך\n" "%s %s" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(מושהה)" @@ -843,23 +852,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "הבא נתחיל את Linphone עכשיו" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1709,68 +1718,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "מוכן" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "מחפש כעת עבור יעד מספר טלפון..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "לא ניתן לפתור את מספר זה." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "מתקשר כעת" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "לא ניתן להתקשר" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "הגענו אל המספר המרבי של שיחות מקבילות, עמך הסליחה" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "מתקשר/ת אליך" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr " ומבקש/ת מענה אוטומטי." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "מתאים כעת פרמטרים של שיחה..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "מקושר." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "קריאה בוטלה" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "לא ניתן להשהות את השיחה" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "משהה כעת שיחה נוכחית..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "בדיקת STUN מצויה כעת בעיצומה..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "צבירת מועמדים מקומיים של ICE מצויה כעת בעיצומה..." @@ -1826,14 +1835,14 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" "כתובת sip proxy שהזנת הינה שגויה, זו צריכה להתחיל עם‭\"sip:\" ‬ לאחר שם מארח." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1841,126 +1850,127 @@ msgstr "" "זהות sip שהוזנה הינה שגויה.\n" "זו צריכה להיראות כמו sip:username@proxydomain, למשל sip:alice@example.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "לא ניתן להתחבר בזהות %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "צלצול מרוחק." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "צלצול מרוחק..." -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "מדיה מוקדמת." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "שיחה עם %s מושהית." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "קריאה נענתה על ידי %s - בהמתנה." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "קריאה חודשה." -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "קריאה נענתה על ידי %s." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "חוסר תאימות, בדוק קודקים או הגדרות אבטחה..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "פרמטריי מדיה חסרי תואמים." -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "חזרנו." #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "אנו מושהים על ידי צד אחר." #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "שיחה עודכנה מרחוק." -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "קריאה הסתיימה." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "משתמש עסוק כעת." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "משתמש לא זמין זמנית." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "משתמש לא מעוניין שיפריעו לו." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "קריאה סורבה." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "מכוון מחדש" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "קריאה נכשלה." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "רישום אצל %s הושלם בהצלחה." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "אי רישום אצל %s סוים." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "אין היענות תוך זמן מוגדר" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "רישום אצל %s נכשל: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "אות האימות הינה %s" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/hu.po b/po/hu.po index e9b61953f..1ff87b778 100644 --- a/po/hu.po +++ b/po/hu.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Hungarian (http://www.transifex.com/projects/p/linphone-gtk/" "language/hu/)\n" "Language: hu\n" @@ -136,7 +137,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -149,66 +150,66 @@ msgstr "" "szeretné adni a partnerlistához?\n" "Ha nemmel válaszol, ez a személy átmenetileg tiltólistára kerül." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "Hiba a hívás közben" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Hívás vége" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Beérkező hívás" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Hívás fogadása" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Elutasítás" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "Hívás várakoztatva" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "a következő által: %s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "%s szerené elidítani a videót. Elfogadja?" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Internetes oldal" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - internetes videó telefon" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (Alapértelmezett)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "Át vagyunk irányítva ide: %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -216,7 +217,7 @@ msgstr "" "Hangkártya nincs érzékelve ezen a számítógépen.\n" "Nem fog tudni hang hívásokat küldeni vagy fogadni." -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "Egy ingyenes SIP video-telefon" @@ -372,15 +373,19 @@ msgstr "" "Újra kell indítania a linphone-t, hogy az új nyelv kiválasztása érvényre " "jusson. " -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "Nincs" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ZRTP" @@ -557,7 +562,7 @@ msgstr "Érvényesítés (2/2 lépés)" msgid "Error" msgstr "Hiba" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "Befejezés" @@ -650,7 +655,7 @@ msgstr "Befejezés" msgid "Calling..." msgstr "Hívás folyamatban..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -687,55 +692,59 @@ msgid "Secured by SRTP" msgstr "SRTP-vel titkosítva" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "ZRTP-vel titkosítva - [hitelesítési jel: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "Beállítás ellenőrizetlenként" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Beállítás ellenőrzöttként" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "Konferencián" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "vonalban" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "Várakoztatott hívás" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Hívás vége." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "Átvitel folyamatban" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "Átvitel befejezve." -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "Az átvitel sikertelen." -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "Visszatérés" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Várakoztatás" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" @@ -744,7 +753,7 @@ msgstr "" "Felvétel a következőbe\n" "%s %s" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(Várakoztatva)" @@ -841,23 +850,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1709,68 +1718,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Kész" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Telefonszám-cél keresése..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Nem sikkerült értelmezni a számot." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Kapcsolódás" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "Nem sikerült hívni" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Elnézést, elértük a egyidejű hívások maximális számát" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "kapcsolatba lépett veled." -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "és automatikus választ kért." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "A hívási jellemzők módosítása..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Kapcsolódva." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "Hívás megszakítva" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "Nem sikerült várakoztatni a hívást" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "Jelenlegi hívás várakoztatásának aktiválása..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "Stun keresés folyamatban..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "ICE helyi jelentkezők begyűjtése folyamatban..." @@ -1826,7 +1835,7 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1834,7 +1843,7 @@ msgstr "" "Az Ön által megadott SIP proxy cím érvénytelen. \"sip:\"-tal kell kezdődnie, " "ezt egy hosztnév követi." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1843,127 +1852,128 @@ msgstr "" "Így kéne kinéznie: sip:felhasznalonev@proxytartomany, például sip:" "aladar@pelda.hu" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "Nem sikerült belépni ezzel: %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "Távoli csengés." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "Távoli csengés..." -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Korai médiák." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "A hívás a következővel: %s várakoztatva" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "%s fogadta a hívást - várakoztatva." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "Hívás visszatért" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "%s válaszolt a hívásra." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" "Nem kompatibilis, ellenőrizze a kódek- vagy a biztonsági beállításokat..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "Nem kompatibilis médiajellemzők." -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "Visszatértünk." #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "Megállítva a másik fél által." #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "A hívás távolról frissítve." -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "A hívás befejezve." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "A felhasználó foglalt." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "A felhasználó ideiglenesen nem elérhető" #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "A felhasználó nem akarja, hogy zavarják." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Hívás elutasítva" -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "Átirányítva" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "Nem sikerült a hívás." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "A regisztáció a %s -n sikerült." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "A kiregisztrálás kész a következőn: %s ." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "időtúllépés után nincs válasz" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "A regisztáció a %s -n nem sikerült: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "Hitelesítési jel: %s" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/it.po b/po/it.po index 111737c48..7561f7f0d 100644 --- a/po/it.po +++ b/po/it.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Italian (http://www.transifex.com/projects/p/linphone-gtk/" "language/it/)\n" "Language: it\n" @@ -134,7 +135,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -146,72 +147,72 @@ msgstr "" "veda il tuo stato o aggiungerlo alla tua lista dei contatti Se rispondi no " "questo utente sarà momentaneamente bloccato." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Chiamata terminata" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Chimata in entrata" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Rifiuta" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (Default)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." msgstr "" -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "" @@ -365,15 +366,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "Riavviare il software per utilizzare la nuova lingua selezionata" -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -544,7 +549,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -635,7 +640,7 @@ msgstr "" msgid "Calling..." msgstr "" -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "" @@ -672,62 +677,66 @@ msgid "Secured by SRTP" msgstr "" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Chiamata terminata." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -824,23 +833,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1689,68 +1698,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Pronto" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Ricerca numero destinazione..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Impossibile risolvere il numero." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "In connessione" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Connessione" -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "" -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "Ricerca Stun in progresso ..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1806,7 +1815,7 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1814,7 +1823,7 @@ msgstr "" "L'indirizzo sip proxy utilizzato è invalido, deve iniziare con \"sip:\" " "seguito dall' hostaname." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1822,126 +1831,127 @@ msgstr "" "L'identità sip utilizza è invalida.\n" "Dovrebbre essere sip:username@proxydomain, esempio: sip:alice@example.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "impossibile login come %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "" -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "" -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Chiamata terminata." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Utente occupato" -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Utente non disponibile" #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "L'utente non vuole essere disturbato" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Chiamata rifiutata" -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Registrazione su %s attiva" -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "Unregistrazione su %s" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "timeout no risposta" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrazione su %s fallita: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/ja.po b/po/ja.po index e998ee25c..e4420706b 100644 --- a/po/ja.po +++ b/po/ja.po @@ -9,9 +9,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-13 16:34+0000\n" -"Last-Translator: Alexander\n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Japanese (http://www.transifex.com/projects/p/linphone-gtk/" "language/ja/)\n" "Language: ja\n" @@ -138,7 +139,7 @@ msgstr "オーディオアシスタントを実行" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -151,72 +152,72 @@ msgstr "" "す。\n" "あなたが拒否すると、この人は一時的にブラックリストへ登録されます。" -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "呼出エラー" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "呼出終了" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "着信" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "応答" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "拒否" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "呼び出しの一時停止" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "%s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "ウェブサイトリンク" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - ビデオインターネット電話" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (デフォルト)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "%s に転送しました" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." msgstr "" -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "無料 SIP ビデオ-電話" @@ -370,15 +371,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "言語の選択を有効にするには、 Linphoneを再起動する必要があります。" -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "なし" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ZRTP" @@ -426,6 +431,8 @@ msgid "" "Welcome!\n" "This assistant will help you to use a SIP account for your calls." msgstr "" +"ようこそ!\n" +"あなたの通話のためのSIPアカウント設定をお手伝いします。" #: ../gtk/setupwizard.c:43 msgid "Create an account on linphone.org" @@ -552,7 +559,7 @@ msgstr "検証します (2/2)" msgid "Error" msgstr "エラー" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "終了" @@ -645,7 +652,7 @@ msgstr "" msgid "Calling..." msgstr "かけています…" -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -682,62 +689,66 @@ msgid "Secured by SRTP" msgstr "SRTPのセキュリティ" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "ZRTP によるセキュリティ - [auth token: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "セット未検証" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "セット検証済" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "会議で" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "呼び出し中" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "呼び出し停止" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "呼び出し終了" -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "進行中の転送" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "転送完了。" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "転送失敗。" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "レジューム" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "一時停止" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(停止中)" @@ -834,23 +845,23 @@ msgstr "再生" msgid "Let's start Linphone now" msgstr "Linphoneをはじめる" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "音声アシスタント" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "音声アシスタント" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "マイクのゲイン測定" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "スピーカーの音量測定" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "録音して再生" @@ -1712,68 +1723,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "準備" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "" -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "" #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "と自動応答を尋ねる" -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "コールパラメーターの変更..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "接続しました。" -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "呼び出しを打ち切る" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "呼び出しを一時停止できませんでした" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "現在の通話を一時停止..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "Stunによるルックアップの進行中…" -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1829,138 +1840,139 @@ msgstr "休暇中" msgid "Unknown status" msgstr "不明なステータス" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" msgstr "" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "" -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Early media." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "呼び出し終了。" -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "相手はビジーです。" -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "相手は、今出られません。" #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "相手は手が離せないようです。" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "通話は拒否されました。" -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "リクエストは時間切れです。" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "" -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/nb_NO.po b/po/nb_NO.po index fb7035231..e6bb13dc7 100644 --- a/po/nb_NO.po +++ b/po/nb_NO.po @@ -8,9 +8,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/" "p/linphone-gtk/language/nb_NO/)\n" "Language: nb_NO\n" @@ -137,7 +138,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -150,66 +151,66 @@ msgstr "" "din kontaktliste?\n" "Hvis du svarer nei vil personen bli svartelyst midlertidig." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Samtale avsluttet" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Innkommende samtale" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Svarer" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Avvis" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Peker til nettsted" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - en video Internet telefon" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (Standard)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "Vi er overført til %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -217,7 +218,7 @@ msgstr "" "Klarte ikke å finne noe lydkort på denne datamaskinen.\n" "Du vil ikke kunne sende eller motta lydsamtaler." -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "En gratis SIP video-telefon" @@ -371,15 +372,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "Du må restarte linphone for at det nye språkvalget skal iverksettes." -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -550,7 +555,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -641,7 +646,7 @@ msgstr "" msgid "Calling..." msgstr "Ringer..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00:00:00" @@ -678,62 +683,66 @@ msgid "Secured by SRTP" msgstr "" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "I samtale med" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "Pauset samtale" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Samtale avsluttet." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "Fortsett" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Pause" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -830,23 +839,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1696,68 +1705,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Klar" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Ser etter telefonnummer for destinasjonen..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Kan ikke tilkoble dette nummeret." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Tilknytter" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "Kunne ikke ringe" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Beklager, du har nådd maksimalt antall samtidige samtaler" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "Kontakter deg." -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr " og ba om autosvar." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "Endrer ringeparametre..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Tilkoblet" -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "Samtale avbrutt" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "Kunne ikke pause samtalen" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "Pauser nåværende samtale" -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "STUN oppslag pågår..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1813,7 +1822,7 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1821,7 +1830,7 @@ msgstr "" "SIP proxy adressen du har angitt er ugyldig, den må begynne med \"sip:\" " "etterfult av vertsnavn." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1829,126 +1838,127 @@ msgstr "" "SIP adressen du har angitt er feil. Adressen bør se ut som sip: " "brukernavn@domenenavn, f.eks sip:ola@eksempel.no" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "Ikke ikke logge inn som %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "Ringer hos motparten." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Tidlig media" -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "Samtalen med %s er pauset." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "Samtale besvart av %s - på vent." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "Samtale gjenopptatt." -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "Samtale besvart av %s." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Samtale avsluttet." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Brukeren er opptatt." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Brukeren er midlertidig ikke tilgjengelig." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "Brukeren vil ikke bli forstyrret." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Samtale avvist." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "Omdirigert" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "Samtale feilet." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Registrering hos %s lykkes." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "Avregistrering hos %s lykkes." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "ingen svar innen angitt tid" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrering hos %s mislykkes: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/nl.po b/po/nl.po index cfda5add0..9724098a7 100644 --- a/po/nl.po +++ b/po/nl.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/linphone-gtk/" "language/nl/)\n" "Language: nl\n" @@ -134,7 +135,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -143,72 +144,72 @@ msgid "" "If you answer no, this person will be temporarily blacklisted." msgstr "" -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Oproep beeindigd" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Inkomende oproep" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." msgstr "" -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "Een Vrije SIP video-telefoon" @@ -362,15 +363,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "" -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "Geen" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -539,7 +544,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -630,7 +635,7 @@ msgstr "" msgid "Calling..." msgstr "" -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "" @@ -667,62 +672,66 @@ msgid "Secured by SRTP" msgstr "" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "" -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -819,23 +828,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1683,68 +1692,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Gereed." -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Zoekt de lokatie van het telefoonnummer..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Kon dit nummer niet vinden." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Verbinden" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Verbonden." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "" -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "STUN adres wordt opgezocht..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1800,138 +1809,139 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" msgstr "" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "" -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "" -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Oproep beeindigd." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Gebruiker is bezet." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Gebruiker is tijdelijk niet beschikbaar." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "De gebruiker wenst niet gestoord te worden." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Oproep geweigerd." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Registratie op %s gelukt." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/pl.po b/po/pl.po index f83b391c4..595a29b8d 100644 --- a/po/pl.po +++ b/po/pl.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Polish (http://www.transifex.com/projects/p/linphone-gtk/" "language/pl/)\n" "Language: pl\n" @@ -137,7 +138,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -146,72 +147,72 @@ msgid "" "If you answer no, this person will be temporarily blacklisted." msgstr "" -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." msgstr "" -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "" @@ -365,15 +366,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "" -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -543,7 +548,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -634,7 +639,7 @@ msgstr "" msgid "Calling..." msgstr "" -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "" @@ -671,62 +676,66 @@ msgid "Secured by SRTP" msgstr "" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "" -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -823,23 +832,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1687,68 +1696,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "" -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "" #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Połączony" -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "" -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "" -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1804,138 +1813,139 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" msgstr "" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "" -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "" -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "" -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Osoba jest zajęta." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Osoba jest tymczasowo niedostępna." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "Osoba nie chce, aby jej przeszkadzać." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Rozmowa odrzucona." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "" -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/pt_BR.po b/po/pt_BR.po index 8f7a8c319..3c74b566d 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" "linphone-gtk/language/pt_BR/)\n" "Language: pt_BR\n" @@ -134,7 +135,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -143,72 +144,72 @@ msgid "" "If you answer no, this person will be temporarily blacklisted." msgstr "" -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Camadas recebidas" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." msgstr "" -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "" @@ -362,15 +363,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "" -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "Nenhum" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -539,7 +544,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -630,7 +635,7 @@ msgstr "" msgid "Calling..." msgstr "" -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "" @@ -667,62 +672,66 @@ msgid "Secured by SRTP" msgstr "" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "" -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -819,23 +828,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1683,68 +1692,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Procurando por telefone de destino..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Não foi possível encontrar este número." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Conectado." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "" -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "" -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1800,138 +1809,139 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" msgstr "" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "" -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "" -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "" -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Usuário está ocupado." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Usuário está temporáriamente indisponível." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "" -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "" -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/ru.po b/po/ru.po index b3e312070..aeb106fc5 100644 --- a/po/ru.po +++ b/po/ru.po @@ -12,9 +12,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-14 09:11+0000\n" -"Last-Translator: AlexL \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Russian (http://www.transifex.com/projects/p/linphone-gtk/" "language/ru/)\n" "Language: ru\n" @@ -148,7 +149,7 @@ msgstr "Запустить помощника аудио" msgid "Run self test and exit 0 if succeed" msgstr "Запустить самотест и выйти при успехе со статусом 0" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -161,7 +162,7 @@ msgstr "" "контактный лист?\n" "Если вы ответите Нет, эта персона будет временно в чёрном списке." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" @@ -170,59 +171,59 @@ msgstr "" "Пожалуйста, введите пароль для пользователя %s\n" " для реалм (рилм) %s:" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "Ошибка звонка" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Звонок окончен" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Входящий звонок" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Ответ" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Отклонить" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "Звонок приостановлен" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "%s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "%s предложил запустить видео. Вы принимаете?" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Домашняя страница" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - интернет видео телефон" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (по умолчанию)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "Мы передали в %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -230,7 +231,7 @@ msgstr "" "Звуковые карты не были обнаружены на этом компьютере.\n" "Вы не сможете отправлять или получать аудио звонки." -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "Свободный SIP видео-телефон" @@ -386,15 +387,19 @@ msgstr "" "Вы должны перезагрузить linphone для того, чтобы языковые настройки вступили " "в силу." -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "Нет" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "SRTP" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ZRTP" @@ -576,7 +581,7 @@ msgstr "Подтверждение (шаг 2/2)" msgid "Error" msgstr "Ошибка" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "Прерывание" @@ -669,7 +674,7 @@ msgstr "Повесить трубку" msgid "Calling..." msgstr "Звоним..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -706,55 +711,59 @@ msgid "Secured by SRTP" msgstr "Защищённые с помощью SRTP" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Защищённые с помощью ZRTP - [знак аутентификации: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "Установить непроверенный" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Установить проверенный" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "В конференции" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "Звоним" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "Звонок приостановлен" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Звонок закончен." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "Передача в прогрессе" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "Передача завершена." -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "Передача неудачна." -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "Продолжить" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Пауза" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" @@ -763,7 +772,7 @@ msgstr "" "Записывается в\n" "%s %s" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(Пауза)" @@ -862,23 +871,23 @@ msgstr "Воспроизведение" msgid "Let's start Linphone now" msgstr "Давайте сейчас запустим linphone" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "Помощник аудио" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "Помощник аудио" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "Калибровка усиления микрофона" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "Калибровка громкости динамика" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "Записать и проиграть" @@ -1747,69 +1756,69 @@ msgstr "Конфигурирование..." msgid "Please wait while fetching configuration from server..." msgstr "Пожалуйста, подождите пока получается конфигурация с сервера..." -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Готов" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "Конфигурирование" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Поиск назначения для телефонного номера.." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Не получилось принять решение по этому номеру." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Соединение" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "Невозможно позвонить" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" "К сожалению, мы достигли максимального количества одновременных звонков" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "контактирует с вами" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "и спросил автоматический ответ." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "Изменение параметров звонка..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Соединён." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "Звонок отменён" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "Невозможно приостановить звонок" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "Приостановка текущего звонка..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "Идет поиск STUN..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "Сбор локальных кандидатов ICE в прогрессе..." @@ -1865,7 +1874,7 @@ msgstr "Отдых" msgid "Unknown status" msgstr "Неизвестный статус" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1873,7 +1882,7 @@ msgstr "" "Введённый SIP-адрес прокси является недействительным, он должен начинаться с " "\"sip:имя_хоста\"" -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1882,126 +1891,127 @@ msgstr "" "Должно выглядеть как sip:имя_пользователя@домен_прокси, как например, sip:" "alice@example.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "Невозможно зайти как: %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "Дистанционный звонок." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "Дистанционный звонок..." -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Предответное проключение." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "Звонок с %s приостановлен." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "На звонок ответил %s - на удержании." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "Звонок возобновлён." -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "На звонок ответил %s." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "Несовместимость, проверьте кодеки или параметры безопасности..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "Несовместимость медиа-параметров." -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "Мы возобновили." #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "Мы приостановлены другой стороной." #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "Звонок был дистанционно обновлён." -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Звонок прерван." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Пользователь занят." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Пользователь временно недоступен." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "Пользователь не хочет чтобы его беспокоили." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Звонок отклонён." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "Таймаут запроса." -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "Переадресован" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "Звонок не удался." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Регистрация на %s прошла успешно." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "Отмена регистрации на %s завершена." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "время ожидания истекло" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "Регистрация на %s не удалась: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "Сервис недоступен, повтор" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "Маркер проверки подлинности: %s" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/sr.po b/po/sr.po index 56f9e5f19..c27c803ee 100644 --- a/po/sr.po +++ b/po/sr.po @@ -8,9 +8,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-13 16:34+0000\n" -"Last-Translator: Мирослав Николић \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/linphone-gtk/" "language/sr/)\n" "Language: sr\n" @@ -142,7 +143,7 @@ msgstr "Покреће помоћника звука" msgid "Run self test and exit 0 if succeed" msgstr "Покреће самоиспробавање и излази 0 ако је успешно" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -156,7 +157,7 @@ msgstr "" "Ако одговорите са не, ова особа ће привремено бити стављена на списак " "забрана." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" @@ -165,59 +166,59 @@ msgstr "" "Унесите вашу лозинку за корисничко име %s\n" " на подручју %s:" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "Грешка позива" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Позив је завршен" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Долазни позив" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "Јави се" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Одбиј" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "Позив је заустављен" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "од %s" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "%s предлаже да започнете видео. Да ли прихватате ?" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Веза веб сајта" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Линфон — интернет телефон са снимком" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (основно)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "Преселили смо се на %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -225,7 +226,7 @@ msgstr "" "Ниједна звучна картица није откривена на овом рачунару.\n" "Нећете бити у могућности да шаљете или да примате звучне позиве." -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "Слободан СИП телефон са снимком" @@ -380,15 +381,19 @@ msgid "" msgstr "" "Треба поново да покренете линфон да би нови изабрани језик ступио у дејство." -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "Ништа" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "СРТП" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "ЗРТП" @@ -568,7 +573,7 @@ msgstr "Потврђивање (корак 2/2)" msgid "Error" msgstr "Грешка" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "Завршавам" @@ -661,7 +666,7 @@ msgstr "Прекини" msgid "Calling..." msgstr "Позивам..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -698,55 +703,59 @@ msgid "Secured by SRTP" msgstr "Осигурано СРТП-ом" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "Осигурано ЗРТП-ом [потврђивање идентитета: %s]" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "Непроверено подешавање" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "Проверено подешавање" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "На конференцији" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "У позиву" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "Заустављен позив" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Позив је завршен." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "Пренос је у току" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "Пренос је обављен." -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "Пренос није успео." -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "Настави" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "Застани" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" @@ -755,7 +764,7 @@ msgstr "" "Снимам у\n" "%s %s" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "(Паузирано)" @@ -854,23 +863,23 @@ msgstr "Пусти" msgid "Let's start Linphone now" msgstr "Хајде сада да покренемо Линфон" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "Помоћник звука" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "Помоћник звука" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "Дотеривање појачања микрофона" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "Дотеривање јачине звука звучника" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "Снимите и пустите" @@ -1739,68 +1748,68 @@ msgstr "Подешавам..." msgid "Please wait while fetching configuration from server..." msgstr "Сачекајте док довучем подешавања са сервера..." -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Спреман" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "Подешавам" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Тражим одредиште телефонског броја..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Не могу да решим овај број." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Ступам у везу" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "Не могу да позовем" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "Извините, достигли смо највећи број истовремених позива" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "вам се обраћа" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr " и затражени само-одговор." -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "Мењам параметре позива..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Повезан сам." -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "Позив је прекинут" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "Не могу да зауставим позив" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "Заустављам тренутни позив..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "У току је тражење стуна..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "Прикупљање месних ИЦЕ кандидата је у току..." @@ -1856,7 +1865,7 @@ msgstr "На одмору" msgid "Unknown status" msgstr "Непознато стање" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1864,7 +1873,7 @@ msgstr "" "Адреса сип посредника коју сте унели је неисправна, мора почети на „sip:“ за " "којим следи назив домаћина." -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1873,126 +1882,127 @@ msgstr "" "Треба да изгледа као „sip:корисник@домен-посредника, као што је „sip:" "alice@example.net“" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "Не могу да се пријавим као %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "Удаљено звоњење." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "Удаљено звоњење..." -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Ранији медиј." -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "Позив са „%s“ је заустављен." -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "Позив на који је одговорио „%s“ — на чекању." -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "Позив је настављен." -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "На позив је одговорио „%s“." -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "Несагласно, проверите кодеке или безбедносна подешавања..." -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "Медијски параметри су несагласни." -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "Наставили смо." #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "Друга страна нас је паузирала." #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "Позив је освежен удаљеним." -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Позив је завршен." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Корисник је заузет." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Корисник је привремено недоступан." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "Корисник не жели да буде узнемираван." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Позив је одбијен." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "Истекло је време захтева." -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "Преусмерен" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "Позив није успео." -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Уписивање на „%s“ је успело." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "Исписивање са „%s“ је обављено." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "нема ограничења одговора" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "Уписивање на „%s“ није успело: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "Услуга није доступна, поново покушавам" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "Симбол потврђивања идентитета је „%s“" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/sv.po b/po/sv.po index b43407cf6..ddee3cf70 100644 --- a/po/sv.po +++ b/po/sv.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/linphone-gtk/" "language/sv/)\n" "Language: sv\n" @@ -136,7 +137,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -149,72 +150,72 @@ msgstr "" "henne till din kontaktlista?\n" "Om du svarar nej, personen kommer att vara bannlyst." -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "Samtalet slut" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "Inkommande samtal" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "Avböj" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "Webbsajt" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - en video Internet telefon" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (Default)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." msgstr "" -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "En gratis SIP video-telefon" @@ -368,15 +369,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "Du behöver starta om programmet för att det nya språket ska synas." -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -547,7 +552,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -638,7 +643,7 @@ msgstr "" msgid "Calling..." msgstr "Ringer..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00:00:00" @@ -675,62 +680,66 @@ msgid "Secured by SRTP" msgstr "" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "Samtalet slut." -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -827,23 +836,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1692,68 +1701,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "Redo" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "Leta efter telefonnummer för destinationen..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "Kan inte nå dett nummer." #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "Kontaktar" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "" -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "Kopplad" -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "" -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "STUN uppslagning pågår..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1809,7 +1818,7 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." @@ -1817,7 +1826,7 @@ msgstr "" "SIP proxy adressen som du matade in är inte rätt, adressen måste starta med " "\"sip:\", följd av ett hostnamn" -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1825,126 +1834,127 @@ msgstr "" "SIP adressen som du matade in är inte rätt. Adressen borde se ut som sip:" "namn@domän, såsom sip:peter@exempel.se" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "Kunde inte logga in som %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "Ringer hos motparten." -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "Tidig media" -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "Samtalet slut." -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "Användare upptagen." -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "Användaren temporärt inte tillgänglig." #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "Användaren vill inte bli störd." -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "Samtalet avböjdes." -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "Registrering hos %s lyckades." -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "Avregistrering hos %s lyckades." -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "Inget svar inom angiven tid" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "Registrering hos %s mislyckades: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/zh_CN.po b/po/zh_CN.po index 44b01c13b..30e05bb15 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/linphone-" "gtk/language/zh_CN/)\n" "Language: zh_CN\n" @@ -132,7 +133,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -144,66 +145,66 @@ msgstr "" "您是否允许他看到您的在线状态或者将它加为您的联系人允许?\n" "如果您回答否,则会将该人临时性的放入黑名单" -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "呼叫结束" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "呼入" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "拒绝" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "网站" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - 互联网视频电话" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (默认)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -211,7 +212,7 @@ msgstr "" "未在此计算机上检测到声卡。\n" "您无法发送或接收音频呼叫。" -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "免费的 SIP 视频电话" @@ -365,15 +366,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "您需要重启 linphone 以使语言选择生效。" -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -543,7 +548,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -634,7 +639,7 @@ msgstr "" msgid "Calling..." msgstr "正在呼叫..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -671,62 +676,66 @@ msgid "Secured by SRTP" msgstr "" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "通话结束。" -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -823,23 +832,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1687,68 +1696,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "就绪" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "查询电话号码目的地..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "该号码无法解析。" #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "联系中" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "正在联系您" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr " 并询问了自动回答。" -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "" -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "已连接。" -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "" -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "正在进行 Stun 查找..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1804,13 +1813,13 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "您输入的 SIP 代理地址无效,它必须是以“sip:”开头,并紧随一个主机名。" -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1818,126 +1827,127 @@ msgstr "" "您输入的地址无效。\n" "它应具有“sip:用户名@代理域”的形式,例如 sip:alice@example.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "无法登录为 %s" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "响铃。" -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "" -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "" -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "通话结束。" -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "被叫正忙。" -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "您呼叫的用户暂时无法接通。" #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "用户已开启免打扰功能。" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "呼叫被拒绝。" -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "已重定向" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "呼叫失败。" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "成功注册到 %s" -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "已在 %s 解除注册。" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "没有响应,超时" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "注册到 %s 失败: %s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/po/zh_TW.po b/po/zh_TW.po index cf24e3fc7..598b7acf3 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -7,9 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: linphone-gtk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-01-13 16:18+0100\n" -"PO-Revision-Date: 2015-01-06 11:29+0000\n" -"Last-Translator: Gautier Pelloux-Prayer \n" +"POT-Creation-Date: 2015-02-17 12:28+0100\n" +"PO-Revision-Date: 2015-02-17 11:28+0000\n" +"Last-Translator: Belledonne Communications \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/" "linphone-gtk/language/zh_TW/)\n" "Language: zh_TW\n" @@ -133,7 +134,7 @@ msgstr "" msgid "Run self test and exit 0 if succeed" msgstr "" -#: ../gtk/main.c:1083 +#: ../gtk/main.c:1088 #, c-format msgid "" "%s would like to add you to his contact list.\n" @@ -145,66 +146,66 @@ msgstr "" "您是否要允許他看見您的上線狀態或將他加入您的連絡人清單?\n" "如果您回答否,這個人會被暫時列入黑名單。" -#: ../gtk/main.c:1160 +#: ../gtk/main.c:1165 #, c-format msgid "" "Please enter your password for username %s\n" " at realm %s:" msgstr "" -#: ../gtk/main.c:1281 +#: ../gtk/main.c:1286 msgid "Call error" msgstr "" -#: ../gtk/main.c:1284 ../coreapi/linphonecore.c:3767 +#: ../gtk/main.c:1289 ../coreapi/linphonecore.c:3787 msgid "Call ended" msgstr "通話已結束" -#: ../gtk/main.c:1287 ../coreapi/call_log.c:221 +#: ../gtk/main.c:1292 ../coreapi/call_log.c:221 msgid "Incoming call" msgstr "來電" -#: ../gtk/main.c:1289 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 +#: ../gtk/main.c:1294 ../gtk/incall_view.c:532 ../gtk/main.ui.h:5 msgid "Answer" msgstr "接聽" -#: ../gtk/main.c:1291 ../gtk/main.ui.h:6 +#: ../gtk/main.c:1296 ../gtk/main.ui.h:6 msgid "Decline" msgstr "拒接" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 msgid "Call paused" msgstr "" -#: ../gtk/main.c:1297 +#: ../gtk/main.c:1302 #, c-format msgid "by %s" msgstr "" -#: ../gtk/main.c:1367 +#: ../gtk/main.c:1372 #, c-format msgid "%s proposed to start video. Do you accept ?" msgstr "" -#: ../gtk/main.c:1529 +#: ../gtk/main.c:1534 msgid "Website link" msgstr "網站連結" -#: ../gtk/main.c:1578 +#: ../gtk/main.c:1583 msgid "Linphone - a video internet phone" msgstr "Linphone - 網路視訊電話" -#: ../gtk/main.c:1670 +#: ../gtk/main.c:1675 #, c-format msgid "%s (Default)" msgstr "%s (預設值)" -#: ../gtk/main.c:2002 ../coreapi/callbacks.c:986 +#: ../gtk/main.c:2007 ../coreapi/callbacks.c:1027 #, c-format msgid "We are transferred to %s" msgstr "我們被轉接到 %s" -#: ../gtk/main.c:2012 +#: ../gtk/main.c:2017 msgid "" "No sound cards have been detected on this computer.\n" "You won't be able to send or receive audio calls." @@ -212,7 +213,7 @@ msgstr "" "在這臺電腦中偵測不到音效卡。\n" "您將無法傳送或接收語音電話。" -#: ../gtk/main.c:2156 +#: ../gtk/main.c:2161 msgid "A free SIP video-phone" msgstr "自由的 SIP 視訊電話" @@ -366,15 +367,19 @@ msgid "" "You need to restart linphone for the new language selection to take effect." msgstr "您需要重新啟動 linphone 才能讓新選擇的語言生效。" -#: ../gtk/propertybox.c:1234 +#: ../gtk/propertybox.c:1236 msgid "None" msgstr "" -#: ../gtk/propertybox.c:1238 +#: ../gtk/propertybox.c:1240 msgid "SRTP" msgstr "" -#: ../gtk/propertybox.c:1244 +#: ../gtk/propertybox.c:1246 +msgid "DTLS" +msgstr "" + +#: ../gtk/propertybox.c:1253 msgid "ZRTP" msgstr "" @@ -544,7 +549,7 @@ msgstr "" msgid "Error" msgstr "" -#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:527 +#: ../gtk/setupwizard.c:658 ../gtk/audio_assistant.c:534 msgid "Terminating" msgstr "" @@ -635,7 +640,7 @@ msgstr "" msgid "Calling..." msgstr "播打..." -#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:727 +#: ../gtk/incall_view.c:514 ../gtk/incall_view.c:733 msgid "00::00::00" msgstr "00::00::00" @@ -672,62 +677,66 @@ msgid "Secured by SRTP" msgstr "" #: ../gtk/incall_view.c:685 +msgid "Secured by DTLS" +msgstr "" + +#: ../gtk/incall_view.c:691 #, c-format msgid "Secured by ZRTP - [auth token: %s]" msgstr "" -#: ../gtk/incall_view.c:691 +#: ../gtk/incall_view.c:697 msgid "Set unverified" msgstr "" -#: ../gtk/incall_view.c:691 ../gtk/main.ui.h:4 +#: ../gtk/incall_view.c:697 ../gtk/main.ui.h:4 msgid "Set verified" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In conference" msgstr "" -#: ../gtk/incall_view.c:722 +#: ../gtk/incall_view.c:728 msgid "In call" msgstr "通話中" -#: ../gtk/incall_view.c:758 +#: ../gtk/incall_view.c:764 msgid "Paused call" msgstr "暫停通話" -#: ../gtk/incall_view.c:794 +#: ../gtk/incall_view.c:800 msgid "Call ended." msgstr "通話結束。" -#: ../gtk/incall_view.c:825 +#: ../gtk/incall_view.c:831 msgid "Transfer in progress" msgstr "" -#: ../gtk/incall_view.c:828 +#: ../gtk/incall_view.c:834 msgid "Transfer done." msgstr "" -#: ../gtk/incall_view.c:831 +#: ../gtk/incall_view.c:837 msgid "Transfer failed." msgstr "" -#: ../gtk/incall_view.c:875 +#: ../gtk/incall_view.c:881 msgid "Resume" msgstr "繼續" -#: ../gtk/incall_view.c:882 ../gtk/main.ui.h:9 +#: ../gtk/incall_view.c:888 ../gtk/main.ui.h:9 msgid "Pause" msgstr "暫停" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 #, c-format msgid "" "Recording into\n" "%s %s" msgstr "" -#: ../gtk/incall_view.c:948 +#: ../gtk/incall_view.c:954 msgid "(Paused)" msgstr "" @@ -824,23 +833,23 @@ msgstr "" msgid "Let's start Linphone now" msgstr "" -#: ../gtk/audio_assistant.c:496 +#: ../gtk/audio_assistant.c:503 msgid "Audio Assistant" msgstr "" -#: ../gtk/audio_assistant.c:506 ../gtk/main.ui.h:31 +#: ../gtk/audio_assistant.c:513 ../gtk/main.ui.h:31 msgid "Audio assistant" msgstr "" -#: ../gtk/audio_assistant.c:511 +#: ../gtk/audio_assistant.c:518 msgid "Mic Gain calibration" msgstr "" -#: ../gtk/audio_assistant.c:517 +#: ../gtk/audio_assistant.c:524 msgid "Speaker volume calibration" msgstr "" -#: ../gtk/audio_assistant.c:522 +#: ../gtk/audio_assistant.c:529 msgid "Record and Play" msgstr "" @@ -1688,68 +1697,68 @@ msgstr "" msgid "Please wait while fetching configuration from server..." msgstr "" -#: ../coreapi/linphonecore.c:1510 +#: ../coreapi/linphonecore.c:1508 msgid "Ready" msgstr "準備就緒" -#: ../coreapi/linphonecore.c:2489 +#: ../coreapi/linphonecore.c:2495 msgid "Configuring" msgstr "" -#: ../coreapi/linphonecore.c:2654 +#: ../coreapi/linphonecore.c:2669 msgid "Looking for telephone number destination..." msgstr "尋找電話號碼目的端..." -#: ../coreapi/linphonecore.c:2656 +#: ../coreapi/linphonecore.c:2671 msgid "Could not resolve this number." msgstr "無法解析這個號碼。" #. must be known at that time -#: ../coreapi/linphonecore.c:2942 +#: ../coreapi/linphonecore.c:2957 msgid "Contacting" msgstr "正在連絡" -#: ../coreapi/linphonecore.c:2947 +#: ../coreapi/linphonecore.c:2962 msgid "Could not call" msgstr "無法通話" -#: ../coreapi/linphonecore.c:3097 +#: ../coreapi/linphonecore.c:3112 msgid "Sorry, we have reached the maximum number of simultaneous calls" msgstr "抱歉,我們已達瀏同步通話的最大數目" -#: ../coreapi/linphonecore.c:3256 +#: ../coreapi/linphonecore.c:3270 msgid "is contacting you" msgstr "正在連絡您" -#: ../coreapi/linphonecore.c:3257 +#: ../coreapi/linphonecore.c:3271 msgid " and asked autoanswer." msgstr "並要求自動接聽。" -#: ../coreapi/linphonecore.c:3375 +#: ../coreapi/linphonecore.c:3395 msgid "Modifying call parameters..." msgstr "修改通話參數..." -#: ../coreapi/linphonecore.c:3723 +#: ../coreapi/linphonecore.c:3743 msgid "Connected." msgstr "已連線。" -#: ../coreapi/linphonecore.c:3748 +#: ../coreapi/linphonecore.c:3768 msgid "Call aborted" msgstr "通話已放棄" -#: ../coreapi/linphonecore.c:3938 +#: ../coreapi/linphonecore.c:3958 msgid "Could not pause the call" msgstr "無法暫停通話" -#: ../coreapi/linphonecore.c:3941 +#: ../coreapi/linphonecore.c:3961 msgid "Pausing the current call..." msgstr "暫停目前的通話..." -#: ../coreapi/misc.c:438 +#: ../coreapi/misc.c:433 msgid "Stun lookup in progress..." msgstr "正在進行 Stun 搜尋..." -#: ../coreapi/misc.c:619 +#: ../coreapi/misc.c:614 msgid "ICE local candidates gathering in progress..." msgstr "" @@ -1805,14 +1814,14 @@ msgstr "" msgid "Unknown status" msgstr "" -#: ../coreapi/proxy.c:327 +#: ../coreapi/proxy.c:328 msgid "" "The sip proxy address you entered is invalid, it must start with \"sip:\" " "followed by a hostname." msgstr "" "您輸入的 sip 代理位址是無效的,它必須要以「sip:」開頭,後面接主機名稱。" -#: ../coreapi/proxy.c:333 +#: ../coreapi/proxy.c:334 msgid "" "The sip identity you entered is invalid.\n" "It should look like sip:username@proxydomain, such as sip:alice@example.net" @@ -1820,126 +1829,127 @@ msgstr "" "您輸入的 sip 身分是無效的。\n" "它應該看起來像 sip:使用者名稱@代理網域,像是 sip:alice@example.net" -#: ../coreapi/proxy.c:1391 +#: ../coreapi/proxy.c:1403 #, c-format msgid "Could not login as %s" msgstr "無法以 %s 登入" -#: ../coreapi/callbacks.c:383 +#: ../coreapi/callbacks.c:404 msgid "Remote ringing." msgstr "遠端響鈴。" -#: ../coreapi/callbacks.c:404 +#: ../coreapi/callbacks.c:425 msgid "Remote ringing..." msgstr "遠端響鈴..." -#: ../coreapi/callbacks.c:414 +#: ../coreapi/callbacks.c:442 msgid "Early media." msgstr "早期媒體。" -#: ../coreapi/callbacks.c:475 +#: ../coreapi/callbacks.c:503 #, c-format msgid "Call with %s is paused." msgstr "和 %s 的通話已暫停。" -#: ../coreapi/callbacks.c:488 +#: ../coreapi/callbacks.c:516 #, c-format msgid "Call answered by %s - on hold." msgstr "通話由 %s 接聽 - 保留中。" -#: ../coreapi/callbacks.c:498 +#: ../coreapi/callbacks.c:526 msgid "Call resumed." msgstr "通話已繼續。" -#: ../coreapi/callbacks.c:502 +#: ../coreapi/callbacks.c:530 #, c-format msgid "Call answered by %s." msgstr "通話由 %s 接聽。" -#: ../coreapi/callbacks.c:525 +#: ../coreapi/callbacks.c:553 msgid "Incompatible, check codecs or security settings..." msgstr "" -#: ../coreapi/callbacks.c:530 ../coreapi/callbacks.c:829 +#: ../coreapi/callbacks.c:558 ../coreapi/callbacks.c:870 msgid "Incompatible media parameters." msgstr "" -#: ../coreapi/callbacks.c:560 +#: ../coreapi/callbacks.c:588 msgid "We have been resumed." msgstr "" #. we are being paused -#: ../coreapi/callbacks.c:568 +#: ../coreapi/callbacks.c:596 msgid "We are paused by other party." msgstr "" #. reINVITE and in-dialogs UPDATE go here -#: ../coreapi/callbacks.c:602 +#: ../coreapi/callbacks.c:630 msgid "Call is updated by remote." msgstr "" -#: ../coreapi/callbacks.c:705 +#: ../coreapi/callbacks.c:746 msgid "Call terminated." msgstr "通話已終止。" -#: ../coreapi/callbacks.c:733 +#: ../coreapi/callbacks.c:774 msgid "User is busy." msgstr "使用者現正忙碌。" -#: ../coreapi/callbacks.c:734 +#: ../coreapi/callbacks.c:775 msgid "User is temporarily unavailable." msgstr "使用者暫時無法聯繫。" #. char *retrymsg=_("%s. Retry after %i minute(s)."); -#: ../coreapi/callbacks.c:736 +#: ../coreapi/callbacks.c:777 msgid "User does not want to be disturbed." msgstr "使用者不想要被打擾。" -#: ../coreapi/callbacks.c:737 +#: ../coreapi/callbacks.c:778 msgid "Call declined." msgstr "通話被拒接。" -#: ../coreapi/callbacks.c:752 +#: ../coreapi/callbacks.c:793 msgid "Request timeout." msgstr "" -#: ../coreapi/callbacks.c:783 +#: ../coreapi/callbacks.c:824 msgid "Redirected" msgstr "已重新導向" -#: ../coreapi/callbacks.c:838 +#: ../coreapi/callbacks.c:879 msgid "Call failed." msgstr "通話失敗。" -#: ../coreapi/callbacks.c:916 +#: ../coreapi/callbacks.c:957 #, c-format msgid "Registration on %s successful." msgstr "在 %s 註冊成功。" -#: ../coreapi/callbacks.c:917 +#: ../coreapi/callbacks.c:958 #, c-format msgid "Unregistration on %s done." msgstr "在 %s 取消註冊完成。" -#: ../coreapi/callbacks.c:935 +#: ../coreapi/callbacks.c:976 msgid "no response timeout" msgstr "沒有回應逾時" -#: ../coreapi/callbacks.c:938 +#: ../coreapi/callbacks.c:979 #, c-format msgid "Registration on %s failed: %s" msgstr "在 %s 註冊失敗:%s" -#: ../coreapi/callbacks.c:945 +#: ../coreapi/callbacks.c:986 msgid "Service unavailable, retrying" msgstr "" -#: ../coreapi/linphonecall.c:175 +#. if encryption is DTLS, no status to be displayed +#: ../coreapi/linphonecall.c:180 #, c-format msgid "Authentication token is %s" msgstr "" -#: ../coreapi/linphonecall.c:3041 +#: ../coreapi/linphonecall.c:3492 #, c-format msgid "You have missed %i call." msgid_plural "You have missed %i calls." diff --git a/share/Makefile.am b/share/Makefile.am index f0df44261..0b3fb0119 100644 --- a/share/Makefile.am +++ b/share/Makefile.am @@ -32,6 +32,9 @@ pkgconfig_DATA=linphone.pc linphonedir=$(datadir)/linphone linphone_DATA=rootca.pem +appdatadir=$(datadir)/appdata +appdata_DATA=linphone.appdata.xml + #download root ca from mozilla using script from curl (mk-ca-bundle.pl). #if that fails (no connection, no perl SSL...) , then a rootca bundle archived in the source tree is taken instead. rootca.pem: @@ -49,7 +52,8 @@ EXTRA_DIST = $(LINPHONE_SOUNDS) \ audio-assistant.desktop.in \ linphone.pc.in \ Makefile.inc \ - archived-rootca.pem + archived-rootca.pem \ + $(appdata_DATA) CLEANFILES=rootca.pem diff --git a/share/linphone.appdata.xml b/share/linphone.appdata.xml new file mode 100644 index 000000000..db660b614 --- /dev/null +++ b/share/linphone.appdata.xml @@ -0,0 +1,36 @@ + + + + linphone.desktop + CC0-1.0 + GPL-2.0 + Linphone + SIP video soft-phone + +
    +
  • Make audio and video calls in HD
  • +
  • Create audio conferences
  • +
  • Record and store calls
  • +
  • View real-time presence status
  • +
  • Manage your address book
  • +
  • Communicate securely
  • +
  • Free subscription
  • +
+
+ + + http://www.linphone.org/uploads/images/desktop_main_window.png + Main window + + + http://www.linphone.org/uploads/images/desktop_call_view.png + Call view + + + http://www.linphone.org/uploads/images/desktop_chat_view.png + Chat view + + + http://www.linphone.org + contact@belledonne-communications.com +
diff --git a/tester/call_tester.c b/tester/call_tester.c index be6e4a29c..7171e22b9 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -178,6 +178,14 @@ void liblinphone_tester_check_rtcp(LinphoneCoreManager* caller, LinphoneCoreMana linphone_call_unref(c2); } +static void setup_sdp_handling(const LinphoneCallTestParams* params, LinphoneCoreManager* mgr ){ + if( params->sdp_removal ){ + sal_default_set_sdp_handling(mgr->lc->sal, SalOpSDPSimulateRemove); + } else if( params->sdp_simulate_error ){ + sal_default_set_sdp_handling(mgr->lc->sal, SalOpSDPSimulateError); + } +} + bool_t call_with_params2(LinphoneCoreManager* caller_mgr ,LinphoneCoreManager* callee_mgr , const LinphoneCallTestParams *caller_test_params @@ -189,10 +197,10 @@ bool_t call_with_params2(LinphoneCoreManager* caller_mgr bool_t result=FALSE; LinphoneCallParams *caller_params = caller_test_params->base; LinphoneCallParams *callee_params = callee_test_params->base; - bool_t did_received_call; + bool_t did_receive_call; - sal_default_enable_sdp_removal(caller_mgr->lc->sal, caller_test_params->sdp_removal); - sal_default_enable_sdp_removal(callee_mgr->lc->sal, callee_test_params->sdp_removal); + setup_sdp_handling(caller_test_params, caller_mgr); + setup_sdp_handling(callee_test_params, callee_mgr); if (!caller_params){ CU_ASSERT_PTR_NOT_NULL(linphone_core_invite_address(caller_mgr->lc,callee_mgr->identity)); @@ -200,16 +208,16 @@ bool_t call_with_params2(LinphoneCoreManager* caller_mgr CU_ASSERT_PTR_NOT_NULL(linphone_core_invite_address_with_params(caller_mgr->lc,callee_mgr->identity,caller_params)); } - did_received_call = wait_for(callee_mgr->lc + did_receive_call = wait_for(callee_mgr->lc ,caller_mgr->lc ,&callee_mgr->stat.number_of_LinphoneCallIncomingReceived ,initial_callee.number_of_LinphoneCallIncomingReceived+1); - CU_ASSERT_EQUAL(did_received_call, !callee_test_params->sdp_removal); + CU_ASSERT_EQUAL(did_receive_call, !callee_test_params->sdp_simulate_error); - sal_default_enable_sdp_removal(caller_mgr->lc->sal, FALSE); - sal_default_enable_sdp_removal(callee_mgr->lc->sal, FALSE); + sal_default_set_sdp_handling(caller_mgr->lc->sal, SalOpSDPNormal); + sal_default_set_sdp_handling(callee_mgr->lc->sal, SalOpSDPNormal); - if (!did_received_call) return 0; + if (!did_receive_call) return 0; CU_ASSERT_TRUE(linphone_core_inc_invite_pending(callee_mgr->lc)); @@ -226,13 +234,13 @@ bool_t call_with_params2(LinphoneCoreManager* caller_mgr CU_ASSERT_TRUE((caller_mgr->stat.number_of_LinphoneCallOutgoingRinging==initial_caller.number_of_LinphoneCallOutgoingRinging+1) - |(caller_mgr->stat.number_of_LinphoneCallOutgoingEarlyMedia==initial_caller.number_of_LinphoneCallOutgoingEarlyMedia+1)); + ||(caller_mgr->stat.number_of_LinphoneCallOutgoingEarlyMedia==initial_caller.number_of_LinphoneCallOutgoingEarlyMedia+1)); CU_ASSERT_PTR_NOT_NULL(linphone_core_get_current_call_remote_address(callee_mgr->lc)); if(!linphone_core_get_current_call(caller_mgr->lc) || !linphone_core_get_current_call(callee_mgr->lc) || !linphone_core_get_current_call_remote_address(callee_mgr->lc)) { return 0; - } else { + } else if (caller_mgr->identity){ LinphoneAddress* callee_from=linphone_address_clone(caller_mgr->identity); linphone_address_set_port(callee_from,0); /*remove port because port is never present in from header*/ @@ -271,10 +279,10 @@ bool_t call_with_params2(LinphoneCoreManager* caller_mgr if ((linphone_core_get_media_encryption(callee_mgr->lc) == LinphoneMediaEncryptionZRTP) || (linphone_core_get_media_encryption(callee_mgr->lc) == LinphoneMediaEncryptionDTLS)) wait_for(callee_mgr->lc,caller_mgr->lc,&callee_mgr->stat.number_of_LinphoneCallEncryptedOn,initial_callee.number_of_LinphoneCallEncryptedOn+1); { - const LinphoneCallParams* call_param = linphone_call_get_current_params(linphone_core_get_current_call(callee_mgr->lc)); - CU_ASSERT_EQUAL(linphone_call_params_get_media_encryption(call_param),linphone_core_get_media_encryption(caller_mgr->lc)); - call_param = linphone_call_get_current_params(linphone_core_get_current_call(caller_mgr->lc)); - CU_ASSERT_EQUAL(linphone_call_params_get_media_encryption(call_param),linphone_core_get_media_encryption(callee_mgr->lc)); + const LinphoneCallParams* call_param = linphone_call_get_current_params(linphone_core_get_current_call(callee_mgr->lc)); + CU_ASSERT_EQUAL(linphone_call_params_get_media_encryption(call_param),linphone_core_get_media_encryption(caller_mgr->lc)); + call_param = linphone_call_get_current_params(linphone_core_get_current_call(caller_mgr->lc)); + CU_ASSERT_EQUAL(linphone_call_params_get_media_encryption(call_param),linphone_core_get_media_encryption(callee_mgr->lc)); } } return result; @@ -913,7 +921,7 @@ static void call_with_no_sdp_ack_without_sdp(void){ CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallIncomingReceived,1)); call=linphone_core_get_current_call(pauline->lc); if (call){ - sal_call_enable_sdp_removal(call->op, TRUE); /*this will have the effect that the SDP received in the ACK will be ignored*/ + sal_call_set_sdp_handling(call->op, SalOpSDPSimulateError); /*this will have the effect that the SDP received in the ACK will be ignored*/ linphone_core_accept_call(pauline->lc, call); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallError,1)); CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); @@ -1350,18 +1358,33 @@ static bool_t add_video(LinphoneCoreManager* caller,LinphoneCoreManager* callee) CU_ASSERT_TRUE(linphone_call_params_video_enabled(linphone_call_get_current_params(linphone_core_get_current_call(caller->lc)))); if (linphone_core_get_media_encryption(caller->lc) != LinphoneMediaEncryptionNone && linphone_core_get_media_encryption(callee->lc) != LinphoneMediaEncryptionNone) { - /*wait for encryption to be on, in case of zrtp, it can take a few seconds*/ - if (linphone_core_get_media_encryption(caller->lc) == LinphoneMediaEncryptionZRTP) - wait_for(callee->lc,caller->lc,&caller->stat.number_of_LinphoneCallEncryptedOn,initial_caller_stat.number_of_LinphoneCallEncryptedOn+1); - if (linphone_core_get_media_encryption(callee->lc) == LinphoneMediaEncryptionZRTP) - wait_for(callee->lc,caller->lc,&callee->stat.number_of_LinphoneCallEncryptedOn,initial_callee_stat.number_of_LinphoneCallEncryptedOn+1); + const LinphoneCallParams* call_param; - { - const LinphoneCallParams* call_param = linphone_call_get_current_params(linphone_core_get_current_call(callee->lc)); + switch (linphone_core_get_media_encryption(caller->lc)) { + case LinphoneMediaEncryptionZRTP: + case LinphoneMediaEncryptionDTLS: + /*wait for encryption to be on, in case of zrtp/dtls, it can take a few seconds*/ + wait_for(callee->lc,caller->lc,&caller->stat.number_of_LinphoneCallEncryptedOn,initial_caller_stat.number_of_LinphoneCallEncryptedOn+1); + break; + case LinphoneMediaEncryptionNone: + case LinphoneMediaEncryptionSRTP: + break; + } + switch (linphone_core_get_media_encryption(callee->lc)) { + case LinphoneMediaEncryptionZRTP: + case LinphoneMediaEncryptionDTLS: + wait_for(callee->lc,caller->lc,&callee->stat.number_of_LinphoneCallEncryptedOn,initial_callee_stat.number_of_LinphoneCallEncryptedOn+1); + break; + case LinphoneMediaEncryptionNone: + case LinphoneMediaEncryptionSRTP: + break; + } + + call_param = linphone_call_get_current_params(linphone_core_get_current_call(callee->lc)); CU_ASSERT_EQUAL(linphone_call_params_get_media_encryption(call_param),linphone_core_get_media_encryption(caller->lc)); call_param = linphone_call_get_current_params(linphone_core_get_current_call(caller->lc)); CU_ASSERT_EQUAL(linphone_call_params_get_media_encryption(call_param),linphone_core_get_media_encryption(caller->lc)); - } + } linphone_call_set_next_video_frame_decoded_callback(call_obj,linphone_call_cb,callee->lc); @@ -1548,7 +1571,7 @@ static void call_with_declined_video_using_policy(void) { call_with_declined_video_base(TRUE); } -static void video_call_base(LinphoneCoreManager* pauline,LinphoneCoreManager* marie, bool_t using_policy) { +static void video_call_base(LinphoneCoreManager* pauline,LinphoneCoreManager* marie, bool_t using_policy,LinphoneMediaEncryption mode) { LinphoneCallTestParams caller_test_params = {0}, callee_test_params = {0}; LinphoneCall* marie_call; LinphoneCall* pauline_call; @@ -1569,6 +1592,14 @@ static void video_call_base(LinphoneCoreManager* pauline,LinphoneCoreManager* ma linphone_core_set_video_policy(pauline->lc,&pauline_policy); } + if (mode==LinphoneMediaEncryptionDTLS) { /* for DTLS we must access certificates or at least have a directory to store them */ + marie->lc->user_certificates_path = ms_strdup_printf("%s/certificates/marie", liblinphone_tester_file_prefix); + pauline->lc->user_certificates_path = ms_strdup_printf("%s/certificates/pauline", liblinphone_tester_file_prefix); + } + + linphone_core_set_media_encryption(marie->lc,mode); + linphone_core_set_media_encryption(pauline->lc,mode); + caller_test_params.base=linphone_core_create_default_call_parameters(pauline->lc); if (!using_policy) linphone_call_params_enable_video(caller_test_params.base,TRUE); @@ -1605,15 +1636,38 @@ static void video_call_base(LinphoneCoreManager* pauline,LinphoneCoreManager* ma static void video_call(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); - video_call_base(marie,pauline,FALSE); + video_call_base(marie,pauline,FALSE,LinphoneMediaEncryptionNone); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } +static void video_call_zrtp(void) { + LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); + LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); + if (linphone_core_media_encryption_supported(marie->lc,LinphoneMediaEncryptionDTLS)) { + video_call_base(marie,pauline,FALSE,LinphoneMediaEncryptionZRTP); + } else + ms_message("Skipping video_call_zrtp"); + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); +} + +static void video_call_dtls(void) { + LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); + LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); + if (linphone_core_media_encryption_supported(pauline->lc,LinphoneMediaEncryptionDTLS)) { + video_call_base(marie,pauline,FALSE,LinphoneMediaEncryptionDTLS); + } else + ms_message("Skipping video_call_dtls"); + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); + +} + static void video_call_using_policy(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); - video_call_base(marie,pauline,TRUE); + video_call_base(marie,pauline,TRUE,LinphoneMediaEncryptionNone); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } @@ -1622,7 +1676,7 @@ static void video_call_no_sdp(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); linphone_core_enable_sdp_200_ack(pauline->lc,TRUE); - video_call_base(pauline,marie,FALSE); + video_call_base(pauline,marie,FALSE,LinphoneMediaEncryptionNone); linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } @@ -1942,9 +1996,9 @@ static void call_waiting_indication_with_param(bool_t enable_caller_privacy) { wait_for_list(lcs,NULL,0,1000); linphone_core_terminate_all_calls(pauline->lc); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallEnd,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,10000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,10000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallEnd,1,10000)); linphone_core_manager_destroy(marie); @@ -2015,9 +2069,9 @@ static void simple_conference_base(LinphoneCoreManager* marie, LinphoneCoreManag linphone_core_terminate_conference(marie->lc); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallEnd,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,10000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,10000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallEnd,1,10000)); @@ -2066,6 +2120,21 @@ static void dtls_srtp_call() { call_base(LinphoneMediaEncryptionDTLS,FALSE,FALSE,LinphonePolicyNoFirewall,FALSE); } +static void dtls_srtp_ice_call() { + call_base(LinphoneMediaEncryptionDTLS,FALSE,FALSE,LinphonePolicyUseIce,FALSE); +} +#ifdef VIDEO_ENABLED +static void dtls_srtp_video_call() { + call_base(LinphoneMediaEncryptionDTLS,TRUE,FALSE,LinphonePolicyNoFirewall,FALSE); +} + +static void dtls_srtp_ice_video_call() { + call_base(LinphoneMediaEncryptionDTLS,TRUE,FALSE,LinphonePolicyUseIce,FALSE); +} +static void dtls_srtp_ice_video_call_with_relay() { + call_base(LinphoneMediaEncryptionDTLS,TRUE,TRUE,LinphonePolicyUseIce,FALSE); +} +#endif static void call_with_declined_srtp(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); @@ -2121,7 +2190,7 @@ static void call_with_file_player(void) { } /* This assert should be modified to be at least as long as the hello8000.wav file */ - CU_ASSERT_TRUE(wait_for_until(pauline->lc,marie->lc,&marie->stat.number_of_player_eof,1,30000)); + CU_ASSERT_TRUE(wait_for_until(pauline->lc,marie->lc,&marie->stat.number_of_player_eof,1,23000)); /*just to sleep*/ linphone_core_terminate_all_calls(marie->lc); @@ -2174,7 +2243,7 @@ static void call_with_mkv_file_player(void) { /*make sure the record file doesn't already exists, otherwise this test will append new samples to it*/ unlink(recordpath); - snprintf(hellowav,sizeof(hellowav), "%s/sounds/hello8000.wav", liblinphone_tester_file_prefix); + snprintf(hellowav,sizeof(hellowav), "%s/sounds/hello8000_mkv_ref.wav", liblinphone_tester_file_prefix); snprintf(hellomkv,sizeof(hellomkv), "%s/sounds/hello8000.mkv", liblinphone_tester_file_prefix); /*caller uses files instead of soundcard in order to avoid mixing soundcard input with file played using call's player*/ @@ -2285,18 +2354,18 @@ void call_base(LinphoneMediaEncryption mode, bool_t enable_video,bool_t enable_r } - if (policy == LinphonePolicyUseIce) + if (policy == LinphonePolicyUseIce){ + int i=0; CU_ASSERT_TRUE(check_ice(pauline,marie,enable_tunnel?LinphoneIceStateReflexiveConnection:LinphoneIceStateHostConnection)); + for (i=0;i<100;i++) { /*fixme to workaround a crash*/ + ms_usleep(20000); + linphone_core_iterate(marie->lc); + linphone_core_iterate(pauline->lc); + } + } #ifdef VIDEO_ENABLED if (enable_video) { - int i=0; if (linphone_core_video_supported(marie->lc)) { - for (i=0;i<100;i++) { /*fixme to workaround a crash*/ - ms_usleep(20000); - linphone_core_iterate(marie->lc); - linphone_core_iterate(pauline->lc); - } - add_video(pauline,marie); if (policy == LinphonePolicyUseIce) CU_ASSERT_TRUE(check_ice(pauline,marie,enable_tunnel?LinphoneIceStateReflexiveConnection:LinphoneIceStateHostConnection)); @@ -2307,7 +2376,6 @@ void call_base(LinphoneMediaEncryption mode, bool_t enable_video,bool_t enable_r } else { ms_warning ("not tested because video not available"); } - } #endif @@ -2342,6 +2410,10 @@ static void zrtp_ice_call_with_relay(void) { call_base(LinphoneMediaEncryptionZRTP,FALSE,TRUE,LinphonePolicyUseIce,FALSE); } +static void dtls_ice_call_with_relay(void) { + call_base(LinphoneMediaEncryptionDTLS,FALSE,TRUE,LinphonePolicyUseIce,FALSE); +} + static void early_media_call(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_early_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); @@ -2612,32 +2684,35 @@ static void unattended_call_transfer_with_error(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); LinphoneCall* pauline_called_by_marie; - + bool_t call_ok=TRUE; MSList* lcs=ms_list_append(NULL,marie->lc); + lcs=ms_list_append(lcs,pauline->lc); - CU_ASSERT_TRUE(call(marie,pauline)); - pauline_called_by_marie=linphone_core_get_current_call(marie->lc); + CU_ASSERT_TRUE((call_ok=call(marie,pauline))); + if (call_ok){ + pauline_called_by_marie=linphone_core_get_current_call(marie->lc); - reset_counters(&marie->stat); - reset_counters(&pauline->stat); + reset_counters(&marie->stat); + reset_counters(&pauline->stat); - linphone_core_transfer_call(marie->lc,pauline_called_by_marie,"unknown_user"); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallRefered,1,2000)); + linphone_core_transfer_call(marie->lc,pauline_called_by_marie,"unknown_user"); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallRefered,1,2000)); - /*Pauline starts the transfer*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallOutgoingInit,1,2000)); - /* and immediately get an error*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallError,1,2000)); + /*Pauline starts the transfer*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallOutgoingInit,1,2000)); + /* and immediately get an error*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallError,1,2000)); - /*the error must be reported back to marie*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneTransferCallError,1,2000)); + /*the error must be reported back to marie*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneTransferCallError,1,2000)); - /*and pauline should resume the call automatically*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallResuming,1,2000)); + /*and pauline should resume the call automatically*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallResuming,1,2000)); - /*and call should be resumed*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallStreamsRunning,1,2000)); + /*and call should be resumed*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallStreamsRunning,1,2000)); + } linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); @@ -2649,70 +2724,71 @@ static void call_transfer_existing_call_outgoing_call(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); LinphoneCoreManager* laure = linphone_core_manager_new( "laure_rc"); - LinphoneCall* marie_call_pauline; LinphoneCall* pauline_called_by_marie; LinphoneCall* marie_call_laure; LinphoneCall* laure_called_by_marie; LinphoneCall* lcall; - - MSList* lcs=ms_list_append(NULL,marie->lc); + bool_t call_ok=TRUE; const MSList* calls; - + MSList* lcs=ms_list_append(NULL,marie->lc); + lcs=ms_list_append(lcs,pauline->lc); lcs=ms_list_append(lcs,laure->lc); /*marie call pauline*/ - CU_ASSERT_TRUE(call(marie,pauline)); - marie_call_pauline=linphone_core_get_current_call(marie->lc); - pauline_called_by_marie=linphone_core_get_current_call(pauline->lc); - /*marie pause pauline*/ - CU_ASSERT_TRUE(pause_call_1(marie,marie_call_pauline,pauline,pauline_called_by_marie)); + CU_ASSERT_TRUE((call_ok=call(marie,pauline))); + if (call_ok){ + marie_call_pauline=linphone_core_get_current_call(marie->lc); + pauline_called_by_marie=linphone_core_get_current_call(pauline->lc); + /*marie pause pauline*/ + CU_ASSERT_TRUE(pause_call_1(marie,marie_call_pauline,pauline,pauline_called_by_marie)); - /*marie call laure*/ - CU_ASSERT_TRUE(call(marie,laure)); - marie_call_laure=linphone_core_get_current_call(marie->lc); - laure_called_by_marie=linphone_core_get_current_call(laure->lc); - /*marie pause laure*/ - CU_ASSERT_TRUE(pause_call_1(marie,marie_call_laure,laure,laure_called_by_marie)); + /*marie call laure*/ + CU_ASSERT_TRUE(call(marie,laure)); + marie_call_laure=linphone_core_get_current_call(marie->lc); + laure_called_by_marie=linphone_core_get_current_call(laure->lc); + /*marie pause laure*/ + CU_ASSERT_TRUE(pause_call_1(marie,marie_call_laure,laure,laure_called_by_marie)); - reset_counters(&marie->stat); - reset_counters(&pauline->stat); - reset_counters(&laure->stat); + reset_counters(&marie->stat); + reset_counters(&pauline->stat); + reset_counters(&laure->stat); - linphone_core_transfer_call_to_another(marie->lc,marie_call_pauline,marie_call_laure); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallRefered,1,2000)); + linphone_core_transfer_call_to_another(marie->lc,marie_call_pauline,marie_call_laure); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallRefered,1,2000)); - /*pauline pausing marie*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallPausing,1,4000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallPaused,1,4000)); - /*pauline calling laure*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallOutgoingProgress,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneTransferCallOutgoingInit,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallIncomingReceived,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallOutgoingRinging,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneTransferCallOutgoingProgress,1,2000)); + /*pauline pausing marie*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallPausing,1,4000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallPaused,1,4000)); + /*pauline calling laure*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallOutgoingProgress,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneTransferCallOutgoingInit,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallIncomingReceived,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallOutgoingRinging,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneTransferCallOutgoingProgress,1,2000)); - /*laure accept call*/ - for(calls=linphone_core_get_calls(laure->lc);calls!=NULL;calls=calls->next) { - lcall = (LinphoneCall*)calls->data; - if (linphone_call_get_state(lcall) == LinphoneCallIncomingReceived) { - CU_ASSERT_EQUAL(linphone_call_get_replaced_call(lcall),laure_called_by_marie); - linphone_core_accept_call(laure->lc,lcall); - break; + /*laure accept call*/ + for(calls=linphone_core_get_calls(laure->lc);calls!=NULL;calls=calls->next) { + lcall = (LinphoneCall*)calls->data; + if (linphone_call_get_state(lcall) == LinphoneCallIncomingReceived) { + CU_ASSERT_EQUAL(linphone_call_get_replaced_call(lcall),laure_called_by_marie); + linphone_core_accept_call(laure->lc,lcall); + break; + } } - } - CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallConnected,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallStreamsRunning,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallConnected,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallStreamsRunning,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneTransferCallConnected,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallConnected,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallStreamsRunning,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallConnected,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallStreamsRunning,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneTransferCallConnected,1,2000)); - /*terminate marie to pauline/laure call*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,2,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallEnd,1,2000)); + /*terminate marie to pauline/laure call*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,2,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallEnd,1,2000)); + } linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); @@ -2725,31 +2801,35 @@ static void check_call_state(LinphoneCoreManager* mgr,LinphoneCallState state) { if (linphone_core_get_current_call(mgr->lc)) CU_ASSERT_EQUAL(linphone_call_get_state(linphone_core_get_current_call(mgr->lc)),state); } + static void call_established_with_rejected_info(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); int dummy=0; + bool_t call_ok=FALSE; - CU_ASSERT_TRUE(call(pauline,marie)); + CU_ASSERT_TRUE((call_ok=call(pauline,marie))); + if (call_ok){ - sal_enable_unconditional_answer(marie->lc->sal,TRUE); - linphone_call_send_info_message(linphone_core_get_current_call(pauline->lc),linphone_core_create_info_message(pauline->lc)); + sal_enable_unconditional_answer(marie->lc->sal,TRUE); + linphone_call_send_info_message(linphone_core_get_current_call(pauline->lc),linphone_core_create_info_message(pauline->lc)); - wait_for_until(marie->lc,pauline->lc,&dummy,1,1000); /*just to sleep while iterating 1s*/ + wait_for_until(marie->lc,pauline->lc,&dummy,1,1000); /*just to sleep while iterating 1s*/ - sal_enable_unconditional_answer(marie->lc->sal,FALSE); + sal_enable_unconditional_answer(marie->lc->sal,FALSE); - linphone_call_send_info_message(linphone_core_get_current_call(pauline->lc),linphone_core_create_info_message(pauline->lc)); - CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_inforeceived,1)); - CU_ASSERT_EQUAL(marie->stat.number_of_inforeceived,1); + linphone_call_send_info_message(linphone_core_get_current_call(pauline->lc),linphone_core_create_info_message(pauline->lc)); + CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_inforeceived,1)); + CU_ASSERT_EQUAL(marie->stat.number_of_inforeceived,1); - check_call_state(pauline,LinphoneCallStreamsRunning); - check_call_state(marie,LinphoneCallStreamsRunning); + check_call_state(pauline,LinphoneCallStreamsRunning); + check_call_state(marie,LinphoneCallStreamsRunning); - /*just to sleep*/ - linphone_core_terminate_all_calls(pauline->lc); - CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1)); - CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); + /*just to sleep*/ + linphone_core_terminate_all_calls(pauline->lc); + CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1)); + CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); + } linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); @@ -2759,30 +2839,32 @@ static void call_established_with_rejected_info(void) { static void call_established_with_rejected_reinvite(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); + bool_t call_ok=FALSE; - CU_ASSERT_TRUE(call(pauline,marie)); - - linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMU",8000,1),FALSE); /*disable PCMU*/ - linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMA",8000,1),TRUE); /*enable PCMA*/ + CU_ASSERT_TRUE(call_ok=call(pauline,marie)); + if (call_ok){ + linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMU",8000,1),FALSE); /*disable PCMU*/ + linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMA",8000,1),TRUE); /*enable PCMA*/ - linphone_core_update_call( pauline->lc - ,linphone_core_get_current_call(pauline->lc) - ,linphone_call_get_current_params(linphone_core_get_current_call(pauline->lc))); + linphone_core_update_call( pauline->lc + ,linphone_core_get_current_call(pauline->lc) + ,linphone_call_get_current_params(linphone_core_get_current_call(pauline->lc))); - CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,2)); + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,2)); - CU_ASSERT_EQUAL(linphone_call_get_reason(linphone_core_get_current_call(pauline->lc)),LinphoneReasonNotAcceptable); + CU_ASSERT_EQUAL(linphone_call_get_reason(linphone_core_get_current_call(pauline->lc)),LinphoneReasonNotAcceptable); - CU_ASSERT_EQUAL(marie->stat.number_of_LinphoneCallStreamsRunning,1); - check_call_state(pauline,LinphoneCallStreamsRunning); - check_call_state(marie,LinphoneCallStreamsRunning); + CU_ASSERT_EQUAL(marie->stat.number_of_LinphoneCallStreamsRunning,1); + check_call_state(pauline,LinphoneCallStreamsRunning); + check_call_state(marie,LinphoneCallStreamsRunning); - /*just to sleep*/ - linphone_core_terminate_all_calls(pauline->lc); - CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1)); - CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); + /*just to sleep*/ + linphone_core_terminate_all_calls(pauline->lc); + CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1)); + CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); + } linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); @@ -2791,33 +2873,37 @@ static void call_established_with_rejected_reinvite(void) { static void call_established_with_rejected_incoming_reinvite(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); + bool_t call_ok=FALSE; - CU_ASSERT_TRUE(call(pauline,marie)); + CU_ASSERT_TRUE((call_ok=call(pauline,marie))); + + if (call_ok){ - /*wait for ACK to be transmitted before going to reINVITE*/ - wait_for_until(marie->lc,pauline->lc,NULL,0,1000); + /*wait for ACK to be transmitted before going to reINVITE*/ + wait_for_until(marie->lc,pauline->lc,NULL,0,1000); - linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMU",8000,1),FALSE); /*disable PCMU*/ - linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMA",8000,1),TRUE); /*enable PCMA*/ + linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMU",8000,1),FALSE); /*disable PCMU*/ + linphone_core_enable_payload_type(pauline->lc,linphone_core_find_payload_type(pauline->lc,"PCMA",8000,1),TRUE); /*enable PCMA*/ - linphone_core_update_call(marie->lc - ,linphone_core_get_current_call(marie->lc) - ,linphone_call_get_current_params(linphone_core_get_current_call(marie->lc))); + linphone_core_update_call(marie->lc + ,linphone_core_get_current_call(marie->lc) + ,linphone_call_get_current_params(linphone_core_get_current_call(marie->lc))); - CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallUpdating,1)); - CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallStreamsRunning,2)); + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallUpdating,1)); + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallStreamsRunning,2)); - CU_ASSERT_EQUAL(linphone_call_get_reason(linphone_core_get_current_call(marie->lc)),LinphoneReasonNotAcceptable); + CU_ASSERT_EQUAL(linphone_call_get_reason(linphone_core_get_current_call(marie->lc)),LinphoneReasonNotAcceptable); - CU_ASSERT_EQUAL(pauline->stat.number_of_LinphoneCallStreamsRunning,1); - check_call_state(pauline,LinphoneCallStreamsRunning); - check_call_state(marie,LinphoneCallStreamsRunning); + CU_ASSERT_EQUAL(pauline->stat.number_of_LinphoneCallStreamsRunning,1); + check_call_state(pauline,LinphoneCallStreamsRunning); + check_call_state(marie,LinphoneCallStreamsRunning); - /*just to sleep*/ - linphone_core_terminate_all_calls(pauline->lc); - CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1)); - CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); + /*just to sleep*/ + linphone_core_terminate_all_calls(pauline->lc); + CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&pauline->stat.number_of_LinphoneCallEnd,1)); + CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneCallEnd,1)); + } linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); @@ -2840,32 +2926,34 @@ static void call_redirect(void){ marie_call = linphone_core_invite_address(marie->lc, pauline->identity); - CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallIncomingReceived,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallIncomingReceived,1,6000)); - margaux_url = linphone_address_as_string(laure->identity); - linphone_core_redirect_call(pauline->lc, linphone_core_get_current_call(pauline->lc), margaux_url); - ms_free(margaux_url); + if (linphone_core_get_current_call(pauline->lc)){ + margaux_url = linphone_address_as_string(laure->identity); + linphone_core_redirect_call(pauline->lc, linphone_core_get_current_call(pauline->lc), margaux_url); + ms_free(margaux_url); - /* laure should be ringing now */ - CU_ASSERT_TRUE(wait_for_list(lcs, &laure->stat.number_of_LinphoneCallIncomingReceived,1,6000)); - /* pauline should have ended the call */ - CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallEnd,1,1000)); - /* the call should still be ringing on marie's side */ - CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallOutgoingRinging, 1,1000)); + /* laure should be ringing now */ + CU_ASSERT_TRUE(wait_for_list(lcs, &laure->stat.number_of_LinphoneCallIncomingReceived,1,6000)); + /* pauline should have ended the call */ + CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallEnd,1,1000)); + /* the call should still be ringing on marie's side */ + CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallOutgoingRinging, 1,1000)); - linphone_core_accept_call(laure->lc, linphone_core_get_current_call(laure->lc)); + linphone_core_accept_call(laure->lc, linphone_core_get_current_call(laure->lc)); - CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallStreamsRunning, 1,1000)); - CU_ASSERT_TRUE(wait_for_list(lcs, &laure->stat.number_of_LinphoneCallStreamsRunning, 1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallStreamsRunning, 1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs, &laure->stat.number_of_LinphoneCallStreamsRunning, 1,1000)); - CU_ASSERT_EQUAL(marie_call, linphone_core_get_current_call(marie->lc)); + CU_ASSERT_EQUAL(marie_call, linphone_core_get_current_call(marie->lc)); - liblinphone_tester_check_rtcp(marie, laure); + liblinphone_tester_check_rtcp(marie, laure); - linphone_core_terminate_all_calls(laure->lc); + linphone_core_terminate_all_calls(laure->lc); - CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallEnd,1,1000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&laure->stat.number_of_LinphoneCallEnd,1,5000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,5000)); + } ms_list_free(lcs); @@ -3004,32 +3092,39 @@ static void multiple_early_media(void) { marie1_call=linphone_core_get_current_call(marie1->lc); marie2_call=linphone_core_get_current_call(marie2->lc); - /*wait a bit that streams are established*/ - wait_for_list(lcs,&dummy,1,3000); - CU_ASSERT_TRUE(linphone_call_get_audio_stats(pauline_call)->download_bandwidth>70); - CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie1_call)->download_bandwidth>70); - CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie2_call)->download_bandwidth>70); + CU_ASSERT_PTR_NOT_NULL(pauline_call); + CU_ASSERT_PTR_NOT_NULL(marie1_call); + CU_ASSERT_PTR_NOT_NULL(marie2_call); + + if (pauline_call && marie1_call && marie2_call){ + + /*wait a bit that streams are established*/ + wait_for_list(lcs,&dummy,1,6000); + CU_ASSERT_TRUE(linphone_call_get_audio_stats(pauline_call)->download_bandwidth>70); + CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie1_call)->download_bandwidth>70); + CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie2_call)->download_bandwidth>70); - linphone_core_accept_call(marie1->lc,linphone_core_get_current_call(marie1->lc)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie1->stat.number_of_LinphoneCallStreamsRunning,1,3000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallStreamsRunning,1,3000)); + linphone_core_accept_call(marie1->lc,linphone_core_get_current_call(marie1->lc)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie1->stat.number_of_LinphoneCallStreamsRunning,1,3000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallStreamsRunning,1,3000)); - /*marie2 should get her call terminated*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&marie2->stat.number_of_LinphoneCallEnd,1,1000)); + /*marie2 should get her call terminated*/ + CU_ASSERT_TRUE(wait_for_list(lcs,&marie2->stat.number_of_LinphoneCallEnd,1,1000)); - /*wait a bit that streams are established*/ - wait_for_list(lcs,&dummy,1,1000); - CU_ASSERT_TRUE(linphone_call_get_audio_stats(pauline_call)->download_bandwidth>71); - CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie1_call)->download_bandwidth>71); + /*wait a bit that streams are established*/ + wait_for_list(lcs,&dummy,1,3000); + CU_ASSERT_TRUE(linphone_call_get_audio_stats(pauline_call)->download_bandwidth>71); + CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie1_call)->download_bandwidth>71); - /*send an INFO in reverse side to check that dialogs are properly established*/ - info=linphone_core_create_info_message(marie1->lc); - linphone_call_send_info_message(marie1_call,info); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_inforeceived,1,2000)); + /*send an INFO in reverse side to check that dialogs are properly established*/ + info=linphone_core_create_info_message(marie1->lc); + linphone_call_send_info_message(marie1_call,info); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_inforeceived,1,3000)); + } linphone_core_terminate_all_calls(pauline->lc); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,2000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie1->stat.number_of_LinphoneCallEnd,1,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,3000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie1->stat.number_of_LinphoneCallEnd,1,3000)); ms_list_free(lcs); linphone_core_manager_destroy(marie1); @@ -3205,7 +3300,7 @@ static void call_with_in_dialog_codec_change_base(bool_t no_sdp) { CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallUpdatedByRemote,1)); CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,2)); CU_ASSERT_STRING_EQUAL("PCMA",linphone_payload_type_get_mime_type(linphone_call_params_get_used_audio_codec(linphone_call_get_current_params(linphone_core_get_current_call(marie->lc))))); - wait_for_until(marie->lc, pauline->lc, &dummy, 1, 3000); + wait_for_until(marie->lc, pauline->lc, &dummy, 1, 5000); CU_ASSERT_TRUE(linphone_call_get_audio_stats(linphone_core_get_current_call(marie->lc))->download_bandwidth>70); CU_ASSERT_TRUE(linphone_call_get_audio_stats(linphone_core_get_current_call(pauline->lc))->download_bandwidth>70); @@ -3299,12 +3394,12 @@ static void call_log_from_taken_from_p_asserted_id(void) { linphone_core_manager_destroy(pauline); } -static void incoming_invite_without_sdp() { +static void incoming_invite_with_invalid_sdp() { LinphoneCoreManager* caller = linphone_core_manager_new( "pauline_rc"); LinphoneCoreManager* callee = linphone_core_manager_new( "marie_rc"); LinphoneCallTestParams caller_test_params = {0}, callee_test_params = {0}; - callee_test_params.sdp_removal = TRUE; + callee_test_params.sdp_simulate_error = TRUE; CU_ASSERT_FALSE(call_with_params2(caller,callee,&caller_test_params, &callee_test_params, FALSE)); CU_ASSERT_PTR_NULL(linphone_core_get_current_call(callee->lc)); @@ -3316,12 +3411,12 @@ static void incoming_invite_without_sdp() { linphone_core_manager_destroy(caller); } -static void outgoing_invite_without_sdp() { +static void outgoing_invite_with_invalid_sdp() { LinphoneCoreManager* caller = linphone_core_manager_new( "pauline_rc"); LinphoneCoreManager* callee = linphone_core_manager_new( "marie_rc"); LinphoneCallTestParams caller_test_params = {0}, callee_test_params = {0}; - caller_test_params.sdp_removal = TRUE; + caller_test_params.sdp_simulate_error = TRUE; CU_ASSERT_FALSE(call_with_params2(caller,callee,&caller_test_params, &callee_test_params, FALSE)); CU_ASSERT_PTR_NULL(linphone_core_get_current_call(callee->lc)); @@ -3335,7 +3430,7 @@ static void outgoing_invite_without_sdp() { linphone_core_manager_destroy(caller); } -static void incoming_reinvite_without_ack_sdp() { +static void incoming_reinvite_with_invalid_ack_sdp(){ #ifdef VIDEO_ENABLED LinphoneCoreManager* caller = linphone_core_manager_new( "pauline_rc"); LinphoneCoreManager* callee = linphone_core_manager_new( "marie_rc"); @@ -3348,8 +3443,8 @@ static void incoming_reinvite_without_ack_sdp() { const LinphoneCallParams *caller_params; stats initial_caller_stat=caller->stat; stats initial_callee_stat=callee->stat; - sal_call_enable_sdp_removal(inc_call->op, TRUE); - CU_ASSERT_PTR_NOT_NULL(setup_video(caller, callee)); + sal_call_set_sdp_handling(inc_call->op, SalOpSDPSimulateError); /* will force a parse error for the ACK SDP*/ + CU_ASSERT_PTR_NOT_NULL(setup_video(caller, callee)); CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&callee->stat.number_of_LinphoneCallUpdating,initial_callee_stat.number_of_LinphoneCallUpdating+1)); CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&callee->stat.number_of_LinphoneCallStreamsRunning,initial_callee_stat.number_of_LinphoneCallStreamsRunning+1)); CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&caller->stat.number_of_LinphoneCallStreamsRunning,initial_caller_stat.number_of_LinphoneCallStreamsRunning)); @@ -3364,7 +3459,7 @@ static void incoming_reinvite_without_ack_sdp() { caller_params = linphone_call_get_current_params(linphone_core_get_current_call(caller->lc)); CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,(int*)&caller_params->has_video,FALSE)); - sal_call_enable_sdp_removal(inc_call->op, FALSE); + sal_call_set_sdp_handling(inc_call->op, SalOpSDPNormal); } linphone_core_terminate_all_calls(caller->lc); CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&caller->stat.number_of_LinphoneCallEnd,1)); @@ -3377,7 +3472,7 @@ static void incoming_reinvite_without_ack_sdp() { #endif } -static void outgoing_reinvite_without_ack_sdp() { +static void outgoing_reinvite_with_invalid_ack_sdp() { #ifdef VIDEO_ENABLED LinphoneCoreManager* caller = linphone_core_manager_new( "pauline_rc"); LinphoneCoreManager* callee = linphone_core_manager_new( "marie_rc"); @@ -3389,8 +3484,8 @@ static void outgoing_reinvite_without_ack_sdp() { if (out_call) { stats initial_caller_stat=caller->stat; stats initial_callee_stat=callee->stat; - sal_call_enable_sdp_removal(out_call->op, TRUE); - CU_ASSERT_PTR_NOT_NULL(setup_video(caller, callee)); + sal_call_set_sdp_handling(out_call->op, SalOpSDPSimulateError); /* will force a parse error for the ACK SDP*/ + CU_ASSERT_PTR_NOT_NULL(setup_video(caller, callee)); CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&callee->stat.number_of_LinphoneCallUpdating,initial_callee_stat.number_of_LinphoneCallUpdating+1)); CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&callee->stat.number_of_LinphoneCallStreamsRunning,initial_callee_stat.number_of_LinphoneCallStreamsRunning+1)); CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&caller->stat.number_of_LinphoneCallStreamsRunning,initial_caller_stat.number_of_LinphoneCallStreamsRunning)); @@ -3403,7 +3498,7 @@ static void outgoing_reinvite_without_ack_sdp() { CU_ASSERT_FALSE(linphone_call_params_video_enabled(linphone_call_get_current_params(linphone_core_get_current_call(callee->lc)))); CU_ASSERT_FALSE(linphone_call_params_video_enabled(linphone_call_get_current_params(linphone_core_get_current_call(caller->lc)))); - sal_call_enable_sdp_removal(out_call->op, FALSE); + sal_call_set_sdp_handling(out_call->op, SalOpSDPNormal); } linphone_core_terminate_all_calls(caller->lc); CU_ASSERT_TRUE(wait_for(caller->lc,callee->lc,&caller->stat.number_of_LinphoneCallEnd,1)); @@ -3474,6 +3569,77 @@ static void call_with_paused_no_sdp_on_resume() { } } + +static void call_with_early_media_and_no_sdp_in_200(){ +LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc"); + LinphoneCoreManager* pauline = linphone_core_manager_new("pauline_rc"); + MSList* lcs = NULL; + LinphoneCall* marie_call; + LinphoneCallParams* params = NULL; + LinphoneCallLog *marie_call_log; + uint64_t connected_time=0; + uint64_t ended_time=0; + int dummy=0; + + lcs = ms_list_append(lcs,marie->lc); + lcs = ms_list_append(lcs,pauline->lc); + /* + Marie calls Pauline, and after the call has rung, transitions to an early_media session + */ + params = linphone_core_create_default_call_parameters(marie->lc); + linphone_call_params_enable_video(params, TRUE); + + linphone_core_enable_video_capture(pauline->lc, TRUE); + linphone_core_enable_video_display(pauline->lc, TRUE); + linphone_core_enable_video_capture(marie->lc, TRUE); + linphone_core_enable_video_display(marie->lc, FALSE); + + marie_call = linphone_core_invite_address_with_params(marie->lc, pauline->identity, params); + marie_call_log = linphone_call_get_call_log(marie_call); + + CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallIncomingReceived,1,3000)); + CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallOutgoingRinging,1,1000)); + + if (linphone_core_inc_invite_pending(pauline->lc)) { + LinphoneCall* pauline_call = linphone_core_get_current_call(pauline->lc); + + /* send a 183 to initiate the early media */ + linphone_core_accept_early_media(pauline->lc, pauline_call); + + CU_ASSERT_TRUE( wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallIncomingEarlyMedia,1,2000) ); + CU_ASSERT_TRUE( wait_for_list(lcs, &marie->stat.number_of_LinphoneCallOutgoingEarlyMedia,1,2000) ); + + liblinphone_tester_check_rtcp(marie, pauline); + + /* will send the 200OK _without_ SDP. We expect the early-media SDP to be used instead */ + sal_call_set_sdp_handling(pauline_call->op, SalOpSDPSimulateRemove); + linphone_core_accept_call(pauline->lc, pauline_call); + + CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallConnected, 1,1000)); + connected_time=ms_get_cur_time_ms(); + CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallStreamsRunning, 1,3000)); + + ms_error("Streams running= %d", marie->stat.number_of_LinphoneCallStreamsRunning); + + CU_ASSERT_EQUAL(marie_call, linphone_core_get_current_call(marie->lc)); + + liblinphone_tester_check_rtcp(marie, pauline); + /*just to have a call duration !=0*/ + wait_for_list(lcs,&dummy,1,2000); + + linphone_core_terminate_all_calls(pauline->lc); + + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,1000)); + ended_time=ms_get_cur_time_ms(); + CU_ASSERT_TRUE( labs((linphone_call_log_get_duration(marie_call_log)*1000) - (int64_t)(ended_time - connected_time)) <=1000 ); + ms_list_free(lcs); + } + + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); +} + static void call_with_generic_cn(void) { int begin; int leaked_objects; @@ -3503,19 +3669,24 @@ static void call_with_generic_cn(void) { CU_ASSERT_PTR_NOT_NULL(pauline_call); if (pauline_call){ const rtp_stats_t *rtps; - struct stat stbuf; - int err; wait_for_until(marie->lc, pauline->lc, NULL, 0, 8000); rtps=rtp_session_get_stats(pauline_call->audiostream->ms.sessions.rtp_session); CU_ASSERT_TRUE(rtps->packet_recv<=300 && rtps->packet_recv>=200); + } + end_call(marie,pauline); + + if (pauline_call){ + struct stat stbuf; + int err; + err=stat(recorded_file,&stbuf); CU_ASSERT_EQUAL(err, 0); if (err==0){ CU_ASSERT_TRUE(stbuf.st_size>120000); } } - end_call(marie,pauline); + linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); @@ -3527,7 +3698,67 @@ static void call_with_generic_cn(void) { ms_free(audio_file_with_silence); ms_free(recorded_file); } +void static call_state_changed_2(LinphoneCore *lc, LinphoneCall *call, LinphoneCallState cstate, const char *msg){ + LCSipTransports sip_tr; + if (cstate==LinphoneCallReleased) { + /*to make sure transport is changed*/ + sip_tr.udp_port = 0; + sip_tr.tcp_port = 45876; + sip_tr.tls_port = 0; + linphone_core_set_sip_transports(lc,&sip_tr); + } +} + +static void call_with_transport_change_base(bool_t succesfull_call) { + int begin; + int leaked_objects; + LCSipTransports sip_tr; + LinphoneCoreManager* marie; + LinphoneCoreManager* pauline; + LinphoneCoreVTable * v_table; + belle_sip_object_enable_leak_detector(TRUE); + begin=belle_sip_object_get_object_count(); + v_table = linphone_core_v_table_new(); + v_table->call_state_changed=call_state_changed_2; + marie = linphone_core_manager_new("marie_rc"); + pauline = linphone_core_manager_new( "pauline_rc"); + linphone_core_add_listener(marie->lc,v_table); + + sip_tr.udp_port = 0; + sip_tr.tcp_port = 45875; + sip_tr.tls_port = 0; + linphone_core_set_sip_transports(marie->lc,&sip_tr); + if (succesfull_call) { + CU_ASSERT_TRUE(call(marie,pauline)); + linphone_core_terminate_all_calls(marie->lc); + } + else + linphone_core_invite(marie->lc,"nexiste_pas"); + + if (succesfull_call) + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallEnd,1)); + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallReleased,1)); + if (succesfull_call) { + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallEnd,1)); + CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallReleased,1)); + } + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); + + leaked_objects=belle_sip_object_get_object_count()-begin; + CU_ASSERT_TRUE(leaked_objects==0); + if (leaked_objects>0){ + belle_sip_object_dump_active_objects(); + } + +} +static void call_with_transport_change_after_released(void) { + call_with_transport_change_base(TRUE); +} +static void unsucessfull_call_with_transport_change_after_released(void) { + call_with_transport_change_base(FALSE); +} test_t call_tests[] = { { "Early declined call", early_declined_call }, @@ -3568,6 +3799,8 @@ test_t call_tests[] = { { "Audio call with ICE no matching audio codecs", audio_call_with_ice_no_matching_audio_codecs }, #ifdef VIDEO_ENABLED { "Simple video call",video_call}, + { "Simple ZRTP video call",video_call_zrtp}, + { "Simple DTLS video call",video_call_dtls}, { "Simple video call using policy",video_call_using_policy}, { "Video call without SDP",video_call_no_sdp}, { "SRTP ice video call", srtp_video_ice_call }, @@ -3584,10 +3817,15 @@ test_t call_tests[] = { { "Video call recording", video_call_recording_test }, { "Snapshot", video_call_snapshot }, { "Video call with early media and no matching audio codecs", video_call_with_early_media_no_matching_audio_codecs }, + { "DTLS SRTP video call",dtls_srtp_video_call}, + { "DTLS SRTP ice video call",dtls_srtp_ice_video_call}, + { "DTLS SRTP ice video call with relay",dtls_srtp_ice_video_call_with_relay}, #endif { "SRTP ice call", srtp_ice_call }, { "ZRTP ice call", zrtp_ice_call }, { "ZRTP ice call with relay", zrtp_ice_call_with_relay}, + { "DTLS SRTP ice call",dtls_srtp_ice_call}, + { "DTLS ice call with relay", dtls_ice_call_with_relay}, { "Call with privacy", call_with_privacy }, { "Call with privacy 2", call_with_privacy2 }, { "Call rejected because of wrong credential", call_rejected_because_wrong_credentials}, @@ -3617,13 +3855,16 @@ test_t call_tests[] = { { "Call with in-dialog codec change", call_with_in_dialog_codec_change }, { "Call with in-dialog codec change no sdp", call_with_in_dialog_codec_change_no_sdp }, { "Call with pause no SDP on resume", call_with_paused_no_sdp_on_resume }, + { "Call with early media and no SDP on 200 Ok", call_with_early_media_and_no_sdp_in_200 }, { "Call with custom supported tags", call_with_custom_supported_tags }, { "Call log from taken from asserted id",call_log_from_taken_from_p_asserted_id}, - { "Incoming INVITE without SDP",incoming_invite_without_sdp}, - { "Outgoing INVITE without ACK SDP",outgoing_invite_without_sdp}, - { "Incoming REINVITE without SDP",incoming_reinvite_without_ack_sdp}, - { "Outgoing REINVITE without ACK SDP",outgoing_reinvite_without_ack_sdp}, - { "Call with generic CN", call_with_generic_cn } + { "Incoming INVITE with invalid SDP",incoming_invite_with_invalid_sdp}, + { "Outgoing INVITE with invalid ACK SDP",outgoing_invite_with_invalid_sdp}, + { "Incoming REINVITE with invalid SDP in ACK",incoming_reinvite_with_invalid_ack_sdp}, + { "Outgoing REINVITE with invalid SDP in ACK",outgoing_reinvite_with_invalid_ack_sdp}, + { "Call with generic CN", call_with_generic_cn }, + { "Call with transport change after released", call_with_transport_change_after_released }, + { "Unsuccessful call with transport change after released",unsucessfull_call_with_transport_change_after_released} }; test_suite_t call_test_suite = { diff --git a/tester/dtmf_tester.c b/tester/dtmf_tester.c index 1c80c21c6..c4c2e3bfe 100644 --- a/tester/dtmf_tester.c +++ b/tester/dtmf_tester.c @@ -46,6 +46,10 @@ void send_dtmf_base(bool_t use_rfc2833, bool_t use_sipinfo, char dtmf, char* dtm CU_ASSERT_TRUE(call(pauline,marie)); marie_call = linphone_core_get_current_call(marie->lc); + + CU_ASSERT_PTR_NOT_NULL(marie_call); + + if (!marie_call) return; if (dtmf != '\0') { dtmf_count_prev = pauline->stat.dtmf_count; diff --git a/tester/eventapi_tester.c b/tester/eventapi_tester.c index abd8c0a30..fbe48f9a4 100644 --- a/tester/eventapi_tester.c +++ b/tester/eventapi_tester.c @@ -247,11 +247,11 @@ static void subscribe_test_with_args2(bool_t terminated_by_subscriber, RefreshTe CU_ASSERT_STRING_EQUAL(linphone_event_get_custom_header(pauline->lev,"My-Header"),"pouet"); CU_ASSERT_STRING_EQUAL(linphone_event_get_custom_header(pauline->lev,"My-Header2"),"pimpon"); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionActive,1,1000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneSubscriptionActive,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionActive,1,5000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneSubscriptionActive,1,5000)); /*make sure marie receives first notification before terminating*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_NotifyReceived,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_NotifyReceived,1,5000)); if (refresh_type==AutoRefresh){ wait_for_list(lcs,NULL,0,6000); @@ -259,7 +259,7 @@ static void subscribe_test_with_args2(bool_t terminated_by_subscriber, RefreshTe }else if (refresh_type==ManualRefresh){ CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionExpiring,1,4000)); linphone_event_update_subscribe(lev,NULL); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionActive,2,2000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionActive,2,5000)); } if (terminated_by_subscriber){ @@ -269,8 +269,8 @@ static void subscribe_test_with_args2(bool_t terminated_by_subscriber, RefreshTe linphone_event_terminate(pauline->lev); } - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionTerminated,1,1000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneSubscriptionTerminated,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneSubscriptionTerminated,1,5000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneSubscriptionTerminated,1,5000)); linphone_content_unref(content); linphone_core_manager_destroy(marie); diff --git a/tester/flexisip_tester.c b/tester/flexisip_tester.c index 06d8200cf..948df8fba 100644 --- a/tester/flexisip_tester.c +++ b/tester/flexisip_tester.c @@ -146,7 +146,7 @@ static void message_forking_with_all_recipients_unreachable(void) { linphone_chat_room_send_message2(chat_room,message,liblinphone_tester_chat_message_state_change,pauline->lc); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneMessageInProgress,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneMessageInProgress,1,5000)); /*flexisip will accept the message with 202 after 16 seconds*/ CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneMessageDelivered,1,18000)); CU_ASSERT_TRUE( marie->stat.number_of_LinphoneMessageReceived==0); @@ -195,9 +195,9 @@ static void call_forking(void){ /*pauline should hear ringback*/ CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallOutgoingRinging,1,3000)); /*all devices from Marie should be ringing*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallIncomingReceived,1,1000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie2->stat.number_of_LinphoneCallIncomingReceived,1,1000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie3->stat.number_of_LinphoneCallIncomingReceived,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallIncomingReceived,1,3000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie2->stat.number_of_LinphoneCallIncomingReceived,1,3000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie3->stat.number_of_LinphoneCallIncomingReceived,1,3000)); /*marie accepts the call on its first device*/ linphone_core_accept_call(marie->lc,linphone_core_get_current_call(marie->lc)); @@ -396,7 +396,7 @@ static void call_forking_with_push_notification_single(void){ /*marie accepts the call*/ linphone_core_accept_call(marie->lc,linphone_core_get_current_call(marie->lc)); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallConnected,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallConnected,1,5000)); CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallStreamsRunning,1,1000)); CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallConnected,1,1000)); CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallStreamsRunning,1,1000)); @@ -404,8 +404,8 @@ static void call_forking_with_push_notification_single(void){ liblinphone_tester_check_rtcp(pauline,marie); linphone_core_terminate_call(pauline->lc,linphone_core_get_current_call(pauline->lc)); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,1000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,5000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallEnd,1,5000)); linphone_core_manager_destroy(pauline); linphone_core_manager_destroy(marie); @@ -464,7 +464,7 @@ static void call_forking_with_push_notification_multiple(void){ linphone_core_manager_destroy(marie2); } -void call_forking_not_responded(void){ +static void call_forking_not_responded(void){ LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_tcp_rc"); LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc"); LinphoneCoreManager* marie2 = linphone_core_manager_new( "marie_rc"); @@ -551,7 +551,7 @@ static void early_media_call_forking(void) { marie2_call=linphone_core_get_current_call(marie2->lc); /*wait a bit that streams are established*/ - wait_for_list(lcs,&dummy,1,3000); + wait_for_list(lcs,&dummy,1,6000); CU_ASSERT_TRUE(linphone_call_get_audio_stats(pauline_call)->download_bandwidth>60 && linphone_call_get_audio_stats(pauline_call)->download_bandwidth<99); CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie1_call)->download_bandwidth>60 @@ -574,8 +574,8 @@ static void early_media_call_forking(void) { && linphone_call_get_audio_stats(marie1_call)->download_bandwidth<99 ); linphone_core_terminate_all_calls(pauline->lc); - CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,1000)); - CU_ASSERT_TRUE(wait_for_list(lcs,&marie1->stat.number_of_LinphoneCallEnd,1,1000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&pauline->stat.number_of_LinphoneCallEnd,1,5000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie1->stat.number_of_LinphoneCallEnd,1,5000)); ms_list_free(lcs); linphone_core_manager_destroy(marie1); @@ -643,7 +643,7 @@ static void call_with_sips_not_achievable(void){ linphone_address_unref(dest); /*Call should be rejected by server with 480*/ - CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallError,1,3000)); + CU_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphoneCallError,1,6000)); ei=linphone_call_get_error_info(call); CU_ASSERT_PTR_NOT_NULL(ei); if (ei){ @@ -663,6 +663,9 @@ static void call_with_ipv6(void) { LinphoneCoreManager* pauline; LinphoneCall *pauline_call; + /*calling ortp_init() here is done to have WSAStartup() done, otherwise liblinphone_tester_ipv6_available() will not work.*/ + ortp_init(); + if (!liblinphone_tester_ipv6_available()){ ms_warning("Call with ipv6 not tested, no ipv6 connectivity"); return; @@ -708,6 +711,7 @@ static void call_with_ipv6(void) { if (leaked_objects>0){ belle_sip_object_dump_active_objects(); } + ortp_exit(); } test_t flexisip_tests[] = { diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index 22dbcd6f6..c25f61d6c 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -93,12 +93,12 @@ extern const char* liblinphone_tester_get_xml_output(void); /** * @brief Tells the tester whether or not to clean the accounts it has created between runs. * @details Setting this to 1 will not clear the list of created accounts between successive - * calls to liblinphone_run_tests(). Some testing APIs call this function for *each* test, + * calls to liblinphone_run_tests(). Some testing APIs call this function for *each* test, * in which case we should keep the accounts that were created for further testing. - * - * You are supposed to manually call liblinphone_tester_clear_account when all the tests are + * + * You are supposed to manually call liblinphone_tester_clear_account when all the tests are * finished. - * + * * @param keep 1 to keep the accounts in-between runs, 0 to clear them after each run. */ extern void liblinphone_tester_keep_accounts( int keep ); @@ -255,6 +255,7 @@ typedef struct _LinphoneCoreManager { typedef struct _LinphoneCallTestParams { LinphoneCallParams *base; bool_t sdp_removal; + bool_t sdp_simulate_error; } LinphoneCallTestParams; LinphoneCoreManager* linphone_core_manager_new2(const char* rc_file, int check_for_proxies); diff --git a/tester/log_collection_tester.c b/tester/log_collection_tester.c index 3fbbd43c2..96531422a 100644 --- a/tester/log_collection_tester.c +++ b/tester/log_collection_tester.c @@ -35,7 +35,7 @@ /*getline is POSIX 2008, not available on many systems.*/ #if defined(ANDROID) || defined(WIN32) /* This code is public domain -- Will Hartung 4/9/09 */ -size_t getline(char **lineptr, size_t *n, FILE *stream) { +static size_t getline(char **lineptr, size_t *n, FILE *stream) { char *bufptr = NULL; char *p = bufptr; size_t size; @@ -66,9 +66,12 @@ size_t getline(char **lineptr, size_t *n, FILE *stream) { } p = bufptr; while(c != EOF) { - if ((p - bufptr) > (size - 1)) { + size_t curpos = p-bufptr; + + if (curpos > (size - 1)) { size = size + 128; bufptr = realloc(bufptr, size); + p = bufptr + curpos; if (bufptr == NULL) { return -1; } @@ -89,19 +92,19 @@ size_t getline(char **lineptr, size_t *n, FILE *stream) { #endif static LinphoneLogCollectionState old_collection_state; -void collect_init() { +static void collect_init() { old_collection_state = linphone_core_log_collection_enabled(); linphone_core_set_log_collection_path(liblinphone_tester_writable_dir_prefix); } -void collect_cleanup(LinphoneCoreManager *marie) { +static void collect_cleanup(LinphoneCoreManager *marie) { linphone_core_manager_destroy(marie); linphone_core_enable_log_collection(old_collection_state); linphone_core_reset_log_collection(); } -LinphoneCoreManager* setup(bool_t enable_logs) { +static LinphoneCoreManager* setup(bool_t enable_logs) { LinphoneCoreManager *marie; int timeout = 300; @@ -119,27 +122,28 @@ LinphoneCoreManager* setup(bool_t enable_logs) { } #if HAVE_ZLIB + /*returns uncompressed log file*/ -FILE* gzuncompress(const char* filepath) { +static FILE* gzuncompress(const char* filepath) { gzFile file = gzopen(filepath, "rb"); FILE *output = NULL; + FILE *ret; char *newname = ms_strdup_printf("%s.txt", filepath); - char buffer[512]; - output = fopen(newname, "w+"); + char buffer[512]={0}; + output = fopen(newname, "wb"); while (gzread(file, buffer, 511) > 0) { fputs(buffer, output); memset(buffer, 0, strlen(buffer)); } - + fclose(output); CU_ASSERT_EQUAL(gzclose(file), Z_OK); + ret=fopen(newname, "rb"); ms_free(newname); - - fseek(output, 0, SEEK_SET); - return (FILE*)output; + return ret; } #endif -time_t check_file(LinphoneCoreManager* mgr) { +static time_t check_file(LinphoneCoreManager* mgr) { time_t last_log = ms_time(NULL); char* filepath = linphone_core_compress_log_collection(mgr->lc); @@ -162,9 +166,10 @@ time_t check_file(LinphoneCoreManager* mgr) { // 0) if zlib is enabled, we must decompress the file first file = gzuncompress(filepath); #else - file = fopen(filepath, "r"); + file = fopen(filepath, "rb"); #endif - + CU_ASSERT_PTR_NOT_NULL(file); + if (!file) return 0; // 1) expect to find folder name in filename path CU_ASSERT_PTR_NOT_NULL(strstr(filepath, liblinphone_tester_writable_dir_prefix)); @@ -183,8 +188,6 @@ time_t check_file(LinphoneCoreManager* mgr) { time_prev = time_curr; } } -#else - ms_warning("strptime() not available for this platform, test is incomplete."); #endif } CU_ASSERT_TRUE(line_count > 25); @@ -192,12 +195,17 @@ time_t check_file(LinphoneCoreManager* mgr) { fclose(file); ms_free(filepath); - timediff = labs((long int)time_curr - (long int)last_log); + timediff = labs((long int)time_curr - (long int)last_log); + (void)timediff; +#ifndef WIN32 CU_ASSERT_TRUE( timediff <= 1 ); if( !(timediff <= 1) ){ ms_error("time_curr: %ld, last_log: %ld timediff: %u", (long int)time_curr, (long int)last_log, timediff ); } +#else + ms_warning("strptime() not available for this platform, test is incomplete."); +#endif } // return latest time in file return time_curr; diff --git a/tester/message_tester.c b/tester/message_tester.c index dd6cf4700..e2491048f 100644 --- a/tester/message_tester.c +++ b/tester/message_tester.c @@ -827,6 +827,41 @@ static void file_transfer_message_download_cancelled(void) { ms_error("Test skipped"); } +static void file_transfer_using_external_body_url(void) { + char *to; + LinphoneChatMessageCbs *cbs; + LinphoneChatRoom *chat_room; + LinphoneChatMessage *message; + LinphoneCoreManager *marie = linphone_core_manager_new("marie_rc"); + LinphoneCoreManager *pauline = linphone_core_manager_new("pauline_rc"); + reset_counters(&marie->stat); + reset_counters(&pauline->stat); + + /* create a chatroom on pauline's side */ + to = linphone_address_as_string(marie->identity); + chat_room = linphone_core_create_chat_room(pauline->lc,to); + + message = linphone_chat_room_create_message(chat_room, NULL); + + cbs = linphone_chat_message_get_callbacks(message); + linphone_chat_message_cbs_set_msg_state_changed(cbs, liblinphone_tester_chat_message_msg_state_changed); + + linphone_chat_message_set_external_body_url(message, "https://www.linphone.org:444//tmp/54ec58280ace9_c30709218df8eaba61d1.jpg"); + linphone_chat_room_send_chat_message(chat_room, message); + + CU_ASSERT_TRUE(wait_for(pauline->lc, marie->lc, &marie->stat.number_of_LinphoneMessageReceived, 1)); + if (marie->stat.last_received_chat_message) { + linphone_chat_message_download_file(marie->stat.last_received_chat_message); + } + CU_ASSERT_TRUE(wait_for(pauline->lc, marie->lc, &marie->stat.number_of_LinphoneMessageExtBodyReceived, 1)); + + CU_ASSERT_EQUAL(pauline->stat.number_of_LinphoneMessageInProgress, 1); + CU_ASSERT_EQUAL(marie->stat.number_of_LinphoneMessageExtBodyReceived, 1); + + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); +} + static void text_message_with_send_error(void) { LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc"); @@ -1203,6 +1238,7 @@ test_t message_tests[] = { /* { "File transfer message with io error at download", file_transfer_message_io_error_download },*/ { "File transfer message upload cancelled", file_transfer_message_upload_cancelled }, { "File transfer message download cancelled", file_transfer_message_download_cancelled }, + { "File transfer message using external body url", file_transfer_using_external_body_url }, { "Text message denied", text_message_denied }, { "Info message", info_message }, { "Info message with body", info_message_with_body }, diff --git a/tester/rcfiles/laure_rc b/tester/rcfiles/laure_rc index 7f4d099f5..9156afc39 100644 --- a/tester/rcfiles/laure_rc +++ b/tester/rcfiles/laure_rc @@ -23,8 +23,8 @@ dial_escape_plus=0 [rtp] -audio_rtp_port=9010 -video_rtp_port=9012 +audio_rtp_port=9010-9390 +video_rtp_port=9410-9910 [video] display=0 @@ -41,4 +41,4 @@ device=StaticImage: Static picture echocancellation=0 #to not overload cpu in case of VG [net] -dns_srv_enabled=0 #no srv needed in general \ No newline at end of file +dns_srv_enabled=0 #no srv needed in general diff --git a/tester/rcfiles/marie_h264_rc b/tester/rcfiles/marie_h264_rc index f2ab26190..dc89fceb4 100644 --- a/tester/rcfiles/marie_h264_rc +++ b/tester/rcfiles/marie_h264_rc @@ -32,8 +32,8 @@ subscribe=0 [rtp] -audio_rtp_port=8070 -video_rtp_port=9072 +audio_rtp_port=18070-28000 +video_rtp_port=39072-49000 [video] display=1 diff --git a/tester/rcfiles/marie_rc b/tester/rcfiles/marie_rc index 367353d06..536725564 100644 --- a/tester/rcfiles/marie_rc +++ b/tester/rcfiles/marie_rc @@ -32,8 +32,8 @@ subscribe=0 [rtp] -audio_rtp_port=8070 -video_rtp_port=9072 +audio_rtp_port=18070-28000 +video_rtp_port=28070-38000 [video] display=0 diff --git a/tester/rcfiles/marie_rc_rtcp_xr b/tester/rcfiles/marie_rc_rtcp_xr index 93f8e5bd0..06f0b5b63 100644 --- a/tester/rcfiles/marie_rc_rtcp_xr +++ b/tester/rcfiles/marie_rc_rtcp_xr @@ -32,8 +32,8 @@ subscribe=0 [rtp] -audio_rtp_port=8070 -video_rtp_port=9072 +audio_rtp_port=20070-22070 +video_rtp_port=24000-25000 rtcp_xr_enabled=1 rtcp_xr_rcvr_rtt_mode=all rtcp_xr_rcvr_rtt_max_size=10000 diff --git a/tester/rcfiles/marie_sips_rc b/tester/rcfiles/marie_sips_rc index 0723c13a0..7a935d4cb 100644 --- a/tester/rcfiles/marie_sips_rc +++ b/tester/rcfiles/marie_sips_rc @@ -32,8 +32,8 @@ subscribe=0 [rtp] -audio_rtp_port=8070 -video_rtp_port=9072 +audio_rtp_port=18070-28000 +video_rtp_port=28070-38000 [video] display=0 diff --git a/tester/rcfiles/pauline_h264_rc b/tester/rcfiles/pauline_h264_rc index d11c7d071..8f30cf020 100644 --- a/tester/rcfiles/pauline_h264_rc +++ b/tester/rcfiles/pauline_h264_rc @@ -29,8 +29,8 @@ dial_escape_plus=0 #subscribe=0 [rtp] -audio_rtp_port=8090 -video_rtp_port=9092 +audio_rtp_port=18070-28000 +video_rtp_port=39072-49000 [video] display=0 diff --git a/tester/rcfiles/pauline_rc_rtcp_xr b/tester/rcfiles/pauline_rc_rtcp_xr index 331f942ef..94c0314ea 100644 --- a/tester/rcfiles/pauline_rc_rtcp_xr +++ b/tester/rcfiles/pauline_rc_rtcp_xr @@ -29,8 +29,8 @@ dial_escape_plus=0 #subscribe=0 [rtp] -audio_rtp_port=8090 -video_rtp_port=9092 +audio_rtp_port=18070-28000 +video_rtp_port=39072-49000 rtcp_xr_enabled=1 rtcp_xr_rcvr_rtt_mode=all rtcp_xr_rcvr_rtt_max_size=10000 diff --git a/tester/rcfiles/pauline_sips_rc b/tester/rcfiles/pauline_sips_rc index 5d9f3d5ed..f248cffc1 100644 --- a/tester/rcfiles/pauline_sips_rc +++ b/tester/rcfiles/pauline_sips_rc @@ -29,8 +29,8 @@ dial_escape_plus=0 #subscribe=0 [rtp] -audio_rtp_port=8090 -video_rtp_port=9092 +audio_rtp_port=18070-28000 +video_rtp_port=39072-49000 [video] display=0 diff --git a/tester/rcfiles/pauline_tcp_rc b/tester/rcfiles/pauline_tcp_rc index 809c1ace6..73fd469d7 100644 --- a/tester/rcfiles/pauline_tcp_rc +++ b/tester/rcfiles/pauline_tcp_rc @@ -29,8 +29,8 @@ dial_escape_plus=0 #subscribe=0 [rtp] -audio_rtp_port=8090 -video_rtp_port=9092 +audio_rtp_port=18070-28000 +video_rtp_port=39072-49000 [video] display=0 diff --git a/tester/setup_tester.c b/tester/setup_tester.c index bab077623..06d734d6a 100644 --- a/tester/setup_tester.c +++ b/tester/setup_tester.c @@ -96,9 +96,8 @@ static void linphone_interpret_url_test() } static void linphone_lpconfig_from_buffer(){ - - static const char* buffer = "[buffer]\ntest=ok"; - static const char* buffer_linebreaks = "[buffer_linebreaks]\n\n\n\r\n\n\r\ntest=ok"; + const char* buffer = "[buffer]\ntest=ok"; + const char* buffer_linebreaks = "[buffer_linebreaks]\n\n\n\r\n\n\r\ntest=ok"; LpConfig* conf; conf = lp_config_new_from_buffer(buffer); @@ -112,7 +111,7 @@ static void linphone_lpconfig_from_buffer(){ static void linphone_lpconfig_from_buffer_zerolen_value(){ /* parameters that have no value should return NULL, not "". */ - static const char* zerolen = "[test]\nzero_len=\nnon_zero_len=test"; + const char* zerolen = "[test]\nzero_len=\nnon_zero_len=test"; LpConfig* conf; conf = lp_config_new_from_buffer(zerolen); @@ -128,7 +127,7 @@ static void linphone_lpconfig_from_buffer_zerolen_value(){ static void linphone_lpconfig_from_file_zerolen_value(){ /* parameters that have no value should return NULL, not "". */ - static const char* zero_rc_file = "zero_length_params_rc"; + const char* zero_rc_file = "zero_length_params_rc"; char* rc_path = ms_strdup_printf("%s/rcfiles/%s", liblinphone_tester_file_prefix, zero_rc_file); LpConfig* conf; @@ -144,11 +143,12 @@ static void linphone_lpconfig_from_file_zerolen_value(){ lp_config_set_string(conf, "test", "non_zero_len", ""); /* should remove "non_zero_len" */ CU_ASSERT_STRING_EQUAL(lp_config_get_string(conf,"test","non_zero_len","LOL"), "LOL"); + ms_free(rc_path); lp_config_destroy(conf); } static void linphone_lpconfig_from_xml_zerolen_value(){ - static const char* zero_xml_file = "remote_zero_length_params_rc"; + const char* zero_xml_file = "remote_zero_length_params_rc"; char* xml_path = ms_strdup_printf("%s/rcfiles/%s", liblinphone_tester_file_prefix, zero_xml_file); LpConfig* conf; @@ -165,7 +165,7 @@ static void linphone_lpconfig_from_xml_zerolen_value(){ CU_ASSERT_STRING_EQUAL(lp_config_get_string(conf,"test","non_zero_len","LOL"), "LOL"); linphone_core_manager_destroy(mgr); - + ms_free(xml_path); } void linphone_proxy_config_address_equal_test() { diff --git a/tester/sounds/hello8000_mkv_ref.wav b/tester/sounds/hello8000_mkv_ref.wav new file mode 100644 index 000000000..f91203cd8 Binary files /dev/null and b/tester/sounds/hello8000_mkv_ref.wav differ diff --git a/tester/tester.c b/tester/tester.c index 741fc8938..9fdedb0ec 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -211,6 +211,15 @@ bool_t wait_for_list(MSList* lcs,int* counter,int value,int timeout_ms) { #endif linphone_core_iterate((LinphoneCore*)(iterator->data)); } +#ifdef WIN32 + { + MSG msg; + while (PeekMessage(&msg, NULL, 0, 0,1)){ + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } +#endif ms_usleep(20000); } if(counter && *counter= 2){ char hellopath[512]; + char *recordpath = ms_strdup_printf("%s/record_for_lc_%p.wav",liblinphone_tester_writable_dir_prefix,mgr->lc); ms_message("Manager for '%s' using files", rc_file ? rc_file : "--"); linphone_core_use_files(mgr->lc, TRUE); snprintf(hellopath,sizeof(hellopath), "%s/sounds/hello8000.wav", liblinphone_tester_file_prefix); linphone_core_set_play_file(mgr->lc,hellopath); + linphone_core_set_record_file(mgr->lc,recordpath); + ms_free(recordpath); } if (proxy_count){ @@ -325,10 +337,21 @@ void linphone_core_manager_stop(LinphoneCoreManager *mgr){ } void linphone_core_manager_destroy(LinphoneCoreManager* mgr) { - if (mgr->lc) linphone_core_destroy(mgr->lc); + if (mgr->lc){ + const char *record_file=linphone_core_get_record_file(mgr->lc); + if (record_file){ + if (CU_get_number_of_failures()>0) { + ms_message ("Test has failed, keeping recorded file [%s]",record_file); + } else { + unlink(record_file); + } + } + linphone_core_destroy(mgr->lc); + } if (mgr->identity) linphone_address_destroy(mgr->identity); if (mgr->stat.last_received_chat_message) linphone_chat_message_unref(mgr->stat.last_received_chat_message); manager_count--; + ms_free(mgr); } diff --git a/tester/transport_tester.c b/tester/transport_tester.c index a291ec0c0..e847e0fe8 100644 --- a/tester/transport_tester.c +++ b/tester/transport_tester.c @@ -167,6 +167,14 @@ static void tunnel_zrtp_video_ice_call(void) { else ms_warning("Could not test %s because tunnel functionality is not available",__FUNCTION__); } + +static void tunnel_dtls_video_ice_call(void) { + if (linphone_core_tunnel_available()) + call_base(LinphoneMediaEncryptionDTLS,TRUE,FALSE,LinphonePolicyUseIce,TRUE); + else + ms_warning("Could not test %s because tunnel functionality is not available",__FUNCTION__); +} + static void tunnel_video_ice_call(void) { if (linphone_core_tunnel_available()) call_base(LinphoneMediaEncryptionNone,TRUE,FALSE,LinphonePolicyUseIce,TRUE); @@ -207,6 +215,7 @@ test_t transport_tests[] = { #ifdef VIDEO_ENABLED { "Tunnel ice video call", tunnel_video_ice_call }, { "Tunnel SRTP ice video call", tunnel_srtp_video_ice_call }, + { "Tunnel DTLS ice video call", tunnel_dtls_video_ice_call }, { "Tunnel ZRTP ice video call", tunnel_zrtp_video_ice_call }, #endif }; diff --git a/tester/video_tester.c b/tester/video_tester.c index c1807f3fe..7e3809e31 100644 --- a/tester/video_tester.c +++ b/tester/video_tester.c @@ -193,7 +193,12 @@ static LinphoneCallParams * _configure_for_video(LinphoneCoreManager *manager, L linphone_core_enable_video_display(manager->lc, TRUE); params = linphone_core_create_default_call_parameters(manager->lc); linphone_call_params_enable_video(params, TRUE); - disable_all_video_codecs_except_one(manager->lc, "VP8"); + if (linphone_core_find_payload_type(manager->lc,"VP8", 90000, -1)!=NULL){ + disable_all_video_codecs_except_one(manager->lc, "VP8"); + }else{ + ms_warning("VP8 codec not available, will use MP4V-ES instead"); + disable_all_video_codecs_except_one(manager->lc, "MP4V-ES"); + } return params; }