X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=vpn%2Fplugins%2Fpptp.c;h=5fc861e43c05ac5e2ad78b6b0e0f3156252a2e3a;hb=c647a4b6f1132684c9d8b8ad71ec38d81147b278;hp=9f2a214ddceca866bed55eb6d197da6ad168143d;hpb=9c99015013fcf0abde65abaf2203dde64c07a962;p=platform%2Fupstream%2Fconnman.git diff --git a/vpn/plugins/pptp.c b/vpn/plugins/pptp.c index 9f2a214..5fc861e 100755 --- a/vpn/plugins/pptp.c +++ b/vpn/plugins/pptp.c @@ -77,7 +77,7 @@ struct { { "PPPD.RequirMPPE40", "require-mppe-40", NULL, OPT_BOOL }, { "PPPD.RequirMPPE128", "require-mppe-128", NULL, OPT_BOOL }, { "PPPD.RequirMPPEStateful", "mppe-stateful", NULL, OPT_BOOL }, - { "PPPD.NoVJ", "no-vj-comp", NULL, OPT_BOOL }, + { "PPPD.NoVJ", "novj", NULL, OPT_BOOL }, }; static DBusConnection *connection; @@ -137,7 +137,8 @@ static int pptp_notify(DBusMessage *msg, struct vpn_provider *provider) DBG("authentication failure"); vpn_provider_set_string(provider, "PPTP.User", NULL); - vpn_provider_set_string(provider, "PPTP.Password", NULL); + vpn_provider_set_string_hide_value(provider, "PPTP.Password", + NULL); return VPN_STATE_AUTH_FAILURE; } @@ -282,14 +283,27 @@ struct request_input_reply { static void request_input_reply(DBusMessage *reply, void *user_data) { struct request_input_reply *pptp_reply = user_data; + struct pptp_private_data *data; const char *error = NULL; char *username = NULL, *password = NULL; char *key; DBusMessageIter iter, dict; + int err; DBG("provider %p", pptp_reply->provider); - if (dbus_message_get_type(reply) == DBUS_MESSAGE_TYPE_ERROR) { + if (!reply) + goto done; + + data = pptp_reply->user_data; + + err = vpn_agent_check_and_process_reply_error(reply, + pptp_reply->provider, data->task, data->cb, + data->user_data); + if (err) { + /* Ensure cb is called only once */ + data->cb = NULL; + data->user_data = NULL; error = dbus_message_get_error_name(reply); goto done; } @@ -383,6 +397,9 @@ static int request_input(struct vpn_provider *provider, connman_dbus_dict_open(&iter, &dict); + if (vpn_provider_get_authentication_errors(provider)) + vpn_agent_append_auth_failure(&dict, provider, NULL); + vpn_agent_append_user_info(&dict, provider, "PPTP.User"); vpn_agent_append_host_and_name(&dict, provider); @@ -423,13 +440,6 @@ static int run_connect(struct vpn_provider *provider, char *str; int err, i; - host = vpn_provider_get_string(provider, "Host"); - if (!host) { - connman_error("Host not set; cannot enable VPN"); - err = -EINVAL; - goto done; - } - if (!username || !password) { DBG("Cannot connect username %s password %p", username, password); @@ -439,6 +449,7 @@ static int run_connect(struct vpn_provider *provider, DBG("username %s password %p", username, password); + host = vpn_provider_get_string(provider, "Host"); str = g_strdup_printf("%s %s --nolaunchpppd --loglevel 2", PPTP, host); if (!str) { @@ -452,6 +463,7 @@ static int run_connect(struct vpn_provider *provider, connman_task_add_argument(task, "nodetach", NULL); connman_task_add_argument(task, "lock", NULL); + connman_task_add_argument(task, "logfd", "2"); connman_task_add_argument(task, "usepeerdns", NULL); connman_task_add_argument(task, "noipdefault", NULL); connman_task_add_argument(task, "noauth", NULL); @@ -592,7 +604,12 @@ static int pptp_error_code(struct vpn_provider *provider, int exit_code) static void pptp_disconnect(struct vpn_provider *provider) { - vpn_provider_set_string(provider, "PPTP.Password", NULL); + if (!provider) + return; + + vpn_provider_set_string_hide_value(provider, "PPTP.Password", NULL); + + connman_agent_cancel(provider); } static struct vpn_driver vpn_driver = {