On Sat, 2010-11-20 at 15:48 +0300, Andrey Borzenkov wrote: > On Tue, Mar 2, 2010 at 8:34 PM, Andrey Borzenkov <[email protected]> wrote: > > On Tuesday 02 of March 2010 10:14:09 Dan Williams wrote: > >> On Sat, 2010-02-27 at 23:39 +0300, Andrey Borzenkov wrote: > >> > Using NM 0.8 + nm-applet 0.8 I hit the following situation - if > >> > ->update plugin method fails (for whatever reason - e.g. plugin is > >> > not able to create necessary file) - no error is returned to user. > >> > Error is correctly returned if creation of new system connection > >> > fails. > >> > > >> > I start nm-connection-editor and select system connection to > >> > modify. I correctly get authentication request and am able to > >> > modify connection (and save changes if no errors happened). But if > >> > there are errors inside of plugin during updating of connection > >> > settings, very funny situation results - logical state of NM is > >> > updated (i.e. if I start n-c-e again, I see my changes) but state > >> > in files on permanent storage is not updated, meaning restarting > >> > NM show again previous configuration. > >> > > >> > I verified that plugin really returns error, error is correctly set > >> > and plugin should be calling callback (in this case > >> > con_update_cb). This unfortunately pretty much ends my ability to > >> > debug it further - I am not good at D-Bus internals. > >> > >> So the flow *does* get to nm-sysconfig-connection.c's con_update_cb() > >> function, > > > > Yes > > > >> and the error is valid in that function? > > > > Yes > > > >> If you add a > >> g_message/fprintf of error->message there is that valid too? > >> > > > > update: DEBUG: /etc/sysconfig/network-scripts/ifcfg-eth0 ERROR ifcfg- > > mdv: DHCP_CLIENT_ID is not supported > > con_update_cb: DEBUG: connection error ifcfg-mdv: DHCP_CLIENT_ID is not > > supported > > > > > > Sorry for reviving old thread, but it is still valid in 0.8.2. So far > there are two separate issues associated with it. > > 1) if plugin fails to write connection to stable store (for whatever > reasons) NM is left with old, cached, connection that was received fro > client. It makes impression that connection update worked (and it even > will work for as long as either NM is restarted or connection is > re-read again from disk). The reason is, > src/system-settings/nm-sysconfig-connection.c:pk_update_cb() first > updates in memory and then calls to save new definition. It is even > documented in comments :) > > /* Update our settings internally so the update() call will save the > new > * ones. > > But if ->update fails, settings are not rolled back. > > It could be possible; we could add old_connection field to PolkitCall > and use it to rollback in con_update_cb. Any potential issues > associated with it?
Yeah, we could do that, and hopefully return an error to the client that called update() in the first place. > 2) NM core does send proper error via D-Bus to nm-connection-editor, > but it simply does not have code to display them. On update it finally > calls connection_updated_cb() and it does not display anything (nor is > any error displayed on callback chain). Yeah, we should do better here. I thought we had an error dialog that popped up for stuff like this? The code there is somewhat convoluted, but ideally we'd notify the user that an error occurred. Dan _______________________________________________ networkmanager-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/networkmanager-list
