session: Insert service_entry into service_list
authorDaniel Wagner <daniel.wagner@bmw-carit.de>
Thu, 11 Aug 2011 14:56:18 +0000 (16:56 +0200)
committerDaniel Wagner <daniel.wagner@bmw-carit.de>
Thu, 11 Aug 2011 15:40:52 +0000 (17:40 +0200)
When an element is removed from the list, the element will be passed
to destroy_service_entry() which expects only elements of type struct
service_entry.

src/session.c

index 99fdf3b..f17e284 100644 (file)
@@ -1572,6 +1572,7 @@ static void service_add(struct connman_service *service,
        GSequenceIter *iter_service_list;
        gpointer key, value;
        struct connman_session *session;
+       struct service_entry *entry;
 
        DBG("service %p", service);
 
@@ -1583,9 +1584,14 @@ static void service_add(struct connman_service *service,
                if (service_match(session, service) == FALSE)
                        continue;
 
+               entry = create_service_entry(service, name,
+                                               CONNMAN_SERVICE_STATE_IDLE);
+               if (entry == NULL)
+                       continue;
+
                iter_service_list =
                        g_sequence_insert_sorted(session->service_list,
-                                                       service, sort_services,
+                                                       entry, sort_services,
                                                        session);
 
                g_hash_table_replace(session->service_hash, service,