# HG changeset patch # User Mark Doliner # Date 1099543257 0 # Node ID 0dbeb6d1e258781639ca2dfef47471c854598b38 # Parent e05a325ac5a60788059a4ba1663667ab799a6b8d [gaim-migrate @ 11236] Some PRPL callbacks are required or Gaim go boom. committer: Tailor Script diff -r e05a325ac5a6 -r 0dbeb6d1e258 src/plugin.c --- a/src/plugin.c Thu Nov 04 04:10:32 2004 +0000 +++ b/src/plugin.c Thu Nov 04 04:40:57 2004 +0000 @@ -246,8 +246,21 @@ plugin->info->major_version != GAIM_MAJOR_VERSION || plugin->info->minor_version > GAIM_MINOR_VERSION) { - gaim_debug(GAIM_DEBUG_ERROR, "plugins", "%s is unloadable: API version mismatch %d.%d.x (need %d.%d.x)\n", - plugin->path, plugin->info->major_version, plugin->info->minor_version, GAIM_MAJOR_VERSION, GAIM_MINOR_VERSION); + gaim_debug_error("plugins", "%s is unloadable: API version mismatch %d.%d.x (need %d.%d.x)\n", + plugin->path, plugin->info->major_version, plugin->info->minor_version, + GAIM_MAJOR_VERSION, GAIM_MINOR_VERSION); + gaim_plugin_destroy(plugin); + return NULL; + } + + /* If plugin is a PRPL, make sure it implements the required functions */ + if ((plugin->info->type == GAIM_PLUGIN_PROTOCOL) && ( + (GAIM_PLUGIN_PROTOCOL_INFO(plugin)->list_icon == NULL) || + (GAIM_PLUGIN_PROTOCOL_INFO(plugin)->login == NULL) || + (GAIM_PLUGIN_PROTOCOL_INFO(plugin)->close == NULL))) + { + gaim_debug_error("plugins", "%s is unloadable: Does not implement all required functions\n", + plugin->path); gaim_plugin_destroy(plugin); return NULL; }