telephony: Check some flag before active context 49/14649/1
authorguoqiang.liu <guoqiang.liu@archermind.com>
Fri, 27 Dec 2013 06:22:52 +0000 (14:22 +0800)
committerguoqiang.liu <guoqiang.liu@archermind.com>
Thu, 9 Jan 2014 03:42:12 +0000 (11:42 +0800)
Active maybe failed if data_allowed or ps_attached is false, so
check is before actived

When data_allowed is false, connman will start auto connect. if
connman connect 3G service, it will result in service state failure
And it will not connect it next time.

Change-Id: Ibdd9c34fee7a612c1788a364c69550c4f7e79123
Signed-off-by: guoqiang.liu <guoqiang.liu@archermind.com>
plugins/telephony.c

index 57888be..4234a62 100644 (file)
@@ -323,6 +323,7 @@ static int __network_connect(struct connman_network *network)
 {
        struct connman_device *device;
        struct telephony_modem *modem;
+       struct telephony_service *service;
 
        DBG("network %p", network);
 
@@ -334,9 +335,16 @@ static int __network_connect(struct connman_network *network)
        if (modem == NULL)
                return -ENODEV;
 
+       service = modem->s_service;
+       if (service == NULL)
+               return -ENOLINK;
+
        if (modem->powered == FALSE)
                return -ENOLINK;
 
+       if (modem->data_allowed == FALSE || service->ps_attached == FALSE)
+               return -ENOLINK;
+
 /*
        if (modem->online == FALSE)
                return -ENOLINK;