From: Daniel Wagner <daniel.wag...@bmw-carit.de>

The network_probe() function will be called several times until it
creates successfuly the service object.

In the case of the oFono plugin, the connman_device_add_network() is
called after the driver has been registered to the network. Therefore
the network->driver has been set but no device yet.
__connman_service_create_from_network() returns -EINVAL because
the device is not yet set.

The next call on network_probe() will bail out on 'if (network->drive
!= NULL) return -EALREADY;' so we have to reset it in the first round.
---
 src/network.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/src/network.c b/src/network.c
index 40ab8aa..1dc12fe 100644
--- a/src/network.c
+++ b/src/network.c
@@ -162,8 +162,10 @@ static int network_probe(struct connman_network *network)
        case CONNMAN_NETWORK_TYPE_WIFI:
        case CONNMAN_NETWORK_TYPE_WIMAX:
                network->driver = driver;
-               if (__connman_service_create_from_network(network) == NULL)
+               if (__connman_service_create_from_network(network) == NULL) {
+                       network->driver = NULL;
                        return -EINVAL;
+               }
        }
 
        return 0;
-- 
1.7.6

_______________________________________________
connman mailing list
connman@connman.net
http://lists.connman.net/listinfo/connman

Reply via email to