Module: sip-router Branch: master Commit: efc3f1f5050ea2302952158098d61b457a7c8df1 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=efc3f1f5...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: Sat Jan 15 16:29:02 2011 +0100
xhttp: exported xhttp reply via inter-module api
---
modules/xhttp/api.h | 58 +++++++++++++++++++++++++++++++++++++++++++++ modules/xhttp/xhttp_mod.c | 17 +++++++++++++ 2 files changed, 75 insertions(+), 0 deletions(-)
diff --git a/modules/xhttp/api.h b/modules/xhttp/api.h new file mode 100644 index 0000000..0fc7ee5 --- /dev/null +++ b/modules/xhttp/api.h @@ -0,0 +1,58 @@ +/** + * $Id$ + * + * Copyright (C) 2010 Daniel-Constantin Mierla (asipto.com) + * + * This file is part of kamailio, a free SIP server. + * + * kamailio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version + * + * kamailio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef _XHTTP_API_H_ +#define _XHTTP_API_H_ + +#include "../../sr_module.h" + +typedef int (*xhttp_reply_f)(sip_msg_t *msg, int code, str *reason, + str *ctype, str *body); + +typedef struct xhttp_api { + xhttp_reply_f reply; +} xhttp_api_t; + +typedef int (*bind_xhttp_f)(xhttp_api_t* api); +int bind_xhttp(xhttp_api_t* api); + +/** + * @brief Load the XHTTP API + */ +static inline int xhttp_load_api(xhttp_api_t *api) +{ + bind_xhttp_f bindxhttp; + + bindxhttp = (bind_xhttp_f)find_export("bind_xhttp", 0, 0); + if(bindxhttp == 0) { + LM_ERR("cannot find bind_xhttp\n"); + return -1; + } + if(bindxhttp(api)<0) + { + LM_ERR("cannot bind xhttp api\n"); + return -1; + } + return 0; +} + +#endif diff --git a/modules/xhttp/xhttp_mod.c b/modules/xhttp/xhttp_mod.c index 1c5ff7e..23ac3c4 100644 --- a/modules/xhttp/xhttp_mod.c +++ b/modules/xhttp/xhttp_mod.c @@ -44,6 +44,8 @@ #include "../../mod_fix.h" #include "../../pvar.h"
+#include "api.h" + MODULE_VERSION
static int xhttp_handler(sip_msg_t* msg); @@ -69,6 +71,8 @@ sl_api_t slb; static cmd_export_t cmds[] = { {"xhttp_reply", (cmd_function)w_xhttp_send_reply, 4, fixup_xhttp_reply, 0, REQUEST_ROUTE}, + {"bind_xhttp", (cmd_function)bind_xhttp, + 0, 0, 0, ANY_ROUTE}, {0, 0, 0, 0, 0} };
@@ -486,4 +490,17 @@ static int fixup_xhttp_reply(void** param, int param_no) return 0; }
+/** + * + */ +int bind_xhttp(xhttp_api_t* api) +{ + if (!api) { + ERR("Invalid parameter value\n"); + return -1; + } + api->reply = xhttp_send_reply; + return 0; +} + /** @} */