|
|
|
@ -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; |
|
|
|
} |
|
|
|
|
|
|
|
|