Browse Source

Some fixes for pull request #316

pull/316/head
Frederic-Philippe Metz 9 years ago
parent
commit
9ebd06f40f
3 changed files with 105 additions and 342 deletions
  1. +0
    -2
      daemon/Makefile
  2. +6
    -1
      daemon/main.c
  3. +99
    -339
      daemon/redis.c

+ 0
- 2
daemon/Makefile View File

@ -27,12 +27,10 @@ LDFLAGS+= `pkg-config --libs libpcre`
LDFLAGS+= `pkg-config --libs libcrypto`
LDFLAGS+= `pkg-config --libs openssl`
LDFLAGS+= `pkg-config --libs libevent_pthreads`
LDFLAGS+= `pkg-config --libs`
LDFLAGS+= -lpcap
LDFLAGS+= `pcre-config --libs`
LDFLAGS+= `xmlrpc-c-config client --libs`
LDFLAGS+= -lhiredis
LDFLAGS+= `pkg-config --libs libcurl`
LDFLAGS+= `pkg-config --libs json-glib-1.0`
include ../lib/lib.Makefile


+ 6
- 1
daemon/main.c View File

@ -299,7 +299,7 @@ static void options(int *argc, char ***argv) {
{ "redis-write",'w', 0, G_OPTION_ARG_STRING, &redisps_write, "Connect to Redis write database", "[PW@]IP:PORT/INT" },
{ "redis-num-threads", 0, 0, G_OPTION_ARG_INT, &redis_num_threads, "Number of Redis restore threads", "INT" },
{ "redis-expires", 0, 0, G_OPTION_ARG_INT, &redis_expires, "Expire time in seconds for redis keys", "INT" },
{ "redis-multikey", 0, 0, G_OPTION_ARG_INT, &redis_multikey, "Use multiple redis keys for storing the call (old behaviour) DEPRECATED", "INT" },
{ "redis-multikey", 0, 0, G_OPTION_ARG_NONE, &redis_multikey, "Use multiple redis keys for storing the call (old behaviour) DEPRECATED", "INT" },
{ "no-redis-required", 'q', 0, G_OPTION_ARG_NONE, &no_redis_required, "Start no matter of redis connection state", NULL },
{ "b2b-url", 'b', 0, G_OPTION_ARG_STRING, &b2b_url, "XMLRPC URL of B2B UA" , "STRING" },
{ "log-facility",0, 0, G_OPTION_ARG_STRING, &log_facility_s, "Syslog facility to use for logging", "daemon|local0|...|local7"},
@ -504,6 +504,11 @@ static void init_everything() {
#if !GLIB_CHECK_VERSION(2,32,0)
g_thread_init(NULL);
#endif
#if !(GLIB_CHECK_VERSION(2,36,0))
g_type_init();
#endif
if (!_log_stderr)
openlog("rtpengine", LOG_PID | LOG_NDELAY, _log_facility);
signals();


+ 99
- 339
daemon/redis.c View File

@ -24,6 +24,7 @@
#include "dtls.h"
#include "recording.h"
#include "rtplib.h"
#include "str.h"
#include <stdlib.h>
#include <glib-object.h>
@ -321,8 +322,12 @@ void on_redis_notification(redisAsyncContext *actx, void *reply, void *privdata)
rr->element[2]->len = strlen(rr->element[2]->str);
rlog(LOG_DEBUG,"Redis-Notifier:%s:%d: Processing call with callid: %s\n", rr->element[3]->str, r->db, rr->element[2]->str);
// strip off json- prefix from callid
str_init_len(&callid,rr->element[2]->str+strlen("json-"),strlen(rr->element[2]->str)-strlen("json-"));
// strip off prefix from callid
if (cm->conf.redis_multikey) {
str_init_len(&callid,rr->element[2]->str+strlen("notifier-"),strlen(rr->element[2]->str)-strlen("notifier-"));
} else {
str_init_len(&callid,rr->element[2]->str+strlen("json-"),strlen(rr->element[2]->str)-strlen("json-"));
}
if (cm->conf.redis_multikey && strncmp(rr->element[3]->str,"sadd",4)==0)
redis_restore_call(r, cm, rr->element[2], CT_FOREIGN_CALL);
@ -773,9 +778,8 @@ static void redis_delete_call(struct call *c, struct redis *r) {
}
// stolen from libhiredis
extern redisReply *createReplyObject(int type);
/* Create a reply object */
inline redisReply *createReplyObject(int type) {
INLINE redisReply *createReplyObject(int type) {
redisReply *r = calloc(1,sizeof(*r));
if (r == NULL)
@ -785,25 +789,24 @@ inline redisReply *createReplyObject(int type) {
return r;
}
static void free_func(void* p){
free(p);
}
static int json_get_hash(struct redis_hash *out, struct call* c,
const char *key, const redisReply *which,
unsigned int id)
{
char key_concatted[256];
memset(key_concatted,0,256);
static unsigned int MAXKEYLENGTH = 512;
char key_concatted[MAXKEYLENGTH];
int rc=0;
if (!c)
goto err;
if (id == -1) {
sprintf(key_concatted, "%s-%s",key,which->str);
rc = snprintf(key_concatted, MAXKEYLENGTH, "%s-%s",key,which->str);
} else {
sprintf(key_concatted, "%s-%s-%u",key,which->str,id);
rc = snprintf(key_concatted, MAXKEYLENGTH, "%s-%s-%u",key,which->str,id);
}
if (rc>=MAXKEYLENGTH)
rlog(LOG_ERROR,"Json key too long.");
if (!json_reader_read_member (c->root_reader, key_concatted)) {
@ -811,7 +814,7 @@ static int json_get_hash(struct redis_hash *out, struct call* c,
goto err;
}
out->ht = g_hash_table_new_full(g_str_hash, g_str_equal, free_func, free_func);
out->ht = g_hash_table_new_full(g_str_hash, g_str_equal, free, free);
if (!out->ht)
goto err;
out->rr = 0;
@ -913,9 +916,9 @@ static void redis_destroy_list(struct redis_list *rl) {
}
static void json_destroy_hash(struct redis_hash *rh) {
g_hash_table_destroy(rh->ht);
}
static void json_destroy_list(struct redis_list *rl) {
unsigned int i;
@ -1043,9 +1046,6 @@ static int json_build_list_cb(GQueue *q, struct call *c, const char *key, const
for (int jidx=0; jidx < json_reader_count_elements(c->root_reader); ++jidx) {
if (!json_reader_read_element(c->root_reader,jidx))
rlog(LOG_ERROR,"Element in array not found.");
// if (json_reader_get_type() != G_TYPE_STRING) {
// return -1;
// }
const char* value = json_reader_get_string_value(c->root_reader);
if (!value)
rlog(LOG_ERROR,"String in json not found.");
@ -1685,9 +1685,7 @@ static void json_restore_call(struct redis *r, struct callmaster *m, redisReply
str s ;
const char *err = 0;
int i;
#if !(GLIB_CHECK_VERSION(2,36,0))
g_type_init();
#endif
JsonReader *root_reader =0;
JsonParser *parser =0;
char orig_json_callid[512]; memset(orig_json_callid,0,512);
@ -2057,63 +2055,44 @@ err:
return ret;
}
#define JSON_SET_NSTRING(a,b,c,d) do { \
sprintf(tmp,a,b); \
json_builder_set_member_name (builder, tmp); \
ZERO(tmp); \
snprintf(tmp,sizeof(d), c,d); \
json_builder_add_string_value (builder, tmp); \
ZERO(tmp); \
} while (0)
#define JSON_SET_STRING(a,b,c,d) do { \
sprintf(tmp,a,b); \
json_builder_set_member_name (builder, tmp); \
ZERO(tmp); \
sprintf(tmp,c,d); \
json_builder_add_string_value (builder, tmp); \
ZERO(tmp); \
} while (0)
static int json_update_crypto_params(JsonBuilder *builder, const char *pref, const str *callid,
unsigned int unique_id,
const char *key, const struct crypto_params *p)
{
char tmp[2048]; ZERO(tmp);
char tmp[2048];
if (!p->crypto_suite)
return -1;
sprintf(tmp,"%s-crypto_suite",key);
json_builder_set_member_name (builder, tmp);
ZERO(tmp);
json_builder_add_string_value (builder, p->crypto_suite->name);
sprintf(tmp,"%s-master_key",key);
json_builder_set_member_name (builder, tmp);
ZERO(tmp);
snprintf(tmp,sizeof(p->master_key), "%s",p->master_key);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
sprintf(tmp,"%s-master_salt",key);
json_builder_set_member_name (builder, tmp);
ZERO(tmp);
snprintf(tmp,sizeof(p->master_salt), "%s",p->master_salt);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
sprintf(tmp,"%s-unenc-srtp",key);
json_builder_set_member_name (builder, tmp);
ZERO(tmp);
sprintf(tmp,"%i",p->session_params.unencrypted_srtp);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
sprintf(tmp,"%s-unenc-srtcp",key);
json_builder_set_member_name (builder, tmp);
ZERO(tmp);
sprintf(tmp,"%i",p->session_params.unencrypted_srtcp);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
sprintf(tmp,"%s-unauth-srtp",key);
json_builder_set_member_name (builder, tmp);
ZERO(tmp);
sprintf(tmp,"%i",p->session_params.unauthenticated_srtp);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
JSON_SET_NSTRING("%s-crypto_suite",key,"%s",p->crypto_suite->name);
JSON_SET_NSTRING("%s-master_key",key,"%s",p->master_key);
JSON_SET_NSTRING("%s-master_salt",key,"%s",p->master_salt);
JSON_SET_STRING("%s-unenc-srtp",key,"%i",p->session_params.unencrypted_srtp);
JSON_SET_STRING("%s-unenc-srtcp",key,"%i",p->session_params.unencrypted_srtcp);
JSON_SET_STRING("%s-unauth-srtp",key,"%i",p->session_params.unauthenticated_srtp);
if (p->mki) {
sprintf(tmp,"%s-mki",key);
json_builder_set_member_name (builder, tmp);
ZERO(tmp);
snprintf(tmp,p->mki_len, "%s",p->mki);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
JSON_SET_NSTRING("%s-mki",key,"%s",p->mki);
}
return 0;
@ -2152,15 +2131,9 @@ static void json_update_crypto_context(JsonBuilder *builder, const char *pref, c
if (json_update_crypto_params(builder, pref, callid, unique_id, "", &c->params))
return;
json_builder_set_member_name (builder, "last_index");
sprintf(tmp,"%lu",c->last_index);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
JSON_SET_STRING("%s","last_index","%lu",c->last_index);
JSON_SET_STRING("%s","ssrc","%u",(unsigned) c->ssrc);
json_builder_set_member_name (builder, "ssrc");
sprintf(tmp,"%u",(unsigned) c->ssrc);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
}
static void redis_update_crypto_context(struct redis *r, const char *pref, const str *callid,
@ -2203,10 +2176,7 @@ static void json_update_dtls_fingerprint(JsonBuilder *builder, const char *pref,
json_builder_set_member_name (builder, "hash_func");
json_builder_add_string_value (builder, f->hash_func->name);
json_builder_set_member_name (builder, "fingerprint");
snprintf(tmp,sizeof(f->digest), "%s",f->digest);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
JSON_SET_STRING("%s","fingerprint","%s",f->digest);
}
static void redis_update_dtls_fingerprint(struct redis *r, const char *pref, const str *callid,
@ -2234,86 +2204,32 @@ char* redis_encode_json(struct call *c) {
struct packet_stream *ps;
struct intf_list *il;
struct call_monologue *ml, *ml2;
#if !(GLIB_CHECK_VERSION(2,36,0))
g_type_init();
#endif
JsonBuilder *builder = json_builder_new ();
char tmp[2048]; ZERO(tmp);
json_builder_begin_object (builder);
{
sprintf(tmp,"json-%s",STRSTR(&c->callid));
sprintf(tmp,"json-" STR_FORMAT,STR(&c->callid));
json_builder_set_member_name (builder, tmp);
ZERO(tmp);
json_builder_begin_object (builder);
{
json_builder_set_member_name (builder, "created");
sprintf(tmp,"%ld",(long int) c->created);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "last_signal");
sprintf(tmp,"%ld",(long int) c->last_signal);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "tos");
sprintf(tmp,"%u",(int) c->tos);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "deleted");
sprintf(tmp,"%ld",(long int) c->deleted);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "num_sfds");
sprintf(tmp,"%u",g_queue_get_length(&c->stream_fds));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "num_streams");
sprintf(tmp,"%u", g_queue_get_length(&c->streams));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "num_medias");
sprintf(tmp,"%u", g_queue_get_length(&c->medias));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "num_tags");
sprintf(tmp,"%u", g_queue_get_length(&c->monologues));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "num_maps");
sprintf(tmp,"%u", g_queue_get_length(&c->endpoint_maps));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "ml_deleted");
sprintf(tmp,"%ld", (long int) c->ml_deleted);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "created_from");
sprintf(tmp,"%s",c->created_from);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "created_from_addr");
sprintf(tmp,"%s",sockaddr_print_buf(&c->created_from_addr));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "redis_hosted_db");
sprintf(tmp,"%u",c->redis_hosted_db);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
JSON_SET_STRING("%s","created","%ld",(long int) c->created);
JSON_SET_STRING("%s","last_signal","%ld",(long int) c->last_signal);
JSON_SET_STRING("%s","tos","%u",(int) c->tos);
JSON_SET_STRING("%s","deleted","%ld",(long int) c->deleted);
JSON_SET_STRING("%s","num_sfds","%u",g_queue_get_length(&c->stream_fds));
JSON_SET_STRING("%s","num_streams","%u",g_queue_get_length(&c->streams));
JSON_SET_STRING("%s","num_medias","%u",g_queue_get_length(&c->medias));
JSON_SET_STRING("%s","num_tags","%u",g_queue_get_length(&c->monologues));
JSON_SET_STRING("%s","num_maps","%u",g_queue_get_length(&c->endpoint_maps));
JSON_SET_STRING("%s","ml_deleted","%ld",(long int) c->ml_deleted);
JSON_SET_STRING("%s","created_from","%s",c->created_from);
JSON_SET_STRING("%s","created_from_addr","%s",sockaddr_print_buf(&c->created_from_addr));
JSON_SET_STRING("%s","redis_hosted_db","%u",c->redis_hosted_db);
}
@ -2329,30 +2245,11 @@ char* redis_encode_json(struct call *c) {
json_builder_begin_object (builder);
{
json_builder_set_member_name (builder, "pref_family");
sprintf(tmp,"%s",sfd->local_intf->logical->preferred_family->rfc_name);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "localport");
sprintf(tmp,"%u",sfd->socket.local.port);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "logical_intf");
sprintf(tmp,"%s",STRSTR(&sfd->local_intf->logical->name));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "local_intf_uid");
sprintf(tmp,"%u",sfd->local_intf->unique_id);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "stream");
sprintf(tmp,"%u",sfd->stream->unique_id);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
JSON_SET_STRING("%s","pref_family","%s",sfd->local_intf->logical->preferred_family->rfc_name);
JSON_SET_STRING("%s","localport","%u",sfd->socket.local.port);
JSON_SET_STRING("%s","logical_intf","%s",STRSTR(&sfd->local_intf->logical->name));
JSON_SET_STRING("%s","local_intf_uid","%u",sfd->local_intf->unique_id);
JSON_SET_STRING("%s","stream","%u",sfd->stream->unique_id);
json_update_crypto_context(builder, "sfd", &c->callid, sfd->unique_id, &sfd->crypto);
@ -2374,81 +2271,19 @@ char* redis_encode_json(struct call *c) {
json_builder_begin_object (builder);
{
json_builder_set_member_name (builder, "media");
sprintf(tmp,"%u",ps->media->unique_id);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "sfd");
sprintf(tmp,"%u",ps->selected_sfd ? ps->selected_sfd->unique_id : -1);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "rtp_sink");
sprintf(tmp,"%u",ps->rtp_sink ? ps->rtp_sink->unique_id : -1);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "rtcp_sink");
sprintf(tmp,"%u",ps->rtcp_sink ? ps->rtcp_sink->unique_id : -1);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "rtcp_sibling");
sprintf(tmp,"%u",ps->rtcp_sibling ? ps->rtcp_sibling->unique_id : -1);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "last_packet");
sprintf(tmp,UINT64F,atomic64_get(&ps->last_packet));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "ps_flags");
sprintf(tmp,"%u",ps->ps_flags);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "component");
sprintf(tmp,"%u",ps->component);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
// this is redis_update_endpoint(r, "stream", &c->callid, ps->unique_id, "endpoint", &ps->endpoint);
json_builder_set_member_name (builder, "endpoint");
sprintf(tmp,"%s",endpoint_print_buf(&ps->endpoint));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
// next is:
// redis_update_endpoint(r, "stream", &c->callid, ps->unique_id, "advertised_endpoint",
// &ps->advertised_endpoint);
json_builder_set_member_name (builder, "advertised_endpoint");
sprintf(tmp,"%s",endpoint_print_buf(&ps->advertised_endpoint));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
// next is:
// redis_pipe(r, "HMSET %s-"PB"-%u %s-packets "UINT64F" %s-bytes "UINT64F" %s-errors "UINT64F"",
// pref, STR(callid), unique_id,
// key, atomic64_get(&s->packets), key, atomic64_get(&s->bytes),
// key, atomic64_get(&s->errors));
// redis_update_stats(r, "stream", &c->callid, ps->unique_id, "stats", &ps->stats);
json_builder_set_member_name (builder, "stats-packets");
sprintf(tmp,"%ld",atomic64_get(&ps->stats.packets));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "stats-bytes");
sprintf(tmp,"%ld",atomic64_get(&ps->stats.bytes));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "stats-errors");
sprintf(tmp,"%ld",atomic64_get(&ps->stats.errors));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
JSON_SET_STRING("%s","media","%u",ps->media->unique_id);
JSON_SET_STRING("%s","sfd","%u",ps->selected_sfd ? ps->selected_sfd->unique_id : -1);
JSON_SET_STRING("%s","rtp_sink","%u",ps->rtp_sink ? ps->rtp_sink->unique_id : -1);
JSON_SET_STRING("%s","rtcp_sink","%u",ps->rtcp_sink ? ps->rtcp_sink->unique_id : -1);
JSON_SET_STRING("%s","rtcp_sibling","%u",ps->rtcp_sibling ? ps->rtcp_sibling->unique_id : -1);
JSON_SET_STRING("%s","last_packet",UINT64F,atomic64_get(&ps->last_packet));
JSON_SET_STRING("%s","ps_flags","%u",ps->ps_flags);
JSON_SET_STRING("%s","component","%u",ps->component);
JSON_SET_STRING("%s","endpoint","%s",endpoint_print_buf(&ps->endpoint));
JSON_SET_STRING("%s","advertised_endpoint","%s",endpoint_print_buf(&ps->advertised_endpoint));
JSON_SET_STRING("%s","stats-packets","%ld",atomic64_get(&ps->stats.packets));
JSON_SET_STRING("%s","stats-bytes","%ld",atomic64_get(&ps->stats.bytes));
JSON_SET_STRING("%s","stats-errors","%ld",atomic64_get(&ps->stats.errors));
json_update_crypto_context(builder, "stream", &c->callid, ps->unique_id, &ps->crypto);
@ -2495,32 +2330,16 @@ char* redis_encode_json(struct call *c) {
json_builder_begin_object (builder);
{
json_builder_set_member_name (builder, "created");
sprintf(tmp,"%llu",(long long unsigned) ml->created);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "active");
sprintf(tmp,"%u",ml->active_dialogue ? ml->active_dialogue->unique_id : -1);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "deleted");
sprintf(tmp,"%llu",(long long unsigned) ml->deleted);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
JSON_SET_STRING("%s","created","%llu",(long long unsigned) ml->created);
JSON_SET_STRING("%s","active","%u",ml->active_dialogue ? ml->active_dialogue->unique_id : -1);
JSON_SET_STRING("%s","deleted","%llu",(long long unsigned) ml->deleted);
if (ml->tag.s) {
json_builder_set_member_name (builder, "tag");
sprintf(tmp,"%s",STRSTR(&ml->tag));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
JSON_SET_STRING("%s","tag","%s",STRSTR(&ml->tag));
}
if (ml->viabranch.s) {
json_builder_set_member_name (builder, "via-branch");
sprintf(tmp,"%s",STRSTR(&ml->viabranch));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
JSON_SET_STRING("%s","via-branch","%s",STRSTR(&ml->viabranch));
}
}
json_builder_end_object (builder);
@ -2570,50 +2389,15 @@ char* redis_encode_json(struct call *c) {
json_builder_begin_object (builder);
{
json_builder_set_member_name (builder, "tag");
sprintf(tmp,"%u",media->monologue->unique_id);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "index");
sprintf(tmp,"%u",media->index);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "type");
sprintf(tmp,"%s",STRSTR(&media->type));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "protocol");
sprintf(tmp,"%s",media->protocol ? media->protocol->name : "");
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "desired_family");
sprintf(tmp,"%s",media->desired_family ? media->desired_family->rfc_name : "");
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "sdes_in_tag");
sprintf(tmp,"%u",media->sdes_in.tag);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "sdes_out_tag");
sprintf(tmp,"%u",media->sdes_out.tag);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "logical_intf");
sprintf(tmp,"%s",STRSTR(&media->logical_intf->name));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "media_flags");
sprintf(tmp,"%u",media->media_flags);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
JSON_SET_STRING("%s","tag","%u",media->monologue->unique_id);
JSON_SET_STRING("%s","index","%u",media->index);
JSON_SET_STRING("%s","type","%s",STRSTR(&media->type));
JSON_SET_STRING("%s","protocol","%s",media->protocol ? media->protocol->name : "");
JSON_SET_STRING("%s","desired_family","%s",media->desired_family ? media->desired_family->rfc_name : "");
JSON_SET_STRING("%s","sdes_in_tag","%u",media->sdes_in.tag);
JSON_SET_STRING("%s","sdes_out_tag","%u",media->sdes_out.tag);
JSON_SET_STRING("%s","logical_intf","%s",STRSTR(&media->logical_intf->name));
JSON_SET_STRING("%s","media_flags","%u",media->media_flags);
json_update_crypto_params(builder, "media", &c->callid, media->unique_id, "sdes_in",
&media->sdes_in.params);
@ -2683,35 +2467,11 @@ char* redis_encode_json(struct call *c) {
json_builder_begin_object (builder);
{
json_builder_set_member_name (builder, "wildcard");
sprintf(tmp,"%i",ep->wildcard);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "num_ports");
sprintf(tmp,"%u",ep->num_ports);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "intf_preferred_family");
sprintf(tmp,"%s",ep->logical_intf->preferred_family->rfc_name);
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
json_builder_set_member_name (builder, "logical_intf");
sprintf(tmp,"%s",STRSTR(&ep->logical_intf->name));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
// next is:
// redis_update_endpoint(r, "map", &c->callid, ep->unique_id, "endpoint", &ep->endpoint);
json_builder_set_member_name (builder, "endpoint");
sprintf(tmp,"%s",endpoint_print_buf(&ep->endpoint));
json_builder_add_string_value (builder, tmp);
ZERO(tmp);
// map_sfds was here before !!!
JSON_SET_STRING("%s","wildcard","%i",ep->wildcard);
JSON_SET_STRING("%s","num_ports","%u",ep->num_ports);
JSON_SET_STRING("%s","intf_preferred_family","%s",ep->logical_intf->preferred_family->rfc_name);
JSON_SET_STRING("%s","logical_intf","%s",STRSTR(&ep->logical_intf->name));
JSON_SET_STRING("%s","endpoint","%s",endpoint_print_buf(&ep->endpoint));
}
json_builder_end_object (builder);


Loading…
Cancel
Save