diff --git a/app/applets.go b/app/applets.go index 5b235db..a3e2d23 100644 --- a/app/applets.go +++ b/app/applets.go @@ -113,9 +113,13 @@ func (ap *appletPlugins) AddPlugin(peerid string, id plugins.PluginID, bus event pluginsinf, _ := ap.plugins.Load(peerid) peerPlugins := pluginsinf.([]plugins.Plugin) - newp := plugins.Get(id, bus, acn, peerid) - newp.Start() - peerPlugins = append(peerPlugins, newp) - log.Debugf("storing plugin for %v %v", peerid, peerPlugins) - ap.plugins.Store(peerid, peerPlugins) + newp,err := plugins.Get(id, bus, acn, peerid) + if err == nil { + newp.Start() + peerPlugins = append(peerPlugins, newp) + log.Debugf("storing plugin for %v %v", peerid, peerPlugins) + ap.plugins.Store(peerid, peerPlugins) + } else { + log.Errorf("error adding plugin: %v", err) + } } diff --git a/app/plugins/plugin.go b/app/plugins/plugin.go index 2d271fc..be8252b 100644 --- a/app/plugins/plugin.go +++ b/app/plugins/plugin.go @@ -2,6 +2,7 @@ package plugins import ( "cwtch.im/cwtch/event" + "fmt" "git.openprivacy.ca/openprivacy/connectivity" ) @@ -21,13 +22,13 @@ type Plugin interface { } // Get is a plugin factory for the requested plugin -func Get(id PluginID, bus event.Manager, acn connectivity.ACN, onion string) Plugin { +func Get(id PluginID, bus event.Manager, acn connectivity.ACN, onion string) (Plugin, error) { switch id { case CONNECTIONRETRY: - return NewConnectionRetry(bus, onion) + return NewConnectionRetry(bus, onion), nil case NETWORKCHECK: - return NewNetworkCheck(bus, acn) + return NewNetworkCheck(bus, acn), nil } - return nil + return nil, fmt.Errorf("plugin not defined %v", id) }