diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2010-09-21 13:57:46 +0900 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2010-09-21 13:57:46 +0900 |
commit | 7d07dba2ee2ce01fa76d15af2b1980907ed4f9f7 (patch) | |
tree | a99ee1bb21a26157edd46c0ff2b91e58a4976b68 /plugins/pacrunner.c | |
parent | 336c9781ab5dc7f0e601466012544c863b23fce8 (diff) | |
download | connman-7d07dba2ee2ce01fa76d15af2b1980907ed4f9f7.tar.gz connman-7d07dba2ee2ce01fa76d15af2b1980907ed4f9f7.tar.bz2 connman-7d07dba2ee2ce01fa76d15af2b1980907ed4f9f7.zip |
Add interface string to proxy configuration
Diffstat (limited to 'plugins/pacrunner.c')
-rw-r--r-- | plugins/pacrunner.c | 56 |
1 files changed, 35 insertions, 21 deletions
diff --git a/plugins/pacrunner.c b/plugins/pacrunner.c index 82fd8fb9..cf0fc396 100644 --- a/plugins/pacrunner.c +++ b/plugins/pacrunner.c @@ -67,40 +67,30 @@ done: dbus_message_unref(reply); } -static void add_dict_with_string_value(DBusMessageIter *iter, +static void add_string_entry(DBusMessageIter *iter, const char *key, const char *str) { - DBusMessageIter dict, entry, value; + DBusMessageIter value; - dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY, - DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING - DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING - DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict); - dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, - NULL, &entry); - - dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); + dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &key); - dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, + dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &value); dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &str); - dbus_message_iter_close_container(&entry, &value); - - dbus_message_iter_close_container(&dict, &entry); - dbus_message_iter_close_container(iter, &dict); + dbus_message_iter_close_container(iter, &value); } -static void create_proxy_configuration(const char *url) +static void create_proxy_configuration(const char *interface, const char *url) { DBusMessage *msg; - DBusMessageIter iter; + DBusMessageIter iter, dict, entry; DBusPendingCall *call; dbus_bool_t result; if (url == NULL) return; - DBG("url %s", url); + DBG("interface %s url %s", interface, url); msg = dbus_message_new_method_call(PACRUNNER_SERVICE, PACRUNNER_PATH, PACRUNNER_INTERFACE, "CreateProxyConfiguration"); @@ -110,7 +100,21 @@ static void create_proxy_configuration(const char *url) dbus_message_set_auto_start(msg, FALSE); dbus_message_iter_init_append(msg, &iter); - add_dict_with_string_value(&iter, "URL", url); + + dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, + DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING + DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING + DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict); + dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, + NULL, &entry); + + if (interface != NULL) + add_string_entry(&entry, "Interface", interface); + + add_string_entry(&entry, "URL", url); + + dbus_message_iter_close_container(&dict, &entry); + dbus_message_iter_close_container(&iter, &dict); result = dbus_connection_send_with_reply(connection, msg, &call, DBUS_TIMEOUT); @@ -176,6 +180,7 @@ static void destroy_proxy_configuration(void) static void default_service_changed(struct connman_service *service) { + char *interface; const char *url; DBG("service %p", service); @@ -187,8 +192,12 @@ static void default_service_changed(struct connman_service *service) destroy_proxy_configuration(); + interface = connman_service_get_interface(service); + url = connman_service_get_proxy_autoconfig(service); - create_proxy_configuration(url); + create_proxy_configuration(interface, url); + + g_free(interface); } static struct connman_notifier pacrunner_notifier = { @@ -198,12 +207,17 @@ static struct connman_notifier pacrunner_notifier = { static void pacrunner_connect(DBusConnection *conn, void *user_data) { + char *interface; const char *url; DBG(""); + interface = connman_service_get_interface(default_service); + url = connman_service_get_proxy_autoconfig(default_service); - create_proxy_configuration(url); + create_proxy_configuration(interface, url); + + g_free(interface); } static void pacrunner_disconnect(DBusConnection *conn, void *user_data) |