* 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){
* 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){
* 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){
* 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){
* 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){
* 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)
{
* 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)
{
* 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)
{
/**
* 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);
* 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
**/
/**
* 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){
* 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
*
* 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){
/**
* 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){
}
lc->netup_time=curtime;
lc->network_reachable=isReachable;
-}
+ if(!isReachable) {
+ sal_unlisten_ports (lc->sal);
+ } else {
+ apply_transports(lc);
+ }
+}
+void linphone_core_refresh_registers(LinphoneCore* lc) {
+ const MSList *elem=linphone_core_get_proxy_config_list(lc);
+ for(;elem!=NULL;elem=elem->next){
+ LinphoneProxyConfig *cfg=(LinphoneProxyConfig*)elem->data;
+ if (linphone_proxy_config_register_enabled(cfg) ) {
+ cfg->registered=0;
+ cfg->commit=TRUE;
+ }
+ }
+
+}
void linphone_core_set_network_reachable(LinphoneCore* lc,bool_t isReachable) {
//first disable automatic mode
if (lc->auto_net_state_mon) {
#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*)){
if (ctx->running){
eXosip_quit();
eXosip_init();
+ ctx->running=FALSE;
}
return 0;
}
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);
}
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();
}
}
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;
}