88
89
static void destroy(void);
90
91
/* Fixup functions to be defined later */
91
static int fixup_http_query(void** param, int param_no);
92
static int fixup_free_http_query(void** param, int param_no);
92
static int fixup_http_query_get(void** param, int param_no);
93
static int fixup_free_http_query_get(void** param, int param_no);
94
static int fixup_http_query_post(void** param, int param_no);
95
static int fixup_free_http_query_post(void** param, int param_no);
97
/* Wrappers for http_query to be defined later */
98
static int w_http_query(struct sip_msg* _m, char* _url, char* _result);
99
static int w_http_query_post(struct sip_msg* _m, char* _url, char* _post, char* _result);
94
101
/* forward function */
95
102
int utils_forward(struct sip_msg *msg, int id, int proto);
97
104
/* Exported functions */
98
105
static cmd_export_t cmds[] = {
99
{"http_query", (cmd_function)http_query, 2, fixup_http_query,
100
fixup_free_http_query,
106
{"http_query", (cmd_function)w_http_query, 2, fixup_http_query_get,
107
fixup_free_http_query_get,
108
REQUEST_ROUTE|ONREPLY_ROUTE|FAILURE_ROUTE|BRANCH_ROUTE},
109
{"http_query", (cmd_function)w_http_query_post, 3, fixup_http_query_post,
110
fixup_free_http_query_post,
101
111
REQUEST_ROUTE|ONREPLY_ROUTE|FAILURE_ROUTE|BRANCH_ROUTE},
102
112
{"xcap_auth_status", (cmd_function)xcap_auth_status, 2, fixup_pvar_pvar,
103
113
fixup_free_pvar_pvar, REQUEST_ROUTE},
319
329
* Fix http_query params: url (string that may contain pvars) and
320
330
* result (writable pvar).
322
static int fixup_http_query(void** param, int param_no)
325
return fixup_spve_null(param, 1);
329
if (fixup_pvar_null(param, 1) != 0) {
330
LM_ERR("failed to fixup result pvar\n");
333
if (((pv_spec_t *)(*param))->setf == NULL) {
334
LM_ERR("result pvar is not writeble\n");
340
LM_ERR("invalid parameter number <%d>\n", param_no);
345
* Free http_query params.
347
static int fixup_free_http_query(void** param, int param_no)
350
LM_WARN("free function has not been defined for spve\n");
355
return fixup_free_pvar_null(param, 1);
358
LM_ERR("invalid parameter number <%d>\n", param_no);
332
static int fixup_http_query_get(void** param, int param_no)
335
return fixup_spve_null(param, 1);
339
if (fixup_pvar_null(param, 1) != 0) {
340
LM_ERR("failed to fixup result pvar\n");
343
if (((pv_spec_t *)(*param))->setf == NULL) {
344
LM_ERR("result pvar is not writeble\n");
350
LM_ERR("invalid parameter number <%d>\n", param_no);
355
* Free http_query params.
357
static int fixup_free_http_query_get(void** param, int param_no)
360
LM_WARN("free function has not been defined for spve\n");
365
return fixup_free_pvar_null(param, 1);
368
LM_ERR("invalid parameter number <%d>\n", param_no);
374
* Fix http_query params: url (string that may contain pvars) and
375
* result (writable pvar).
377
static int fixup_http_query_post(void** param, int param_no)
379
if ((param_no == 1) || (param_no == 2)) {
380
return fixup_spve_null(param, 1);
384
if (fixup_pvar_null(param, 1) != 0) {
385
LM_ERR("failed to fixup result pvar\n");
388
if (((pv_spec_t *)(*param))->setf == NULL) {
389
LM_ERR("result pvar is not writeble\n");
395
LM_ERR("invalid parameter number <%d>\n", param_no);
400
* Free http_query params.
402
static int fixup_free_http_query_post(void** param, int param_no)
404
if ((param_no == 1) || (param_no == 2)) {
405
LM_WARN("free function has not been defined for spve\n");
410
return fixup_free_pvar_null(param, 1);
413
LM_ERR("invalid parameter number <%d>\n", param_no);
418
* Wrapper for HTTP-Query (GET)
420
static int w_http_query(struct sip_msg* _m, char* _url, char* _result) {
421
return http_query(_m, _url, _result, NULL);
426
* Wrapper for HTTP-Query (POST-Variant)
428
static int w_http_query_post(struct sip_msg* _m, char* _url, char* _post, char* _result) {
429
return http_query(_m, _url, _result, _post);
364
433
* \brief checks precondition, switch, filter and forwards msg if necessary