aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSébastien Bianti <sebastien.bianti@linux.intel.com>2012-04-18 15:27:48 +0200
committerMarcel Holtmann <marcel@holtmann.org>2012-04-18 17:29:57 +0200
commit975c6ac6cf47837269f2fb29b1c3dcf4a17b63b0 (patch)
tree2ce862dc6ae9e359b34c1e166886f0c2bc2b0925
parenta606d1f86190bc4bbf4bdf639c1329a3c47f8a48 (diff)
downloadmmsd-975c6ac6cf47837269f2fb29b1c3dcf4a17b63b0.tar.gz
service: bearer activity needs to be checked
Because failure and requeing reason can be network lost, and we should wait for recovery.
-rw-r--r--src/service.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/service.c b/src/service.c
index f25e656..907b581 100644
--- a/src/service.c
+++ b/src/service.c
@@ -1662,17 +1662,22 @@ int mms_service_set_bearer_handler(struct mms_service *service,
return 0;
}
-static void deactivate_bearer(struct mms_service *service)
+static inline gboolean bearer_is_active(struct mms_service *service)
{
- DBG("service %p", service);
-
if (service->bearer_setup == TRUE)
- return;
-
- if (service->bearer_active == FALSE)
- return;
+ return FALSE;
if (service->bearer_handler == NULL)
+ return FALSE;
+
+ return service->bearer_active;
+}
+
+static void deactivate_bearer(struct mms_service *service)
+{
+ DBG("service %p", service);
+
+ if (bearer_is_active(service) == FALSE)
return;
DBG("service %p", service);
@@ -1961,6 +1966,9 @@ static void process_request_queue(struct mms_service *service)
return;
while (1) {
+ if (bearer_is_active(service) == FALSE)
+ return;
+
request = g_queue_pop_head(service->request_queue);
if (request == NULL)
break;