Browse Source

added_address_of_invoking_proxy

Hinzufügen der Adresse des SIP-Proxy, der die session erstellt hat
(sowohl für command line interface als auch CDR) Nur UDP control
zunächst.

Author:    Frederic-Philippe Metz <Frederic.Metz@1und1.de>
pull/60/head
Frederic-Philippe Metz 11 years ago
committed by Richard Fuchs
parent
commit
a871cd7507
6 changed files with 15 additions and 8 deletions
  1. +1
    -0
      daemon/call.c
  2. +1
    -0
      daemon/call.h
  3. +9
    -4
      daemon/call_interfaces.c
  4. +1
    -1
      daemon/call_interfaces.h
  5. +2
    -2
      daemon/cli.c
  6. +1
    -1
      daemon/control_udp.c

+ 1
- 0
daemon/call.c View File

@ -2375,6 +2375,7 @@ void call_destroy(struct call *c) {
/* CDRs and statistics */
cdrbufcur += sprintf(cdrbufcur,"ci=%s, ",c->callid.s);
cdrbufcur += sprintf(cdrbufcur,"created_from=%s", c->created_from);
for (l = c->monologues; l; l = l->next) {
ml = l->data;
if (_log_facility_cdr) {


+ 1
- 0
daemon/call.h View File

@ -338,6 +338,7 @@ struct call {
time_t deleted;
time_t ml_deleted;
unsigned char tos;
char created_from[64];
};
struct local_interface {


+ 9
- 4
daemon/call_interfaces.c View File

@ -134,7 +134,7 @@ fail:
return -1;
}
static str *call_update_lookup_udp(char **out, struct callmaster *m, enum call_opmode opmode) {
static str *call_update_lookup_udp(char **out, struct callmaster *m, enum call_opmode opmode, const char* addr) {
struct call *c;
struct call_monologue *monologue;
GQueue q = G_QUEUE_INIT;
@ -154,6 +154,11 @@ static str *call_update_lookup_udp(char **out, struct callmaster *m, enum call_o
STR_FMT(&callid));
return str_sprintf("%s 0 0.0.0.0\n", out[RE_UDP_COOKIE]);
}
if (addr) {
memcpy(c->created_from, addr, strlen(addr));
}
monologue = call_get_mono_dialogue(c, &fromtag, &totag);
if (!monologue)
goto ml_fail;
@ -196,11 +201,11 @@ out:
return ret;
}
str *call_update_udp(char **out, struct callmaster *m) {
return call_update_lookup_udp(out, m, OP_OFFER);
str *call_update_udp(char **out, struct callmaster *m, const char* addr) {
return call_update_lookup_udp(out, m, OP_OFFER, addr);
}
str *call_lookup_udp(char **out, struct callmaster *m) {
return call_update_lookup_udp(out, m, OP_ANSWER);
return call_update_lookup_udp(out, m, OP_ANSWER, NULL);
}


+ 1
- 1
daemon/call_interfaces.h View File

@ -24,7 +24,7 @@ str *call_lookup_tcp(char **, struct callmaster *);
void call_delete_tcp(char **, struct callmaster *);
void calls_status_tcp(struct callmaster *, struct control_stream *);
str *call_update_udp(char **, struct callmaster *);
str *call_update_udp(char **, struct callmaster *, const char*);
str *call_lookup_udp(char **, struct callmaster *);
str *call_delete_udp(char **, struct callmaster *);
str *call_query_udp(char **, struct callmaster *);


+ 2
- 2
daemon/cli.c View File

@ -50,7 +50,7 @@ static void cli_incoming_list_callid(char* buffer, int len, struct callmaster* m
return;
}
printlen = snprintf (replybuffer,(outbufend-replybuffer), "\ncallid: %30s | deletionmark:%4s | created:%12i\n\n", c->callid.s , c->ml_deleted?"yes":"no", (int)c->created);
printlen = snprintf (replybuffer,(outbufend-replybuffer), "\ncallid: %30s | deletionmark:%4s | created:%12i | proxy:%s\n\n", c->callid.s , c->ml_deleted?"yes":"no", (int)c->created, c->created_from);
ADJUSTLEN(printlen,outbufend,replybuffer);
for (l = c->monologues; l; l = l->next) {
@ -130,7 +130,7 @@ static void cli_incoming_list(char* buffer, int len, struct callmaster* m, char*
while (g_hash_table_iter_next (&iter, &key, &value)) {
ptrkey = (str*)key;
call = (struct call*)value;
printlen = snprintf(replybuffer, outbufend-replybuffer, "callid: %30s | deletionmark:%4s | created:%12i\n", ptrkey->s, call->ml_deleted?"yes":"no", (int)call->created);
printlen = snprintf(replybuffer, outbufend-replybuffer, "callid: %30s | deletionmark:%4s | created:%12i | proxy:%s\n", ptrkey->s, call->ml_deleted?"yes":"no", (int)call->created, call->created_from);
ADJUSTLEN(printlen,outbufend,replybuffer);
}
rwlock_unlock_r(&m->hashlock);


+ 1
- 1
daemon/control_udp.c View File

@ -83,7 +83,7 @@ static void control_udp_incoming(struct obj *obj, str *buf, struct sockaddr_in6
}
if (chrtoupper(out[RE_UDP_UL_CMD][0]) == 'U')
reply = call_update_udp(out, u->callmaster);
reply = call_update_udp(out, u->callmaster, addr);
else if (chrtoupper(out[RE_UDP_UL_CMD][0]) == 'L')
reply = call_lookup_udp(out, u->callmaster);
else if (chrtoupper(out[RE_UDP_DQ_CMD][0]) == 'D')


Loading…
Cancel
Save