Browse Source

getting rid of call->log_info and introducing call->lock

git.mgm/mediaproxy-ng/2.1
Richard Fuchs 14 years ago
parent
commit
ae5a36f5ce
2 changed files with 17 additions and 16 deletions
  1. +13
    -11
      daemon/call.c
  2. +4
    -5
      daemon/call.h

+ 13
- 11
daemon/call.c View File

@ -33,7 +33,9 @@
#define LOG_PREFIX_C "[%s] "
#define LOG_PREFIX_CI "[%s - %s] "
#define LOG_PARAMS_C(c) (c)->callid
#define LOG_PARAMS_CI(c) (c)->callid, (c)->log_info
#define LOG_PARAMS_CI(c) (c)->callid, log_info
static __thread const char *log_info;
@ -1374,6 +1376,7 @@ static struct call *call_create(const char *callid, struct callmaster *m) {
c->created = poller_now;
c->infohash = g_hash_table_new_full(g_str_hash, g_str_equal, free, free);
c->branches = g_hash_table_new_full(g_str_hash0, g_str_equal0, free, NULL);
mutex_init(&c->lock);
return c;
}
@ -1462,7 +1465,7 @@ char *call_update_udp(const char **out, struct callmaster *m) {
char *ret;
c = call_get_or_create(out[RE_UDP_UL_CALLID], out[RE_UDP_UL_VIABRANCH], m);
c->log_info = out[RE_UDP_UL_VIABRANCH];
log_info = out[RE_UDP_UL_VIABRANCH];
strdupfree(&c->calling_agent, "UNKNOWN(udp)");
if (addr_parse_udp(&st, out))
@ -1478,14 +1481,14 @@ char *call_update_udp(const char **out, struct callmaster *m) {
ret = streams_print(c->callstreams, 1, (num >= 0) ? 0 : 1, out[RE_UDP_COOKIE], 1);
mylog(LOG_INFO, LOG_PREFIX_CI "Returning to SIP proxy: %s", LOG_PARAMS_CI(c), ret);
c->log_info = NULL;
log_info = NULL;
obj_put(c);
return ret;
fail:
mylog(LOG_WARNING, "Failed to parse a media stream: %s/%s:%s", out[RE_UDP_UL_ADDR4], out[RE_UDP_UL_ADDR6], out[RE_UDP_UL_PORT]);
asprintf(&ret, "%s E8\n", out[RE_UDP_COOKIE]);
c->log_info = NULL;
log_info = NULL;
obj_put(c);
return ret;
}
@ -1509,7 +1512,7 @@ char *call_lookup_udp(const char **out, struct callmaster *m) {
obj_hold(c);
rwlock_unlock_r(&m->hashlock);
c->log_info = out[RE_UDP_UL_CALLID];
log_info = out[RE_UDP_UL_CALLID];
strdupfree(&c->called_agent, "UNKNOWN(udp)");
if (addr_parse_udp(&st, out))
@ -1525,14 +1528,14 @@ char *call_lookup_udp(const char **out, struct callmaster *m) {
ret = streams_print(c->callstreams, 1, (num >= 0) ? 1 : 0, out[RE_UDP_COOKIE], 1);
mylog(LOG_INFO, LOG_PREFIX_CI "Returning to SIP proxy: %s", LOG_PARAMS_CI(c), ret);
c->log_info = NULL;
log_info = NULL;
obj_put(c);
return ret;
fail:
mylog(LOG_WARNING, "Failed to parse a media stream: %s/%s:%s", out[RE_UDP_UL_ADDR4], out[RE_UDP_UL_ADDR6], out[RE_UDP_UL_PORT]);
asprintf(&ret, "%s E8\n", out[RE_UDP_COOKIE]);
c->log_info = NULL;
log_info = NULL;
obj_put(c);
return ret;
}
@ -1612,7 +1615,7 @@ char *call_delete_udp(const char **out, struct callmaster *m) {
obj_hold(c);
rwlock_unlock_r(&m->hashlock);
c->log_info = out[RE_UDP_D_VIABRANCH];
log_info = out[RE_UDP_D_VIABRANCH];
if (out[RE_UDP_D_FROMTAG] && *out[RE_UDP_D_FROMTAG]) {
for (l = c->callstreams->head; l; l = l->next) {
@ -1668,10 +1671,9 @@ err:
goto out;
out:
if (c) {
c->log_info = NULL;
log_info = NULL;
if (c)
obj_put(c);
}
return ret;
}


+ 4
- 5
daemon/call.h View File

@ -81,18 +81,17 @@ struct call {
struct callmaster *callmaster;
mutex_t lock;
GQueue *callstreams;
GHashTable *branches;
char *calling_agent;
char *called_agent;
char *callid;
char redis_uuid[37];
time_t created;
char *calling_agent;
char *called_agent;
GHashTable *infohash;
GHashTable *branches;
time_t lookup_done;
const char *log_info; /* branch */
};
struct callmaster_config {


Loading…
Cancel
Save