[gupnp-dlna] Fix hang if no backends are available



commit ca60c81123740b602424e59d9a2eaf9c2ab8c31a
Author: Mark Ryan <mark d ryan intel com>
Date:   Wed Sep 11 14:30:32 2013 +0200

    Fix hang if no backends are available
    
    This patch prevents gupnp-dlna from hanging when no meta data extracting
    backends are available.  The problem occurs as the existing code passes a
    value of 0 into g_once_init_leave if a backend cannot be loaded.  You're
    not allowed to do this and as a result load_metadata_backend hangs the
    next time it is called.  The patch fixes the problem by using 1 and 2 to
    indicate failure and success, respectively.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=707909

 libgupnp-dlna/gupnp-dlna-metadata-backend.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)
---
diff --git a/libgupnp-dlna/gupnp-dlna-metadata-backend.c b/libgupnp-dlna/gupnp-dlna-metadata-backend.c
index a19b155..e0754cd 100644
--- a/libgupnp-dlna/gupnp-dlna-metadata-backend.c
+++ b/libgupnp-dlna/gupnp-dlna-metadata-backend.c
@@ -45,7 +45,7 @@ load_metadata_backend (void)
                 GModule *module;
                 gchar *module_path;
                 gpointer get_default_extractor = NULL;
-                gsize loaded = 0;
+                gsize loaded = 1;
 
                 if (!backend)
                         backend = GUPNP_DLNA_DEFAULT_METADATA_BACKEND;
@@ -82,7 +82,7 @@ load_metadata_backend (void)
                 metadata_backend.module = module;
                 metadata_backend.get_default_extractor = get_default_extractor;
                 module = NULL;
-                loaded = 1;
+                loaded = 2;
         fail:
                 g_free (module_path);
                 if (module)
@@ -91,7 +91,7 @@ load_metadata_backend (void)
                 g_once_init_leave (&backend_chosen, loaded);
         }
 
-        return (backend_chosen != 0);
+        return (backend_chosen == 2);
 }
 
 GUPnPDLNAMetadataExtractor *


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]