diff --git a/Makefile.am b/Makefile.am index 84c1e019f..66d01711d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -39,7 +39,7 @@ ZIP_EXCLUDED=include lib \ SDK_ZIPFILE=$(shell cd $(top_builddir) && pwd)/lib$(PACKAGE)-win32-$(VERSION).zip SDK_EXCLUDED= \ - bin/linphone-3.exe \ + bin/linphone.exe \ lib/*.la \ share/linphone \ share/pixmaps \ diff --git a/NEWS b/NEWS index 36a5d5869..a684b44af 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,8 @@ +linphone-3.4.1 -- February 17th, 2011 + * bugfixes + * gtk executable is renamed "linphone" (was linphone-3 before) + Requires mediastreamer-2.7.1 + linphone-3.4.0 -- February 7th, 2011 * implement multiple calls feature: - call hold (with possibility to play a music file) diff --git a/console/commands.c b/console/commands.c index 21067c641..c110d3731 100644 --- a/console/commands.c +++ b/console/commands.c @@ -78,6 +78,7 @@ static int lpc_cmd_unregister(LinphoneCore *, char *); static int lpc_cmd_duration(LinphoneCore *lc, char *args); static int lpc_cmd_status(LinphoneCore *lc, char *args); static int lpc_cmd_ports(LinphoneCore *lc, char *args); +static int lpc_cmd_param(LinphoneCore *lc, char *args); static int lpc_cmd_speak(LinphoneCore *lc, char *args); static int lpc_cmd_acodec(LinphoneCore *lc, char *args); static int lpc_cmd_vcodec(LinphoneCore *lc, char *args); @@ -315,6 +316,10 @@ static LPC_COMMAND advanced_commands[] = { { "ports", lpc_cmd_ports, "Network ports configuration", "'ports' \t: prints current used ports.\n" "'ports sip '\t: Sets the sip port.\n" }, + { "param", lpc_cmd_param, "parameter set or read as normally given in .linphonerc", + "'param
[]' \t: reads [sets] given parameter.\n" + "NOTES: - changes may become effective after (re)establishing a sip connection.\n" + " - upon exit, .linphonerc will reflect the updated state.\n" }, { "speak", lpc_cmd_speak, "Speak a sentence using espeak TTS engine", "This feature is available only in file mode. (see 'help soundcard')\n" "'speak ' : speak a text using the specified espeak voice.\n" @@ -473,7 +478,8 @@ lpc_cmd_help(LinphoneCore *lc, char *arg) } linphonec_out("---------------------------\n"); - linphonec_out("Type 'help ' for more details or 'help advanced' to list additional commands.\n"); + linphonec_out("Type 'help ' for more details or\n"); + linphonec_out(" 'help advanced' to list additional commands.\n"); return 1; } @@ -2014,6 +2020,35 @@ static int lpc_cmd_ports(LinphoneCore *lc, char *args) return 1; } +static int lpc_cmd_param(LinphoneCore *lc, char *args) +{ + char section[20], param[20], value[50]; + const char *string; + + if (args == NULL) { + return 0; + } + switch (sscanf(args,"%s %s %s",section,param,value)) { + // case 1 might show all current settings under a section + case 2: + string = lp_config_get_string(linphone_core_get_config(lc), section, param, "(undef)"); + linphonec_out("current value: %s\n", string); + break; + case 3: + if (lp_config_get_string(linphone_core_get_config(lc), section, param, NULL) != NULL) { + lp_config_set_string(linphone_core_get_config(lc), section, param, value); + // no indication of existence + linphonec_out("updated value: %s\n", value); + } else { + linphonec_out("only update of existing variables are allowed\n"); + } + break; + default: + return 0; + } + return 1; +} + static int lpc_cmd_speak(LinphoneCore *lc, char *args){ #ifndef WIN32 char voice[64]; diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index f40cc447c..c3751ada4 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -235,10 +235,12 @@ static void call_ringing(SalOp *h){ if (lc->ringstream!=NULL) return; /*already ringing !*/ if (lc->sound_conf.play_sndcard!=NULL){ MSSndCard *ringcard=lc->sound_conf.lsd_card ? lc->sound_conf.lsd_card : lc->sound_conf.play_sndcard; - ms_message("Remote ringing..."); lc->ringstream=ring_start(lc->sound_conf.remote_ring,2000,ringcard); - linphone_call_set_state(call,LinphoneCallOutgoingRinging,"Remote ringing"); } + ms_message("Remote ringing..."); + if (lc->vtable.display_status) + lc->vtable.display_status(lc,_("Remote ringing...")); + linphone_call_set_state(call,LinphoneCallOutgoingRinging,"Remote ringing"); }else{ /*accept early media */ if (call->audiostream && call->audiostream->ticker!=NULL){ diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 8db39dd51..7b6a01640 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -2716,6 +2716,7 @@ static MSSndCard *get_card_from_string_id(const char *devid, unsigned int cap){ * Returns true if the specified sound device can capture sound. * * @ingroup media_parameters + * @param lc The LinphoneCore object * @param devid the device name as returned by linphone_core_get_sound_devices() **/ bool_t linphone_core_sound_device_can_capture(LinphoneCore *lc, const char *devid){ @@ -2729,6 +2730,7 @@ bool_t linphone_core_sound_device_can_capture(LinphoneCore *lc, const char *devi * Returns true if the specified sound device can play sound. * * @ingroup media_parameters + * @param lc The LinphoneCore object * @param devid the device name as returned by linphone_core_get_sound_devices() **/ bool_t linphone_core_sound_device_can_playback(LinphoneCore *lc, const char *devid){ @@ -2742,6 +2744,7 @@ bool_t linphone_core_sound_device_can_playback(LinphoneCore *lc, const char *dev * Sets the sound device used for ringing. * * @ingroup media_parameters + * @param lc The LinphoneCore object * @param devid the device name as returned by linphone_core_get_sound_devices() **/ int linphone_core_set_ringer_device(LinphoneCore *lc, const char * devid){ @@ -2756,6 +2759,7 @@ int linphone_core_set_ringer_device(LinphoneCore *lc, const char * devid){ * Sets the sound device used for playback. * * @ingroup media_parameters + * @param lc The LinphoneCore object * @param devid the device name as returned by linphone_core_get_sound_devices() **/ int linphone_core_set_playback_device(LinphoneCore *lc, const char * devid){ @@ -2770,6 +2774,7 @@ int linphone_core_set_playback_device(LinphoneCore *lc, const char * devid){ * Sets the sound device used for capture. * * @ingroup media_parameters + * @param lc The LinphoneCore object * @param devid the device name as returned by linphone_core_get_sound_devices() **/ int linphone_core_set_capture_device(LinphoneCore *lc, const char * devid){ @@ -2784,6 +2789,7 @@ int linphone_core_set_capture_device(LinphoneCore *lc, const char * devid){ * Returns the name of the currently assigned sound device for ringing. * * @ingroup media_parameters + * @param lc The LinphoneCore object **/ const char * linphone_core_get_ringer_device(LinphoneCore *lc) { @@ -2795,6 +2801,7 @@ const char * linphone_core_get_ringer_device(LinphoneCore *lc) * Returns the name of the currently assigned sound device for playback. * * @ingroup media_parameters + * @param lc The LinphoneCore object **/ const char * linphone_core_get_playback_device(LinphoneCore *lc) { @@ -2805,6 +2812,7 @@ const char * linphone_core_get_playback_device(LinphoneCore *lc) * Returns the name of the currently assigned sound device for capture. * * @ingroup media_parameters + * @param lc The LinphoneCore object **/ const char * linphone_core_get_capture_device(LinphoneCore *lc) { @@ -2814,8 +2822,10 @@ const char * linphone_core_get_capture_device(LinphoneCore *lc) /** * Returns an unmodifiable array of available sound devices. * - * @ingroup media_parameters * The array is NULL terminated. + * + * @ingroup media_parameters + * @param lc The LinphoneCore object **/ const char** linphone_core_get_sound_devices(LinphoneCore *lc){ build_sound_devices_table(lc); @@ -2858,6 +2868,7 @@ void linphone_core_set_sound_source(LinphoneCore *lc, char source) * Sets the path to a wav file used for ringing. * * @param path The file must be a wav 16bit linear. Local ring is disabled if null + * @param lc The LinphoneCore object * * @ingroup media_parameters **/ @@ -2875,6 +2886,7 @@ void linphone_core_set_ring(LinphoneCore *lc,const char *path){ /** * Returns the path to the wav file used for ringing. * + * @param lc The LinphoneCore object * @ingroup media_parameters **/ const char *linphone_core_get_ring(const LinphoneCore *lc){ @@ -3143,6 +3155,7 @@ static void toggle_video_preview(LinphoneCore *lc, bool_t val){ * initiate future calls with video or not. The two boolean parameters indicate in which * direction video is enabled. Setting both to false disables video entirely. * + * @param lc The LinphoneCore object * @param vcap_enabled indicates whether video capture is enabled * @param display_enabled indicates whether video display should be shown * @@ -3222,6 +3235,7 @@ bool_t linphone_core_self_view_enabled(const LinphoneCore *lc){ * Sets the active video device. * * @ingroup media_parameters + * @param lc The LinphoneCore object * @param id the name of the video device as returned by linphone_core_get_video_devices() **/ int linphone_core_set_video_device(LinphoneCore *lc, const char *id){ @@ -3251,6 +3265,7 @@ int linphone_core_set_video_device(LinphoneCore *lc, const char *id){ /** * Returns the name of the currently active video device. * + * @param lc The LinphoneCore object * @ingroup media_parameters **/ const char *linphone_core_get_video_device(const LinphoneCore *lc){ diff --git a/coreapi/proxy.c b/coreapi/proxy.c index f49c59f12..674422be9 100644 --- a/coreapi/proxy.c +++ b/coreapi/proxy.c @@ -249,13 +249,14 @@ static char *guess_contact_for_register(LinphoneProxyConfig *obj){ if (host!=NULL){ LinphoneAddress *contact; char localip[LINPHONE_IPADDR_SIZE]; + LCSipTransports tr; linphone_core_get_local_ip(obj->lc,host,localip); contact=linphone_address_new(obj->reg_identity); linphone_address_set_domain (contact,localip); linphone_address_set_port_int(contact,linphone_core_get_sip_port(obj->lc)); linphone_address_set_display_name(contact,NULL); - LCSipTransports tr; + linphone_core_get_sip_transports(obj->lc,&tr); if (tr.udp_port <= 0 && tr.tcp_port>0) { sal_address_add_param(contact,"transport","tcp"); diff --git a/coreapi/sal.c b/coreapi/sal.c index ec8a6fc6d..b25f39451 100644 --- a/coreapi/sal.c +++ b/coreapi/sal.c @@ -150,7 +150,6 @@ static bool_t payload_list_equals(const MSList *l1, const MSList *l2){ } if (e1!=NULL || e2!=NULL){ /*means one list is longer than the other*/ - abort(); return FALSE; } return TRUE; diff --git a/coreapi/sal_eXosip2.c b/coreapi/sal_eXosip2.c index 222e6e597..6f2fd8bb1 100644 --- a/coreapi/sal_eXosip2.c +++ b/coreapi/sal_eXosip2.c @@ -24,6 +24,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "private.h" #include "offeranswer.h" +static bool_t call_failure(Sal *sal, eXosip_event_t *ev); + static void text_received(Sal *sal, eXosip_event_t *ev); void _osip_list_set_empty(osip_list_t *l, void (*freefunc)(void*)){ @@ -1086,8 +1088,9 @@ static void call_released(Sal *sal, eXosip_event_t *ev){ ms_warning("No op associated to this call_released()"); return; } - if (op->did==-1) { - sal->callbacks.call_failure(op,SalErrorNoResponse,SalReasonUnknown,NULL, 487); + if (ev->response==NULL){ + /* no response received so far */ + call_failure(sal,ev); } sal->callbacks.call_released(op); } @@ -1344,9 +1347,11 @@ static void process_dtmf_relay(Sal *sal, eXosip_event_t *ev){ sal->callbacks.dtmf_received(op, tmp[0]); } } + eXosip_lock(); eXosip_call_build_answer(ev->tid,200,&ans); if (ans) eXosip_call_send_answer(ev->tid,200,ans); + eXosip_unlock(); } } @@ -2031,7 +2036,7 @@ int sal_call_update(SalOp *h, const char *subject){ osip_message_t *reinvite=NULL; eXosip_lock(); - if(eXosip_call_build_request(h->did,"INVITE",&reinvite) != OSIP_SUCCESS || reinvite==NULL){ + if(eXosip_call_build_request(h->did,"INVITE",&reinvite) != 0 || reinvite==NULL){ eXosip_unlock(); return -1; } diff --git a/coreapi/sal_eXosip2_sdp.c b/coreapi/sal_eXosip2_sdp.c index 848e3070c..70443c722 100644 --- a/coreapi/sal_eXosip2_sdp.c +++ b/coreapi/sal_eXosip2_sdp.c @@ -328,9 +328,6 @@ int sdp_to_media_description(sdp_message_t *msg, SalMediaDescription *desc){ stream->type=SalVideo; }else { stream->type=SalOther; - if (stream->typeother){ - ms_free(stream->typeother); - } strncpy(stream->typeother,mtype,sizeof(stream->typeother)-1); } for(j=0;(sbw=sdp_message_bandwidth_get(msg,i,j))!=NULL;++j){ diff --git a/gtk/.gitignore b/gtk/.gitignore index 398d60f02..b1b1529c6 100644 --- a/gtk/.gitignore +++ b/gtk/.gitignore @@ -1,4 +1,4 @@ -linphone-3 +linphone .libs .deps linphone.res diff --git a/gtk/Makefile.am b/gtk/Makefile.am index a2c38b342..58f530659 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -27,9 +27,9 @@ if BUILD_GTK_UI BUILT_SOURCES=version_date.h -bin_PROGRAMS=linphone-3 +bin_PROGRAMS=linphone -linphone_3_SOURCES= \ +linphone_SOURCES= \ main.c \ propertybox.c \ friendlist.c \ @@ -45,7 +45,7 @@ linphone_3_SOURCES= \ loginframe.c \ linphone.h -linphone_3_LDADD=$(ORTP_LIBS) \ +linphone_LDADD=$(ORTP_LIBS) \ $(MEDIASTREAMER_LIBS) \ $(top_builddir)/coreapi/liblinphone.la \ $(LIBGTK_LIBS) $(INTLLIBS) @@ -56,10 +56,10 @@ if BUILD_WIN32 linphone.res: $(LINPHONE_ICO_RC_FILE) $(LINPHONE_ICO_FILE) windres $(LINPHONE_ICO_RC_FILE) -O coff -o linphone.res -linphone_3_LDADD+=linphone.res -lwininet -linphone_3_LDFLAGS=-Wl,--export-all-symbols -mwindows +linphone_LDADD+=linphone.res -lwininet +linphone_LDFLAGS=-Wl,--export-all-symbols -mwindows else -linphone_3_LDFLAGS=-export-dynamic +linphone_LDFLAGS=-export-dynamic endif uidir=$(datadir)/linphone diff --git a/java/common/org/linphone/core/LinphoneCall.java b/java/common/org/linphone/core/LinphoneCall.java index 545793eee..171e2e6b4 100644 --- a/java/common/org/linphone/core/LinphoneCall.java +++ b/java/common/org/linphone/core/LinphoneCall.java @@ -24,7 +24,7 @@ import java.util.Vector; * Object representing a Call. calls are created using {@link LinphoneCore#invite(LinphoneAddress)} or passed to the application by listener {@link LinphoneCoreListener#callState(LinphoneCore, LinphoneCall, State, String)} * */ -@SuppressWarnings("unchecked") + public interface LinphoneCall { /** * Linphone call states diff --git a/java/common/org/linphone/core/LinphoneCallLog.java b/java/common/org/linphone/core/LinphoneCallLog.java index 1a1ffefb0..ccfdc7632 100644 --- a/java/common/org/linphone/core/LinphoneCallLog.java +++ b/java/common/org/linphone/core/LinphoneCallLog.java @@ -24,7 +24,7 @@ package org.linphone.core; import java.util.Vector; -@SuppressWarnings("unchecked") + public interface LinphoneCallLog { /** * Represents call status diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java index e98165fc1..84a38ca7d 100644 --- a/java/common/org/linphone/core/LinphoneCore.java +++ b/java/common/org/linphone/core/LinphoneCore.java @@ -25,7 +25,7 @@ import java.util.Vector; * Linphone core main object created by method {@link LinphoneCoreFactory#createLinphoneCore(LinphoneCoreListener, String, String, Object)}. * */ -@SuppressWarnings("unchecked") + public interface LinphoneCore { /** * linphone core states @@ -429,10 +429,17 @@ public interface LinphoneCore { */ public boolean isEchoCancellationEnabled(); /** - * not implemented yet + * set transport used for signaling (TCP or UDP) + * * @param aTransport */ public void setSignalingTransport(Transport aTransport); + /** + * get transport used for signaling (TCP or UDP) + * + * @return Transport; + */ + public Transport getSignalingTransport(); /** * not implemented * @param value diff --git a/java/common/org/linphone/core/LinphoneCoreFactory.java b/java/common/org/linphone/core/LinphoneCoreFactory.java index a4137ec91..6629c3dc3 100644 --- a/java/common/org/linphone/core/LinphoneCoreFactory.java +++ b/java/common/org/linphone/core/LinphoneCoreFactory.java @@ -21,7 +21,7 @@ package org.linphone.core; -@SuppressWarnings("unchecked") + abstract public class LinphoneCoreFactory { private static String factoryName = "org.linphone.core.LinphoneCoreFactoryImpl"; diff --git a/java/common/org/linphone/core/LinphoneFriend.java b/java/common/org/linphone/core/LinphoneFriend.java index 6e7d4007a..9d2f97fa6 100644 --- a/java/common/org/linphone/core/LinphoneFriend.java +++ b/java/common/org/linphone/core/LinphoneFriend.java @@ -27,7 +27,7 @@ import java.util.Vector; * * */ -@SuppressWarnings("unchecked") + public interface LinphoneFriend { /** * Enum controlling behavior for incoming subscription request. diff --git a/java/common/org/linphone/core/OnlineStatus.java b/java/common/org/linphone/core/OnlineStatus.java index 4c2d8110b..0653d1a96 100644 --- a/java/common/org/linphone/core/OnlineStatus.java +++ b/java/common/org/linphone/core/OnlineStatus.java @@ -25,7 +25,7 @@ import java.util.Vector; * Enum describing remote friend status * */ -@SuppressWarnings("unchecked") + public class OnlineStatus { static private Vector values = new Vector(); diff --git a/java/common/org/linphone/core/VideoSize.java b/java/common/org/linphone/core/VideoSize.java index 8e5c079c7..b9b3e0710 100644 --- a/java/common/org/linphone/core/VideoSize.java +++ b/java/common/org/linphone/core/VideoSize.java @@ -78,7 +78,7 @@ public final class VideoSize { return true; } - @Override + public String toString() { return "width = "+width + " height = " + height; } diff --git a/linphone.iss.in b/linphone.iss.in index b7726f542..b0cbd08f0 100644 --- a/linphone.iss.in +++ b/linphone.iss.in @@ -30,19 +30,19 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{ #include "linphone-win32.filelist" [Icons] -Name: "{group}\Linphone"; Filename: "{app}\bin\linphone-3.exe" ; WorkingDir: "{app}" -Name: "{userdesktop}\Linphone"; Filename: "{app}\bin\linphone-3.exe"; WorkingDir: "{app}" ; Tasks: desktopicon +Name: "{group}\Linphone"; Filename: "{app}\bin\linphone.exe" ; WorkingDir: "{app}" +Name: "{userdesktop}\Linphone"; Filename: "{app}\bin\linphone.exe"; WorkingDir: "{app}" ; Tasks: desktopicon [Registry] Root: HKCR; Subkey: "sip"; Root: HKCR; Subkey: "sip"; ValueData: "URL: SIP protocol" ; ValueType:string Root: HKCR; Subkey: "sip"; ValueName: "EditFlags"; ValueData: "02 00 00 00" ; ValueType:binary Root: HKCR; Subkey: "sip"; ValueName: "URL Protocol" ; ValueType:string -Root: HKCR; Subkey: "sip\DefaultIcon"; ValueData: "{app}\bin\linphone-3.exe"; ValueType:string ; Flags:uninsdeletekey +Root: HKCR; Subkey: "sip\DefaultIcon"; ValueData: "{app}\bin\linphone.exe"; ValueType:string ; Flags:uninsdeletekey Root: HKCR; Subkey: "sip\shell" Root: HKCR; Subkey: "sip\shell\open" -Root: HKCR; Subkey: "sip\shell\open\command"; ValueType:string ; ValueData: "{app}\bin\linphone-3.exe --workdir {app} --call %1"; Flags:uninsdeletekey +Root: HKCR; Subkey: "sip\shell\open\command"; ValueType:string ; ValueData: "{app}\bin\linphone.exe --workdir {app} --call %1"; Flags:uninsdeletekey [Run] -Filename: "{app}\bin\linphone-3.exe"; Description: "{cm:LaunchProgram,Linphone}"; WorkingDir: "{app}" ; Flags: nowait postinstall skipifsilent +Filename: "{app}\bin\linphone.exe"; Description: "{cm:LaunchProgram,Linphone}"; WorkingDir: "{app}" ; Flags: nowait postinstall skipifsilent diff --git a/linphone.kdevelop b/linphone.kdevelop index 27eac2226..2cb0437f5 100644 --- a/linphone.kdevelop +++ b/linphone.kdevelop @@ -16,7 +16,7 @@ executable - gtk-glade/linphone-3 + gtk-glade/linphone diff --git a/mediastreamer2 b/mediastreamer2 index e7201e06c..874577ad3 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit e7201e06c99afa14a33a1c4b47144daf467cbab1 +Subproject commit 874577ad3a835255fc719da26f5dbdadf301aa01 diff --git a/po/POTFILES.in b/po/POTFILES.in index 0efc5f6cf..c099ec55f 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -29,6 +29,7 @@ coreapi/presence.c coreapi/friend.c coreapi/proxy.c coreapi/callbacks.c +coreapi/sal_eXosip2.c mediastreamer2/src/alaw.c mediastreamer2/src/alsa.c mediastreamer2/src/aqsnd.c diff --git a/scripts/builder-mingw.mk b/scripts/builder-mingw.mk index 7363218af..0a9937cc3 100644 --- a/scripts/builder-mingw.mk +++ b/scripts/builder-mingw.mk @@ -11,7 +11,7 @@ MSX264_ZIP=$(WORKDIR)/msx264.zip INSTALL_ROOT=$(WORKDIR)/root FILELIST=$(WORKDIR)/linphone-bundle.filelist -LINPHONE_VERSION=strings $(INSTALL_ROOT)/bin/linphone-3.exe |grep linphone_ident | sed 's/linphone_ident_string=//' +LINPHONE_VERSION=strings $(INSTALL_ROOT)/bin/linphone.exe |grep linphone_ident | sed 's/linphone_ident_string=//' $(WORKDIR): mkdir -p $(WORKDIR) diff --git a/share/linphone.desktop.in b/share/linphone.desktop.in index 7a490a74d..d8ab62a5b 100644 --- a/share/linphone.desktop.in +++ b/share/linphone.desktop.in @@ -4,7 +4,7 @@ Comment=Linphone is a web-phone Comment[fr]=Linphone est un web-phone. Comment[de]=Linphone ist ein web-phone. Type=Application -Exec=linphone-3 +Exec=linphone Icon=@prefix@/share/pixmaps/linphone/linphone.png Terminal=false -Categories=Network;Telephony; \ No newline at end of file +Categories=Network;Telephony;