Skip to content
  • Dan Williams's avatar
    core: don't emit double PropertiesChanged signal for new active connections · f2182fbf
    Dan Williams authored
    When porting to GDBus property change notifications were converted from a
    hash table to a GVariantBuilder.  GVariantBuilder doesn't care about
    duplicated properties in the dict so each g_object_notify() will add
    an additional item with possibly different values:
    
    signal time=1458571005.592811 sender=:1.10 -> destination=(null destination) serial=64451 path=/org/freedesktop/NetworkManager; interface=org.freedesktop.NetworkManager; member=PropertiesChanged
       array [
          dict entry(
             string "ActiveConnections"
             variant             array [
                   object path "/org/freedesktop/NetworkManager/ActiveConnection/19"
                   object path "/org/freedesktop/NetworkManager/ActiveConnection/18"
                   object path "/org/freedesktop/NetworkManager/ActiveConnection/15"
                   object path "/org/freedesktop/NetworkManager/ActiveConnection/0"
                ]
          )
          dict entry(
             string "ActiveConnections"
             variant             array [
                   object path "/org/freedesktop/NetworkManager/ActiveConnection/24"
                   object path "/org/freedesktop/NetworkManager/ActiveConnection/19"
                   object path "/org/freedesktop/NetworkManager/ActiveConnection/18"
                   object path "/org/freedesktop/NetworkManager/ActiveConnection/15"
                   object path "/org/freedesktop/NetworkManager/ActiveConnection/0"
                ]
          )
       ]
    
    Fix that by not emitting notify events for the manager's ActiveConnections
    property until the property has actually been updated in active_connection_add().
    The unexport also isn't required for VPN connections since it will get
    unexported when it's disposed after _internal_activation_failed() gets called.
    f2182fbf