break;
}
}
+ /*this is to filter out unsupported encryption schemes*/
+ linphone_core_set_media_encryption(lc,linphone_core_get_media_encryption(lc));
/*for tuning or test*/
lc->sip_conf.sdp_200_ack=lp_config_get_int(lc->config,"sip","sdp_200_ack",0);
return FALSE;
}
-void linphone_core_set_media_encryption(LinphoneCore *lc, enum LinphoneMediaEncryption menc) {
- if (menc == LinphoneMediaEncryptionSRTP)
- lp_config_set_string(lc->config,"sip","media_encryption","srtp");
- else if (menc == LinphoneMediaEncryptionZRTP)
- lp_config_set_string(lc->config,"sip","media_encryption","zrtp");
- else
- lp_config_set_string(lc->config,"sip","media_encryption","none");
+int linphone_core_set_media_encryption(LinphoneCore *lc, enum LinphoneMediaEncryption menc) {
+ const char *type="none";
+ int ret=0;
+ if (menc == LinphoneMediaEncryptionSRTP){
+ if (!ortp_srtp_supported()){
+ ms_warning("SRTP not supported by library.");
+ type="none";
+ ret=-1;
+ }else type="srtp";
+ }else if (menc == LinphoneMediaEncryptionZRTP){
+ if (!ortp_zrtp_available()){
+ ms_warning("ZRTP not supported by library.");
+ type="none";
+ ret=-1;
+ }else type="zrtp";
+ }
+ lp_config_set_string(lc->config,"sip","media_encryption",type);
+ return ret;
}
LinphoneMediaEncryption linphone_core_get_media_encryption(LinphoneCore *lc) {
/**
* Choose media encryption policy to be used for RTP packets
*/
-void linphone_core_set_media_encryption(LinphoneCore *lc, enum LinphoneMediaEncryption menc);
-enum LinphoneMediaEncryption linphone_core_get_media_encryption(LinphoneCore *lc);
+int linphone_core_set_media_encryption(LinphoneCore *lc, enum LinphoneMediaEncryption menc);
+LinphoneMediaEncryption linphone_core_get_media_encryption(LinphoneCore *lc);
bool_t linphone_core_is_media_encryption_mandatory(LinphoneCore *lc);
/**
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <requires lib="gtk+" version="2.16"/>
+ <requires lib="gtk+" version="2.22"/>
<object class="GtkAdjustment" id="adjustment1">
<property name="lower">500</property>
<property name="upper">3001</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
+ <object class="GtkListStore" id="liststore1"/>
<object class="GtkListStore" id="model1">
<columns>
<!-- column-name gchararray -->
</packing>
</child>
<child>
- <object class="GtkComboBoxText" id="media_encryption_combo">
+ <object class="GtkComboBox" id="media_encryption_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="active">0</property>
- <items>
- <item translatable="yes">None</item>
- </items>
</object>
<packing>
<property name="left_attach">1</property>
}
static void linphone_gtk_media_encryption_changed(GtkWidget *combo){
- const char *selected=gtk_combo_box_get_active_text(GTK_COMBO_BOX(combo));
+ char *selected=gtk_combo_box_get_active_text(GTK_COMBO_BOX(combo));
LinphoneCore *lc=linphone_gtk_get_core();
if (selected!=NULL){
if (strcasecmp(selected,"SRTP")==0)
else if (strcasecmp(selected,"ZRTP")==0)
linphone_core_set_media_encryption(lc,LinphoneMediaEncryptionZRTP);
else linphone_core_set_media_encryption(lc,LinphoneMediaEncryptionNone);
+ g_free(selected);
}else g_warning("gtk_combo_box_get_active_text() returned NULL");
}
GtkWidget *combo=linphone_gtk_get_widget(pb,"media_encryption_combo");
bool_t no_enc=TRUE;
int srtp_id=-1,zrtp_id=-1;
-
+ GtkTreeModel *model;
+ GtkListStore *store;
+ GtkTreeIter iter;
+ GtkCellRenderer *renderer=gtk_cell_renderer_text_new();
+
+ model=GTK_TREE_MODEL((store=gtk_list_store_new(1,G_TYPE_STRING)));
+ gtk_combo_box_set_model(GTK_COMBO_BOX(combo),model);
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo),renderer,TRUE);
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo),renderer,"text",0,NULL);
+
+ gtk_list_store_append(store,&iter);
+ gtk_list_store_set(store,&iter,0,_("None"),-1);
+
if (linphone_core_media_encryption_supported(lc,LinphoneMediaEncryptionSRTP)){
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo),_("SRTP"));
+ gtk_list_store_append(store,&iter);
+ gtk_list_store_set(store,&iter,0,_("SRTP"),-1);
srtp_id=1;
no_enc=FALSE;
}
if (linphone_core_media_encryption_supported(lc,LinphoneMediaEncryptionZRTP)){
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo),_("ZRTP"));
+ gtk_list_store_append(store,&iter);
+ gtk_list_store_set(store,&iter,0,_("ZRTP"),-1);
no_enc=FALSE;
if (srtp_id!=-1) zrtp_id=2;
else zrtp_id=1;
}
g_signal_connect(G_OBJECT(combo),"changed",(GCallback)linphone_gtk_media_encryption_changed,NULL);
}
+ g_object_unref(G_OBJECT(model));
}
void linphone_gtk_show_parameters(void){