Hi Martin, > I have done some investigation on bug > 1558(https://bugzilla.moblin.org/show_bug.cgi?id=1558), and found the root > cause of the bug is that when remove the connection, ConnMan does not remove > the gateway from gateway_list, so next time enable the connection, the > gateway is thought has been set, so the Route table can be set properly, that > causes the network can not work. I have worked out a patch to fix the bug. > Please review it. Any comments are welcome. > > diff --git a/src/connection.c b/src/connection.c > index 79890dc..8da8012 100644 > --- a/src/connection.c > +++ b/src/connection.c > @@ -499,7 +499,7 @@ done: > static void connection_remove(struct connman_element *element) > { > const char *gateway = NULL; > - > + struct gateway_data *data; > DBG("element %p name %s", element, element->name); > > unregister_interface(element); > @@ -511,7 +511,12 @@ static void connection_remove(struct connman_element > *element) > > if (gateway == NULL) > return; > - > + > + data = find_gateway(element->index, gateway); > + if (data == NULL) > + return; > + gateway_list = g_slist_remove(gateway_list, data); > + > connman_element_set_enabled(element, FALSE); > emit_default_signal(element);
I have to think about this patch a little bit since we should get this via RTNL and then ConnMan should remove the gateway details. So we might have a race condition here. Patch looks good (besides coding style issues), but I need to be sure we don't cover up a different issue here. Regards Marcel _______________________________________________ connman mailing list [email protected] https://lists.moblin.org/mailman/listinfo/connman
