|
@@ -25,6 +25,7 @@
|
|
#include "dlist.h"
|
|
#include "dlist.h"
|
|
#include "ucontact.h"
|
|
#include "ucontact.h"
|
|
#include "udomain.h"
|
|
#include "udomain.h"
|
|
|
|
+#include "bin_utils.h"
|
|
|
|
|
|
static const char* ul_rpc_dump_doc[2] = {"Dump SCSCF user location tables", 0 };
|
|
static const char* ul_rpc_dump_doc[2] = {"Dump SCSCF user location tables", 0 };
|
|
static const char* ul_rpc_showimpu_doc[2] = {"Dump SCSCF IMPU information", 0 };
|
|
static const char* ul_rpc_showimpu_doc[2] = {"Dump SCSCF IMPU information", 0 };
|
|
@@ -90,11 +91,11 @@ static void ul_rpc_show_impu(rpc_t* rpc, void* ctx) {
|
|
}
|
|
}
|
|
|
|
|
|
ims_subscription* subscription = impu_rec->s;
|
|
ims_subscription* subscription = impu_rec->s;
|
|
- lock_get(subscription->lock);
|
|
|
|
|
|
+ lock_ims_subscription(subscription);
|
|
//add subscription data
|
|
//add subscription data
|
|
if (rpc->struct_add(sh, "S{", "impi", &subscription->private_identity, "service profiles", &sph) < 0) {
|
|
if (rpc->struct_add(sh, "S{", "impi", &subscription->private_identity, "service profiles", &sph) < 0) {
|
|
rpc->fault(ctx, 500, "Internal error adding impu subscription data");
|
|
rpc->fault(ctx, 500, "Internal error adding impu subscription data");
|
|
- lock_release(subscription->lock);
|
|
|
|
|
|
+ unlock_ims_subscription(subscription);
|
|
unlock_udomain(domain, &impu);
|
|
unlock_udomain(domain, &impu);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
@@ -104,13 +105,13 @@ static void ul_rpc_show_impu(rpc_t* rpc, void* ctx) {
|
|
sprintf(numstr, "%d", i + 1);
|
|
sprintf(numstr, "%d", i + 1);
|
|
if (rpc->struct_add(sph, "{", numstr, &sdh) < 0) {
|
|
if (rpc->struct_add(sph, "{", numstr, &sdh) < 0) {
|
|
rpc->fault(ctx, 500, "Internal error adding impu subscription detail data");
|
|
rpc->fault(ctx, 500, "Internal error adding impu subscription detail data");
|
|
- lock_release(subscription->lock);
|
|
|
|
|
|
+ unlock_ims_subscription(subscription);
|
|
unlock_udomain(domain, &impu);
|
|
unlock_udomain(domain, &impu);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
if (rpc->struct_add(sdh, "{", "impus", &spi) < 0) {
|
|
if (rpc->struct_add(sdh, "{", "impus", &spi) < 0) {
|
|
rpc->fault(ctx, 500, "Internal error adding impu subscription data");
|
|
rpc->fault(ctx, 500, "Internal error adding impu subscription data");
|
|
- lock_release(subscription->lock);
|
|
|
|
|
|
+ unlock_ims_subscription(subscription);
|
|
unlock_udomain(domain, &impu);
|
|
unlock_udomain(domain, &impu);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
@@ -119,14 +120,14 @@ static void ul_rpc_show_impu(rpc_t* rpc, void* ctx) {
|
|
sprintf(numstr, "%d", j + 1);
|
|
sprintf(numstr, "%d", j + 1);
|
|
if (rpc->struct_add(spi, "S", numstr, &subscription->service_profiles[i].public_identities[j].public_identity) < 0) {
|
|
if (rpc->struct_add(spi, "S", numstr, &subscription->service_profiles[i].public_identities[j].public_identity) < 0) {
|
|
rpc->fault(ctx, 500, "Internal error adding impu subscription detail data");
|
|
rpc->fault(ctx, 500, "Internal error adding impu subscription detail data");
|
|
- lock_release(subscription->lock);
|
|
|
|
|
|
+ unlock_ims_subscription(subscription);
|
|
unlock_udomain(domain, &impu);
|
|
unlock_udomain(domain, &impu);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- lock_release(subscription->lock);
|
|
|
|
|
|
+ unlock_ims_subscription(subscription);
|
|
|
|
|
|
//add contact data
|
|
//add contact data
|
|
if (rpc->struct_add(ah, "{", "contacts", &ch) < 0) {
|
|
if (rpc->struct_add(ah, "{", "contacts", &ch) < 0) {
|