ecore_con: avoid potential crash during shutdown due to Ecore_Event queue.
authorCedric BAIL <cedric@osg.samsung.com>
Fri, 10 Mar 2017 00:10:00 +0000 (16:10 -0800)
committerCedric BAIL <cedric@osg.samsung.com>
Fri, 10 Mar 2017 00:17:58 +0000 (16:17 -0800)
src/lib/ecore_con/ecore_con_legacy.c
src/lib/ecore_con/ecore_con_url.c

index bfff6d9..47c436b 100644 (file)
@@ -218,6 +218,20 @@ ecore_con_legacy_shutdown(void)
    EINA_LIST_FREE(_ecore_con_lookups, lookup_ctx)
      ecore_thread_cancel(lookup_ctx->thread);
 
+   ecore_event_type_flush(ECORE_CON_EVENT_CLIENT_ADD,
+                          ECORE_CON_EVENT_CLIENT_DEL,
+                          ECORE_CON_EVENT_SERVER_ADD,
+                          ECORE_CON_EVENT_SERVER_DEL,
+                          ECORE_CON_EVENT_CLIENT_DATA,
+                          ECORE_CON_EVENT_SERVER_DATA,
+                          ECORE_CON_EVENT_CLIENT_WRITE,
+                          ECORE_CON_EVENT_SERVER_WRITE,
+                          ECORE_CON_EVENT_CLIENT_ERROR,
+                          ECORE_CON_EVENT_SERVER_ERROR,
+                          ECORE_CON_EVENT_PROXY_BIND,
+                          ECORE_CON_EVENT_SERVER_UPGRADE,
+                          ECORE_CON_EVENT_CLIENT_UPGRADE);
+
    ecore_con_socks_shutdown();
    if (!_ecore_con_event_count) ecore_con_mempool_shutdown();
    else WRN("%d events still exist, leaking ecore_con mempools", _ecore_con_event_count);
index 557e2c8..8c03176 100644 (file)
@@ -73,6 +73,11 @@ ecore_con_url_shutdown(void)
    if (_init_count) return _init_count;
    EINA_LIST_FREE(_url_con_url_list, url_con_url)
      ecore_con_url_free(url_con_url);
+
+   ecore_event_type_flush(ECORE_CON_EVENT_URL_DATA,
+                          ECORE_CON_EVENT_URL_COMPLETE,
+                          ECORE_CON_EVENT_URL_PROGRESS);
+
    _c_shutdown();
    emile_shutdown(); /* no emile_cipher_shutdown(), handled here */
    ecore_con_shutdown();