]> sjero.net Git - linphone/commitdiff
Merge branch 'master' of belledonne-communications.com:linphone-private into dev_sal
authorSimon Morlat <simon.morlat@linphone.org>
Thu, 11 Mar 2010 13:38:58 +0000 (14:38 +0100)
committerSimon Morlat <simon.morlat@linphone.org>
Thu, 11 Mar 2010 13:38:58 +0000 (14:38 +0100)
Conflicts:
coreapi/linphonecore.c
coreapi/linphonecore.h

1  2 
coreapi/linphonecore.c
coreapi/linphonecore.h
coreapi/private.h
coreapi/proxy.c
gtk-glade/main.c
gtk-glade/propertybox.c

index a1cb09b04040fde8bf43ab0581c935acc8f90a62,e79c39d5524b6b2034df811af7d10a17e64879fc..2c163d490e28fe35e1f86d86dd8e9aaffb7dffef
@@@ -1443,31 -1404,33 +1444,34 @@@ static void linphone_core_disconnected(
        linphone_core_terminate_call(lc,NULL);
  }
  
- static void proxy_update(LinphoneCore *lc, time_t curtime){
+ static void monitor_network_state(LinphoneCore *lc, time_t curtime){
        static time_t last_check=0;
        static bool_t last_status=FALSE;
-       if (lc->sip_conf.register_only_when_network_is_up){
-               char result[LINPHONE_IPADDR_SIZE];
-               /* only do the network up checking every five seconds */
-               if (last_check==0 || (curtime-last_check)>=5){
-                       sal_get_default_local_ip(lc->sal,
-                           lc->sip_conf.ipv6_enabled ? AF_INET6 : AF_INET,
-                           result,LINPHONE_IPADDR_SIZE);
-                       if (strcmp(result,"::1")!=0 && strcmp(result,"127.0.0.1")!=0){
-                               last_status=TRUE;
-                               ms_message("Network is up, registering now (%s)",result);
-                       }else last_status=FALSE;
-                       last_check=curtime;
+       char result[LINPHONE_IPADDR_SIZE];
+       bool_t new_status;
+       /* only do the network up checking every five seconds */
+       if (last_check==0 || (curtime-last_check)>=5){
 -              if (eXosip_guess_localip(lc->sip_conf.ipv6_enabled ? AF_INET6 : AF_INET,result,LINPHONE_IPADDR_SIZE)==0){
 -                      if (strcmp(result,"::1")!=0 && strcmp(result,"127.0.0.1")!=0){
 -                              new_status=TRUE;
 -                      }else new_status=FALSE;
 -              }
++              sal_get_default_local_ip(lc->sal,
++                  lc->sip_conf.ipv6_enabled ? AF_INET6 : AF_INET,
++                  result,LINPHONE_IPADDR_SIZE);
++              if (strcmp(result,"::1")!=0 && strcmp(result,"127.0.0.1")!=0){
++                      new_status=TRUE;
++              }else new_status=FALSE;
+               last_check=curtime;
+               if (new_status!=last_status) {
+                       set_network_reachable(lc,new_status);
+                       last_status=new_status;
                }
-               linphone_core_set_network_reachable(lc,last_status);
-       }else {
-               ms_list_for_each(lc->sip_conf.proxies,(void (*)(void*))&linphone_proxy_config_update);
        }
  }
  
+ static void proxy_update(LinphoneCore *lc){
+       ms_list_for_each(lc->sip_conf.proxies,(void (*)(void*))&linphone_proxy_config_update);
+ }
  static void assign_buddy_info(LinphoneCore *lc, BuddyInfo *info){
 -      LinphoneFriend *lf=linphone_core_get_friend_by_uri(lc,info->sip_uri);
 +      LinphoneFriend *lf=linphone_core_get_friend_by_address(lc,info->sip_uri);
        if (lf!=NULL){
                lf->info=info;
                ms_message("%s has a BuddyInfo assigned with image %p",info->sip_uri, info->image_data);
@@@ -1570,8 -1535,20 +1574,10 @@@ void linphone_core_iterate(LinphoneCor
                lc_callback_obj_invoke(&lc->preview_finished_cb,lc);
        }
  
 -      if (exosip_running){
 -              while((ev=eXosip_event_wait(0,0))!=NULL){
 -                      linphone_core_process_event(lc,ev);
 -              }
 -              if (lc->automatic_action==0) {
 -                      eXosip_lock();
 -                      eXosip_automatic_action();
 -                      eXosip_unlock();
 -              }
 -      }
 -
 +      sal_iterate(lc->sal);
-       proxy_update(lc,curtime);
+       if (lc->auto_net_state_mon) monitor_network_state(lc,curtime);
+       proxy_update(lc);
  
        if (lc->call!=NULL){
                LinphoneCall *call=lc->call;
@@@ -2740,7 -2933,7 +2746,7 @@@ void linphone_core_set_nat_address(Linp
        }
        if (addr!=NULL) lc->net_conf.nat_address=ms_strdup(addr);
        else lc->net_conf.nat_address=NULL;
-       update_primary_contact(lc);
 -      lc->apply_nat_settings=TRUE;
++      if (lc->sip_conf.contact) update_primary_contact(lc);
  }
  
  const char *linphone_core_get_nat_address(const LinphoneCore *lc)
  
  void linphone_core_set_firewall_policy(LinphoneCore *lc, LinphoneFirewallPolicy pol){
        lc->net_conf.firewall_policy=pol;
-       update_primary_contact(lc);
 -      lc->apply_nat_settings=TRUE;
++      if (lc->sip_conf.contact) update_primary_contact(lc);
  }
  
  LinphoneFirewallPolicy linphone_core_get_firewall_policy(const LinphoneCore *lc){
index 6e4e658e62cfc67efb468b06d16693efb8b7cbe1,54c915060f0fcfdd69dc552cbb356fc316f1cc7d..328b3b72116ea18c773f3a9ab74b96c6e40e0ddc
@@@ -449,6 -661,10 +449,7 @@@ typedef struct _LinphoneCore LinphoneCo
         * In case of false, network state must be communicate to linphone core with method linphone_core_
         */
        bool_t auto_net_state_mon;
 -} LinphoneCore;
 -
 -
+       bool_t network_reachable;
  
  /* THE main API */
  
index 6050449d51c022fc73aca767d9f994bea962a373,93b1c77be124f3152749e45728c73d0b56e8c23d..546b83dc200c5ccd1a0fadb25838a5af0c6474ec
@@@ -169,224 -194,4 +169,225 @@@ void linphone_proxy_config_write_to_con
  
  int linphone_proxy_config_normalize_number(LinphoneProxyConfig *cfg, const char *username, char *result, size_t result_len);
  
 +void linphone_core_text_received(LinphoneCore *lc, const char *from, const char *msg);
 +
 +void linphone_core_start_media_streams(LinphoneCore *lc, struct _LinphoneCall *call);
 +void linphone_core_stop_media_streams(LinphoneCore *lc, struct _LinphoneCall *call);
 +const char * linphone_core_get_identity(LinphoneCore *lc);
 +const char * linphone_core_get_route(LinphoneCore *lc);
 +bool_t linphone_core_interpret_url(LinphoneCore *lc, const char *url, LinphoneAddress **real_parsed_url, char **route);
 +void linphone_core_start_waiting(LinphoneCore *lc, const char *purpose);
 +void linphone_core_update_progress(LinphoneCore *lc, const char *purpose, float progresses);
 +void linphone_core_stop_waiting(LinphoneCore *lc);
 +
 +
 +extern SalCallbacks linphone_sal_callbacks;
 +
 +
 +struct _LinphoneProxyConfig
 +{
 +      struct _LinphoneCore *lc;
 +      char *reg_proxy;
 +      char *reg_identity;
 +      char *reg_route;
 +      char *realm;
 +      int expires;
 +      int reg_time;
 +      SalOp *op;
 +      char *type;
 +      struct _SipSetupContext *ssctx;
 +      int auth_failures;
 +      char *dial_prefix;
 +      bool_t commit;
 +      bool_t reg_sendregister;
 +      bool_t registered;
 +      bool_t publish;
 +      bool_t dial_escape_plus;
 +};
 +
 +struct _LinphoneAuthInfo 
 +{
 +      char *username;
 +      char *realm;
 +      char *userid;
 +      char *passwd;
 +      char *ha1;
 +      int usecount;
 +      bool_t works;
 +};
 +
 +struct _LinphoneChatRoom{
 +      struct _LinphoneCore *lc;
 +      char  *peer;
 +      char *route;
 +      LinphoneAddress *peer_url;
 +      void * user_data;
 +};
 +
 +struct _LinphoneFriend{
 +      LinphoneAddress *uri;
 +      SalOp *insub;
 +      SalOp *outsub;
 +      LinphoneSubscribePolicy pol;
 +      LinphoneOnlineStatus status;
 +      struct _LinphoneCore *lc;
 +      BuddyInfo *info;
 +      char *refkey;
 +      bool_t subscribe;
 +      bool_t inc_subscribe_pending;
 +};    
 +
 +typedef struct sip_config
 +{
 +      char *contact;
 +      char *guessed_contact;
 +      int sip_port;
 +      MSList *proxies;
 +      MSList *deleted_proxies;
 +      int inc_timeout;        /*timeout after an un-answered incoming call is rejected*/
 +      bool_t use_info;
 +      bool_t use_rfc2833;     /*force RFC2833 to be sent*/
 +      bool_t guess_hostname;
 +      bool_t loopback_only;
 +      bool_t ipv6_enabled;
 +      bool_t sdp_200_ack;
 +      bool_t only_one_codec; /*in SDP answers*/
 +      bool_t register_only_when_network_is_up;
 +} sip_config_t;
 +
 +typedef struct rtp_config
 +{
 +      int audio_rtp_port;
 +      int video_rtp_port;
 +      int audio_jitt_comp;  /*jitter compensation*/
 +      int video_jitt_comp;  /*jitter compensation*/
 +      int nortp_timeout;
 +}rtp_config_t;
 +
 +
 +
 +typedef struct net_config
 +{
 +      char *nat_address;
 +      char *stun_server;
 +      char *relay;
 +      int download_bw;
 +      int upload_bw;
 +      int firewall_policy;
 +      int mtu;
 +      bool_t nat_sdp_only;
 +}net_config_t;
 +
 +
 +typedef struct sound_config
 +{
 +      struct _MSSndCard * ring_sndcard;       /* the playback sndcard currently used */
 +      struct _MSSndCard * play_sndcard;       /* the playback sndcard currently used */
 +      struct _MSSndCard * capt_sndcard; /* the capture sndcard currently used */
 +      const char **cards;
 +      int latency;    /* latency in samples of the current used sound device */
 +      char rec_lev;
 +      char play_lev;
 +      char ring_lev;
 +      char source;
 +      char *local_ring;
 +      char *remote_ring;
 +      bool_t ec;
 +      bool_t ea;
 +      bool_t agc;
 +} sound_config_t;
 +
 +typedef struct codecs_config
 +{
 +      MSList *audio_codecs;  /* list of audio codecs in order of preference*/
 +      MSList *video_codecs;   /* for later use*/
 +}codecs_config_t;
 +
 +typedef struct video_config{
 +      struct _MSWebCam *device;
 +      const char **cams;
 +      MSVideoSize vsize;
 +      bool_t capture;
 +      bool_t show_local;
 +      bool_t display;
 +      bool_t selfview; /*during calls*/
 +}video_config_t;
 +
 +typedef struct ui_config
 +{
 +      int is_daemon;
 +      int is_applet;
 +      unsigned int timer_id;  /* the timer id for registration */
 +}ui_config_t;
 +
 +
 +
 +typedef struct autoreplier_config
 +{
 +      int enabled;
 +      int after_seconds;              /* accept the call after x seconds*/
 +      int max_users;                  /* maximum number of user that can call simultaneously */
 +      int max_rec_time;       /* the max time of incoming voice recorded */
 +      int max_rec_msg;                /* maximum number of recorded messages */
 +      const char *message;            /* the path of the file to be played */
 +}autoreplier_config_t;
 +
 +
 +struct _LinphoneCore
 +{
 +      LinphoneCoreVTable vtable;
 +      Sal *sal;
 +      struct _LpConfig *config;
 +      net_config_t net_conf;
 +      sip_config_t sip_conf;
 +      rtp_config_t rtp_conf;
 +      sound_config_t sound_conf;
 +      video_config_t video_conf;
 +      codecs_config_t codecs_conf;
 +      ui_config_t ui_conf;
 +      autoreplier_config_t autoreplier_conf;
 +      LinphoneProxyConfig *default_proxy;
 +      MSList *friends;
 +      MSList *auth_info;
 +      struct _RingStream *ringstream;
 +      LCCallbackObj preview_finished_cb;
 +      struct _LinphoneCall *call;   /* the current call, in the future it will be a list of calls (conferencing)*/
 +      MSList *queued_calls;   /* used by the autoreplier */
 +      MSList *call_logs;
 +      MSList *chatrooms;
 +      int max_call_logs;
 +      int missed_calls;
 +      struct _AudioStream *audiostream;  /**/
 +      struct _VideoStream *videostream;
 +      struct _VideoStream *previewstream;
 +      RtpTransport *a_rtp,*a_rtcp;
 +      MSList *bl_reqs;
 +      MSList *subscribers;    /* unknown subscribers */
 +      int minutes_away;
 +      LinphoneOnlineStatus presence_mode;
 +      LinphoneOnlineStatus prev_mode;
 +      char *alt_contact;
 +      void *data;
 +      char *play_file;
 +      char *rec_file;
 +      time_t prevtime;
 +      int dw_audio_bw;
 +      int up_audio_bw;
 +      int dw_video_bw;
 +      int up_video_bw;
 +      int audio_bw;
 +      gstate_t gstate_power;
 +      gstate_t gstate_reg;
 +      gstate_t gstate_call;
 +      LinphoneWaitingCallback wait_cb;
 +      void *wait_ctx;
 +      bool_t use_files;
 +      bool_t apply_nat_settings;
 +      bool_t ready;
 +      bool_t bl_refresh;
 +      bool_t preview_finished;
 +      bool_t auto_net_state_mon;
++      bool_t network_reachable;
 +};
 +
  #endif /* _PRIVATE_H */
diff --cc coreapi/proxy.c
Simple merge
Simple merge
Simple merge