Module: sip-router Branch: master Commit: 6e00d85416e3138d152a280358e79693d738e14a URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=6e00d854...
Author: Ovidiu Sas osas@voipembedded.com Committer: Ovidiu Sas osas@voipembedded.com Date: Thu Jun 24 10:28:52 2010 -0400
modules_k/dialog: rpc interface fixes
- force to string all rpc parameters - enable optianal parameters for profile specific rpc commands
---
modules_k/dialog/dialog.c | 39 +++++++++++++-------------------------- 1 files changed, 13 insertions(+), 26 deletions(-)
diff --git a/modules_k/dialog/dialog.c b/modules_k/dialog/dialog.c index 458201c..cc33f39 100644 --- a/modules_k/dialog/dialog.c +++ b/modules_k/dialog/dialog.c @@ -1183,7 +1183,7 @@ static void internal_rpc_print_single_dlg(rpc_t *rpc, void *c, int with_context) struct dlg_cell *dlg; unsigned int h_entry;
- if (rpc->scan(c, "SS", &callid, &from_tag) < 2) return; + if (rpc->scan(c, ".S.S", &callid, &from_tag) < 2) return;
h_entry = core_hash( &callid, &from_tag, d_table->size); d_entry = &(d_table->entries[h_entry]); @@ -1303,15 +1303,9 @@ static const char *rpc_end_dlg_entry_id_doc[2] = { static const char *rpc_profile_get_size_doc[2] = { "Returns the number of dialogs belonging to a profile", 0 }; -static const char *rpc_profile_w_val_get_size_doc[2] = { - "Returns the number of dialogs belonging to a profile with value", 0 -}; static const char *rpc_profile_print_dlgs_doc[2] = { "Lists all the dialogs belonging to a profile", 0 }; -static const char *rpc_profile_w_val_print_dlgs_doc[2] = { - "Lists all the dialogs belonging to a profile with value", 0 -}; static const char *rpc_dlg_bridge_doc[2] = { "Bridge two SIP addresses in a call using INVITE(hold)-REFER-BYE mechanism:\ to, from, [outbound SIP proxy]", 0 @@ -1339,31 +1333,26 @@ static void rpc_end_dlg_entry_id(rpc_t *rpc, void *c) { } static void rpc_profile_get_size(rpc_t *rpc, void *c) { str profile_name = {NULL,0}; - - if (rpc->scan(c, "S", &profile_name) < 1) return; - internal_rpc_profile_get_size(rpc, c, &profile_name, NULL); - return; -} -static void rpc_profile_w_val_get_size(rpc_t *rpc, void *c) { - str profile_name = {NULL,0}; str value = {NULL,0};
- if (rpc->scan(c, "SS", &profile_name, &value) < 2) return; - internal_rpc_profile_get_size(rpc, c, &profile_name, &value); + if (rpc->scan(c, ".S", &profile_name) < 1) return; + if (rpc->scan(c, "*.S", &value) > 0) { + internal_rpc_profile_get_size(rpc, c, &profile_name, &value); + } else { + internal_rpc_profile_get_size(rpc, c, &profile_name, NULL); + } return; } static void rpc_profile_print_dlgs(rpc_t *rpc, void *c) { str profile_name = {NULL,0}; - - if (rpc->scan(c, "S", &profile_name) < 1) return; - internal_rpc_profile_print_dlgs(rpc, c, &profile_name, NULL); -} -static void rpc_profile_w_val_print_dlgs(rpc_t *rpc, void *c) { - str profile_name = {NULL,0}; str value = {NULL,0};
- if (rpc->scan(c, "SS", &profile_name, &value) < 2) return; - internal_rpc_profile_print_dlgs(rpc, c, &profile_name, &value); + if (rpc->scan(c, ".S", &profile_name) < 1) return; + if (rpc->scan(c, "*.S", &value) > 0) { + internal_rpc_profile_print_dlgs(rpc, c, &profile_name, &value); + } else { + internal_rpc_profile_print_dlgs(rpc, c, &profile_name, NULL); + } return; } static void rpc_dlg_bridge(rpc_t *rpc, void *c) { @@ -1381,9 +1370,7 @@ static rpc_export_t rpc_methods[] = { {"dlg.dlg_list", rpc_print_dlg, rpc_print_dlg_doc, 0}, {"dlg.end_dlg", rpc_end_dlg_entry_id, rpc_end_dlg_entry_id_doc, 0}, {"dlg.profile_get_size", rpc_profile_get_size, rpc_profile_get_size_doc, 0}, - {"dlg.profile_w_value_get_size", rpc_profile_w_val_get_size, rpc_profile_w_val_get_size_doc, 0}, {"dlg.profile_list", rpc_profile_print_dlgs, rpc_profile_print_dlgs_doc, 0}, - {"dlg.profile_w_value_list", rpc_profile_w_val_print_dlgs, rpc_profile_w_val_print_dlgs_doc, 0}, {"dlg.bridge_dlg", rpc_dlg_bridge, rpc_dlg_bridge_doc, 0}, {0, 0, 0, 0} };