/** * init module function */ static int mod_init(void) { bind_pua_t bind_pua; LM_DBG("initializing\n"); memset (&pua_rpc_api, 0, sizeof(pua_api_t)); bind_pua= (bind_pua_t)find_export("bind_pua", 1,0); if (!bind_pua) { LM_ERR("can't find pua\n"); return -1; } if (bind_pua(&pua_rpc_api) < 0) { LM_ERR("can't bind pua\n"); return -1; } if (pua_rpc_api.send_publish == NULL) { LM_ERR("could not import send_publish\n"); return -1; } if (pua_rpc_api.register_puacb(MI_ASYN_PUBLISH, pua_rpc_publish_callback, NULL) < 0) { LM_ERR("could not register callback\n"); return -1; } return 0; }
/** * init module function */ static int mod_init(void) { bind_pua_t bind_pua; if(presence_server.s) presence_server.len = strlen(presence_server.s); bind_pua= (bind_pua_t)find_export("bind_pua", 1,0); if (!bind_pua) { LM_ERR("Can't bind pua (check if pua module is loaded)\n"); return -1; } if (bind_pua(&pua) < 0) { LM_ERR("Can't bind pua\n"); return -1; } if(pua.send_publish == NULL) { LM_ERR("Could not import send_publish\n"); return -1; } pua_send_publish= pua.send_publish; if(pua.send_subscribe == NULL) { LM_ERR("Could not import send_subscribe\n"); return -1; } pua_send_subscribe= pua.send_subscribe; if(pua.register_puacb(MI_ASYN_PUBLISH, mi_publ_rpl_cback, NULL)< 0) { LM_ERR("Could not register callback\n"); return -1; } return 0; }
/** * init module function */ static int mod_init(void) { load_tm_f load_tm; bind_pua_t bind_pua; bind_xmpp_t bind_xmpp; bind_libxml_t bind_libxml; libxml_api_t libxml_api; /* check if compulsory parameter server_address is set */ if(server_address.s== NULL) { LM_ERR("compulsory 'server_address' parameter not set!"); return -1; } server_address.len= strlen(server_address.s); if(presence_server.s) presence_server.len = strlen(presence_server.s); /* import the TM auto-loading function */ if((load_tm=(load_tm_f)find_export("load_tm", 0, 0))==NULL) { LM_ERR("can't import load_tm\n"); return -1; } /* let the auto-loading function load all TM stuff */ if(load_tm(&tmb)==-1) { LM_ERR("can't load tm functions\n"); return -1; } /* bind libxml wrapper functions */ if((bind_libxml= (bind_libxml_t)find_export("bind_libxml_api", 1, 0))== NULL) { LM_ERR("can't import bind_libxml_api\n"); return -1; } if(bind_libxml(&libxml_api)< 0) { LM_ERR("can not bind libxml api\n"); return -1; } XMLNodeGetAttrContentByName= libxml_api.xmlNodeGetAttrContentByName; XMLDocGetNodeByName= libxml_api.xmlDocGetNodeByName; XMLNodeGetNodeByName= libxml_api.xmlNodeGetNodeByName; XMLNodeGetNodeContentByName= libxml_api.xmlNodeGetNodeContentByName; if(XMLNodeGetAttrContentByName== NULL || XMLDocGetNodeByName== NULL || XMLNodeGetNodeByName== NULL || XMLNodeGetNodeContentByName== NULL) { LM_ERR("libxml wrapper functions could not be bound\n"); return -1; } /* bind xmpp */ bind_xmpp= (bind_xmpp_t)find_export("bind_xmpp", 0,0); if (!bind_xmpp) { LM_ERR("Can't bind xmpp\n"); return -1; } if(bind_xmpp(&xmpp_api)< 0) { LM_ERR("Can't bind xmpp\n"); return -1; } if(xmpp_api.xsubscribe== NULL) { LM_ERR("Could not import xsubscribe from xmpp\n"); return -1; } xmpp_subscribe= xmpp_api.xsubscribe; if(xmpp_api.xnotify== NULL) { LM_ERR("Could not import xnotify from xmpp\n"); return -1; } xmpp_notify= xmpp_api.xnotify; if(xmpp_api.xpacket== NULL) { LM_ERR("Could not import xnotify from xmpp\n"); return -1; } xmpp_packet= xmpp_api.xpacket; xmpp_uri_xmpp2sip = xmpp_api.uri_xmpp2sip; xmpp_uri_sip2xmpp = xmpp_api.uri_sip2xmpp; if(xmpp_api.register_callback== NULL) { LM_ERR("Could not import register_callback" " to xmpp\n"); return -1; } if(xmpp_api.register_callback(XMPP_RCV_PRESENCE, pres_Xmpp2Sip, NULL)< 0) { LM_ERR("ERROR while registering callback" " to xmpp\n"); return -1; } /* bind pua */ bind_pua= (bind_pua_t)find_export("bind_pua", 1,0); if (!bind_pua) { LM_ERR("Can't bind pua\n"); return -1; } if (bind_pua(&pua) < 0) { LM_ERR("Can't bind pua\n"); return -1; } if(pua.send_publish == NULL) { LM_ERR("Could not import send_publish\n"); return -1; } pua_send_publish= pua.send_publish; if(pua.send_subscribe == NULL) { LM_ERR("Could not import send_subscribe\n"); return -1; } pua_send_subscribe= pua.send_subscribe; if(pua.is_dialog == NULL) { LM_ERR("Could not import send_subscribe\n"); return -1; } pua_is_dialog= pua.is_dialog; if(pua.register_puacb(XMPP_INITIAL_SUBS, Sipreply2Xmpp, NULL)< 0) { LM_ERR("Could not register callback\n"); return -1; } return 0; }