diff options
author | Sébastien Bianti <sebastien.bianti@linux.intel.com> | 2012-04-18 15:27:48 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2012-04-18 17:29:57 +0200 |
commit | 975c6ac6cf47837269f2fb29b1c3dcf4a17b63b0 (patch) | |
tree | 2ce862dc6ae9e359b34c1e166886f0c2bc2b0925 | |
parent | a606d1f86190bc4bbf4bdf639c1329a3c47f8a48 (diff) | |
download | mmsd-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.c | 22 |
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; |