|
@@ -1666,6 +1666,41 @@ error:
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
+static int rpc_uac_reg_add_node_helper(rpc_t* rpc, void* ctx, reg_uac_t *reg, time_t tn)
|
|
|
+{
|
|
|
+ void* th;
|
|
|
+ str none = {"none", 4};
|
|
|
+
|
|
|
+ /* add entry node */
|
|
|
+ if (rpc->add(ctx, "{", &th) < 0)
|
|
|
+ {
|
|
|
+ rpc->fault(ctx, 500, "Internal error creating rpc");
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ if (rpc->struct_add(th, "SSSSSSSSSdddddd",
|
|
|
+ "l_uuid", ®->l_uuid,
|
|
|
+ "l_username", ®->l_username,
|
|
|
+ "l_domain", ®->l_domain,
|
|
|
+ "r_username", ®->r_username,
|
|
|
+ "r_domain", ®->r_domain,
|
|
|
+ "realm", ®->realm,
|
|
|
+ "auth_username", ®->auth_username,
|
|
|
+ "auth_password", ®->auth_password,
|
|
|
+ "auth_proxy", (reg->auth_proxy.len)?
|
|
|
+ ®->auth_proxy:&none,
|
|
|
+ "expires", (int)reg->expires,
|
|
|
+ "flags", (int)reg->flags,
|
|
|
+ "diff_expires", (int)(reg->timer_expires - tn),
|
|
|
+ "timer_expires", (int)reg->timer_expires,
|
|
|
+ "reg_init", (int)reg->reg_init,
|
|
|
+ "reg_delay", (int)reg->reg_delay
|
|
|
+ )<0) {
|
|
|
+ rpc->fault(ctx, 500, "Internal error adding item");
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static const char* rpc_uac_reg_dump_doc[2] = {
|
|
|
"Dump the contents of user registrations table.",
|
|
|
0
|
|
@@ -1675,8 +1710,6 @@ static void rpc_uac_reg_dump(rpc_t* rpc, void* ctx)
|
|
|
{
|
|
|
int i;
|
|
|
reg_item_t *reg = NULL;
|
|
|
- void* th;
|
|
|
- str none = {"none", 4};
|
|
|
time_t tn;
|
|
|
|
|
|
if(_reg_htable==NULL)
|
|
@@ -1694,33 +1727,9 @@ static void rpc_uac_reg_dump(rpc_t* rpc, void* ctx)
|
|
|
reg = _reg_htable->entries[i].byuuid;
|
|
|
while(reg)
|
|
|
{
|
|
|
- /* add entry node */
|
|
|
- if (rpc->add(ctx, "{", &th) < 0)
|
|
|
- {
|
|
|
- rpc->fault(ctx, 500, "Internal error creating rpc");
|
|
|
- return;
|
|
|
- }
|
|
|
- if(rpc->struct_add(th, "SSSSSSSSSdddddd",
|
|
|
- "l_uuid", ®->r->l_uuid,
|
|
|
- "l_username", ®->r->l_username,
|
|
|
- "l_domain", ®->r->l_domain,
|
|
|
- "r_username", ®->r->r_username,
|
|
|
- "r_domain", ®->r->r_domain,
|
|
|
- "realm", ®->r->realm,
|
|
|
- "auth_username", ®->r->auth_username,
|
|
|
- "auth_password", ®->r->auth_password,
|
|
|
- "auth_proxy", (reg->r->auth_proxy.len)?
|
|
|
- ®->r->auth_proxy:&none,
|
|
|
- "expires", (int)reg->r->expires,
|
|
|
- "flags", (int)reg->r->flags,
|
|
|
- "diff_expires", (int)(reg->r->timer_expires - tn),
|
|
|
- "timer_expires", (int)reg->r->timer_expires,
|
|
|
- "reg_init", (int)reg->r->reg_init,
|
|
|
- "reg_delay", (int)reg->r->reg_delay
|
|
|
- )<0)
|
|
|
+ if (rpc_uac_reg_add_node_helper(rpc, ctx, reg->r, tn)<0)
|
|
|
{
|
|
|
lock_release(&_reg_htable->entries[i].lock);
|
|
|
- rpc->fault(ctx, 500, "Internal error adding item");
|
|
|
return;
|
|
|
}
|
|
|
reg = reg->next;
|
|
@@ -1738,8 +1747,6 @@ static void rpc_uac_reg_info(rpc_t* rpc, void* ctx)
|
|
|
{
|
|
|
int i;
|
|
|
reg_item_t *reg = NULL;
|
|
|
- void* th;
|
|
|
- str none = {"none", 4};
|
|
|
time_t tn;
|
|
|
str attr = {0};
|
|
|
str val = {0};
|
|
@@ -1788,31 +1795,9 @@ static void rpc_uac_reg_info(rpc_t* rpc, void* ctx)
|
|
|
}
|
|
|
|
|
|
if(rval->len==val.len && strncmp(val.s, rval->s, val.len)==0) {
|
|
|
- /* add entry node */
|
|
|
- if (rpc->add(ctx, "{", &th) < 0)
|
|
|
- {
|
|
|
- rpc->fault(ctx, 500, "Internal error creating rpc");
|
|
|
- return;
|
|
|
- }
|
|
|
- if(rpc->struct_add(th, "SSSSSSSSSdddd",
|
|
|
- "l_uuid", ®->r->l_uuid,
|
|
|
- "l_username", ®->r->l_username,
|
|
|
- "l_domain", ®->r->l_domain,
|
|
|
- "r_username", ®->r->r_username,
|
|
|
- "r_domain", ®->r->r_domain,
|
|
|
- "realm", ®->r->realm,
|
|
|
- "auth_username", ®->r->auth_username,
|
|
|
- "auth_password", ®->r->auth_password,
|
|
|
- "auth_proxy", (reg->r->auth_proxy.len)?
|
|
|
- ®->r->auth_proxy:&none,
|
|
|
- "expires", (int)reg->r->expires,
|
|
|
- "flags", (int)reg->r->flags,
|
|
|
- "diff_expires", (int)(reg->r->timer_expires - tn),
|
|
|
- "timer_expires", (int)reg->r->timer_expires
|
|
|
- )<0)
|
|
|
+ if (rpc_uac_reg_add_node_helper(rpc, ctx, reg->r, tn)<0)
|
|
|
{
|
|
|
lock_release(&_reg_htable->entries[i].lock);
|
|
|
- rpc->fault(ctx, 500, "Internal error adding item");
|
|
|
return;
|
|
|
}
|
|
|
lock_release(&_reg_htable->entries[i].lock);
|