Module: sip-router
Branch: master
Commit: 6e00d85416e3138d152a280358e79693d738e14a
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=6e00d85…
Author: Ovidiu Sas <osas(a)voipembedded.com>
Committer: Ovidiu Sas <osas(a)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}
};