• Adam Williamson's avatar
    Fix connection to wifi APs from user menu (RH #1628263) · 33ffdd60
    Adam Williamson authored
    In recent Fedora 29, connecting to wifi access points from the
    user menu (top-right menu) does not work. Clicking the 'Connect'
    button just animates it but does nothing else. The logs show an
    error "JS ERROR: Error: Expected type utf8 for Argument
    'specific_object' but got type 'undefined'".
    
    Looking into this, it seems the problem is these uses of the
    `path` property of an NMAccessPoint. NMAccessPoint inherits
    from NMObject, and NMObject *does* have a path property:
    
    https://developer.gnome.org/libnm/stable/NMObject.html#NMObject--path
    
    so at first glance this seems fine. But I poked around a bit
    using libnm via Python (which goes via introspection, just like
    this JS code does), and found that indeed AccessPoint objects
    don't seem to have a `path` property there either.
    
    Looking at the libnm code, this actually makes sense, because
    the property is marked "(skip)":
    
    https://github.com/NetworkManager/NetworkManager/blob/master/libnm/nm-object.c#L1291
    
    and the introspection docs suggest that means it should be left
    out of introspected output:
    
    https://wiki.gnome.org/Projects/GObjectIntrospection/Annotations#Symbol_visibility
    
    I'm a bit concerned that this was only found recently - whereas
    the change to use `.path` in gnome-shell dates from October 2017
    (d71af5e5) and the property has been marked (skip) in NM since
    at least 2016 - but this all seems to add up. The obvious fix is
    to replace use of `.path` with `.get_path()`, which returns the
    path and is *not* marked (skip) and so *is* available via
    introspection. I tested that this works in Python and also did
    a test build of gnome-shell with this change and installed it on
    an affected system, it does seem to fix the bug.
    Signed-off-by: 's avatarAdam Williamson <awilliam@redhat.com>
    33ffdd60
Name
Last commit
Last update
.settings Loading commit data...
browser-plugin Loading commit data...
data Loading commit data...
docs/reference Loading commit data...
js Loading commit data...
man Loading commit data...
meson Loading commit data...
po Loading commit data...
src Loading commit data...
subprojects Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitignore Loading commit data...
.gitmodules Loading commit data...
.project Loading commit data...
COPYING Loading commit data...
HACKING.md Loading commit data...
NEWS Loading commit data...
README.md Loading commit data...
config.h.meson Loading commit data...
gnome-shell.doap Loading commit data...
meson.build Loading commit data...
meson_options.txt Loading commit data...