Fix "no plugins" detection, rename HelloWorld API
authorManuel Bachmann <manuel.bachmann@iot.bzh>
Tue, 22 Dec 2015 08:25:00 +0000 (09:25 +0100)
committerManuel Bachmann <manuel.bachmann@iot.bzh>
Tue, 22 Dec 2015 08:25:00 +0000 (09:25 +0100)
afb-daemon now gracefully exits if no plugins are present.

HelloWorld's API has been renamed to "hello".

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
plugins/samples/HelloWorld.c
src/rest-api.c

index 870225b..2f6dc4d 100644 (file)
@@ -88,7 +88,7 @@ PUBLIC AFB_plugin *pluginRegister () {
     AFB_plugin *plugin = malloc (sizeof (AFB_plugin));
     plugin->type  = AFB_PLUGIN_JSON;
     plugin->info  = "Application Framework Binder Service";
-    plugin->prefix= "dbus";        
+    plugin->prefix= "hello";
     plugin->apis  = pluginApis;
     return (plugin);
 };
index 0a31e20..c1a20f1 100644 (file)
@@ -573,9 +573,11 @@ void initPlugins(AFB_session *session) {
     afbJsonType = json_object_new_string (AFB_MSG_JTYPE);
     int i = 0;
 
+    plugins = (AFB_plugin **) malloc (sizeof(AFB_plugin));
+
     if ((dir = opendir(session->config->plugins)) == NULL) {
-        fprintf(stderr, "Could not open plugin directory=%s\n", session->config->plugins);
-        return;
+        fprintf(stderr, "Could not open plugin directory [%s], exiting...\n", session->config->plugins);
+        exit (-1);
     }
 
     while ((pluginDir = readdir(dir)) != NULL) {
@@ -601,10 +603,15 @@ void initPlugins(AFB_session *session) {
         plugins[i] = (**pluginRegisterFct)();
         i++;
     }
-    plugins[i++] = NULL;
+    plugins[i] = NULL;
 
     closedir (dir);
-    
+
+    if (plugins[0] == NULL) {
+        fprintf(stderr, "No plugins found, afb-daemon is unlikely to work in this configuration, exiting...\n");
+        exit (-1);
+    }
+
     // complete plugins and save them within current sessions    
     session->plugins = RegisterJsonPlugins(plugins);
 }