2008-07-01 Dan Williams <dcbw@redhat.com>
Fix mobile broadband username/password issues. NM was never requesting mobile broadband secrets, nor was it passing back the username and password if it had them. * marshallers/nm-marshal.list - Add some new types for activation request objects * src/nm-activation-request.c src/nm-activation-request.h - (get_secrets_cb): pass the caller type in the signal - (nm_act_request_request_connection_secrets): take a caller type, so that GetSecrets() reply handlers know who asked for the secrets in the first place; use secret hints too so the settings service can figure out exactly what NM wants (ie, PIN or the PPP password) * src/ppp-manager/nm-ppp-manager.c src/ppp-manager/nm-ppp-manager.h - (impl_ppp_manager_need_secrets): nm_connection_need_secrets() won't detect needed secrets when the secret could be blank, like GSM/CDMA passwords. So always ask for secrets, and send a hint as to what secret we really want. - (nm_ppp_manager_update_secrets): make function more generic by making the device specific class figure out the username and password, and accept an error argument to return back over D-Bus * src/nm-device-wifi.c - (link_timeout_cb, handle_auth_or_fail): update for changes to nm_act_request_request_connection_secrets() - (real_connection_secrets_updated): update for 'caller' changes * src/nm-device.c src/nm-device.h - (connection_secrets_updated_cb, connection_secrets_failed_cb): update for 'caller' changes * src/nm-device-ethernet.c - (real_connection_secrets_updated): update for 'caller' changes and move logic for getting PPPoE username and password here before calling nm_ppp_manager_update_secrets() - (link_timeout_cb, handle_auth_or_fail): update for changes to nm_act_request_request_connection_secrets() * src/nm-cdma-device.c - (real_connection_secrets_updated): pass username and password back to the PPP manager when required * src/nm-gsm-device.c - (enter_pin): send the required secret name to the settings service - (real_connection_secrets_updated): pass username and password back to the PPP manager when required git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3794 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
@@ -311,9 +311,9 @@ nm_act_request_class_init (NMActRequestClass *req_class)
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET (NMActRequestClass, connection_secrets_updated),
|
||||
NULL, NULL,
|
||||
nm_marshal_VOID__OBJECT_POINTER,
|
||||
G_TYPE_NONE, 2,
|
||||
G_TYPE_OBJECT, G_TYPE_POINTER);
|
||||
nm_marshal_VOID__OBJECT_POINTER_UINT,
|
||||
G_TYPE_NONE, 3,
|
||||
G_TYPE_OBJECT, G_TYPE_POINTER, G_TYPE_UINT);
|
||||
|
||||
signals[CONNECTION_SECRETS_FAILED] =
|
||||
g_signal_new ("connection-secrets-failed",
|
||||
@@ -321,9 +321,9 @@ nm_act_request_class_init (NMActRequestClass *req_class)
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET (NMActRequestClass, connection_secrets_failed),
|
||||
NULL, NULL,
|
||||
nm_marshal_VOID__OBJECT_STRING,
|
||||
G_TYPE_NONE, 2,
|
||||
G_TYPE_OBJECT, G_TYPE_STRING);
|
||||
nm_marshal_VOID__OBJECT_STRING_UINT,
|
||||
G_TYPE_NONE, 3,
|
||||
G_TYPE_OBJECT, G_TYPE_STRING, G_TYPE_UINT);
|
||||
|
||||
signals[PROPERTIES_CHANGED] =
|
||||
nm_properties_changed_signal_new (object_class,
|
||||
@@ -371,6 +371,7 @@ device_state_changed (NMDevice *device, NMDeviceState state, gpointer user_data)
|
||||
typedef struct GetSecretsInfo {
|
||||
NMActRequest *req;
|
||||
char *setting_name;
|
||||
RequestSecretsCaller caller;
|
||||
} GetSecretsInfo;
|
||||
|
||||
static void
|
||||
@@ -480,7 +481,8 @@ get_secrets_cb (DBusGProxy *proxy, DBusGProxyCall *call, gpointer user_data)
|
||||
signals[CONNECTION_SECRETS_FAILED],
|
||||
0,
|
||||
priv->connection,
|
||||
info->setting_name);
|
||||
info->setting_name,
|
||||
info->caller);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -511,7 +513,8 @@ get_secrets_cb (DBusGProxy *proxy, DBusGProxyCall *call, gpointer user_data)
|
||||
signals[CONNECTION_SECRETS_UPDATED],
|
||||
0,
|
||||
priv->connection,
|
||||
updated);
|
||||
updated,
|
||||
info->caller);
|
||||
} else {
|
||||
nm_warning ("No secrets updated because not valid settings were received!");
|
||||
}
|
||||
@@ -524,7 +527,10 @@ out:
|
||||
gboolean
|
||||
nm_act_request_request_connection_secrets (NMActRequest *req,
|
||||
const char *setting_name,
|
||||
gboolean request_new)
|
||||
gboolean request_new,
|
||||
RequestSecretsCaller caller,
|
||||
const char *hint1,
|
||||
const char *hint2)
|
||||
{
|
||||
DBusGProxy *proxy;
|
||||
DBusGProxyCall *call;
|
||||
@@ -555,9 +561,15 @@ nm_act_request_request_connection_secrets (NMActRequest *req,
|
||||
}
|
||||
|
||||
/* Empty for now */
|
||||
hints = g_ptr_array_new ();
|
||||
hints = g_ptr_array_sized_new (2);
|
||||
|
||||
if (hint1)
|
||||
g_ptr_array_add (hints, g_strdup (hint1));
|
||||
if (hint2)
|
||||
g_ptr_array_add (hints, g_strdup (hint2));
|
||||
|
||||
info->req = req;
|
||||
info->caller = caller;
|
||||
call = dbus_g_proxy_begin_call_with_timeout (proxy, "GetSecrets",
|
||||
get_secrets_cb,
|
||||
info,
|
||||
|
Reference in New Issue
Block a user