Should be better that way. :)
What about my pacrunner patches? Are they interesting or should I wait for a
better design from you, about this method's specific executors split?
I have already ideas about execution and filtration over exclusion list for
manual method, but I guess it is better you clarify first the design.
(since there is this hashtable that might contain multiple config I guess you
want to handle that, and also I think - for instance - that executors should be
that signature:
__pacrunner_<method>_execute(struct pacrunner_proxy *proxy, const char *url,
const char *host)
and js specific should be out of client.c. Juste some thoughts.)
Tomasz
---
plugins/pacrunner.c | 77 ++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 64 insertions(+), 13 deletions(-)
diff --git a/plugins/pacrunner.c b/plugins/pacrunner.c
index 3a21011..52f703f 100644
--- a/plugins/pacrunner.c
+++ b/plugins/pacrunner.c
@@ -73,6 +73,16 @@ static void append_string(DBusMessageIter *iter, void
*user_data)
dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, user_data);
}
+static void append_string_list(DBusMessageIter *iter, void *user_data)
+{
+ char **list = user_data;
+ int i;
+
+ for (i = 0; list[i] != NULL; i++)
+ dbus_message_iter_append_basic(iter,
+ DBUS_TYPE_STRING, &list[i]);
+}
+
static void create_proxy_configuration(void)
{
DBusMessage *msg;
@@ -80,7 +90,9 @@ static void create_proxy_configuration(void)
DBusPendingCall *call;
dbus_bool_t result;
char *interface;
+ const char *method;
const char *str;
+ char **str_list;
if (default_service == NULL)
return;
@@ -97,6 +109,58 @@ static void create_proxy_configuration(void)
dbus_message_iter_init_append(msg, &iter);
connman_dbus_dict_open(&iter, &dict);
+ switch(connman_service_get_proxy_method(default_service)) {
+ case CONNMAN_SERVICE_PROXY_METHOD_UNKNOWN:
+ dbus_message_unref(msg);
+ return;
+ case CONNMAN_SERVICE_PROXY_METHOD_DIRECT:
+ method= "direct";
+ break;
+ case CONNMAN_SERVICE_PROXY_METHOD_MANUAL:
+ method = "manual";
+
+ str_list = connman_service_get_proxy_servers(default_service);
+ if (str_list == NULL) {
+ dbus_message_unref(msg);
+ return;
+ }
+
+ connman_dbus_dict_append_array(&dict, "Servers",
+ DBUS_TYPE_STRING, append_string_list,
+ str_list);
+ g_strfreev(str_list);
+
+ str_list = connman_service_get_proxy_excludes(default_service);
+ if (str_list == NULL)
+ break;
+
+ connman_dbus_dict_append_array(&dict, "Excludes",
+ DBUS_TYPE_STRING, append_string_list,
+ str_list);
+ g_strfreev(str_list);
+
+ break;
+ case CONNMAN_SERVICE_PROXY_METHOD_AUTO:
+ method = "auto";
+
+ str = connman_service_get_proxy_url(default_service);
+ if (str == NULL)
+ str = connman_service_get_proxy_autoconfig(
+ default_service);
+
+ if (str == NULL) {
+ dbus_message_unref(msg);
+ return;
+ }
+
+ connman_dbus_dict_append_basic(&dict, "URL",
+ DBUS_TYPE_STRING, &str);
+ break;
+ }
+
+ connman_dbus_dict_append_basic(&dict, "Method",
+ DBUS_TYPE_STRING, &method);
+
interface = connman_service_get_interface(default_service);
if (interface != NULL) {
connman_dbus_dict_append_basic(&dict, "Interface",
@@ -104,19 +168,6 @@ static void create_proxy_configuration(void)
g_free(interface);
}
- str = connman_service_get_proxy_autoconfig(default_service);
- if (str != NULL) {
- const char *method = "auto";
- connman_dbus_dict_append_basic(&dict, "Method",
- DBUS_TYPE_STRING, &method);
- connman_dbus_dict_append_basic(&dict, "URL",
- DBUS_TYPE_STRING, &str);
- } else {
- const char *method = "direct";
- connman_dbus_dict_append_basic(&dict, "Method",
- DBUS_TYPE_STRING, &method);
- }
-
str = connman_service_get_domainname(default_service);
if (str != NULL)
connman_dbus_dict_append_array(&dict, "Domains",
--
1.7.1
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman