- RTP timeout handling: allow unidirectional data w/o
terminating connection after timeout.
This commit is contained in:
parent
0cf87f48ee
commit
a155e32d27
@ -1,5 +1,7 @@
|
|||||||
0.5.13
|
0.5.13
|
||||||
======
|
======
|
||||||
|
11-Jun-2006: - RTP timeout handling: allow unidirectional data w/o
|
||||||
|
terminating connection after timeout.
|
||||||
20-May-2006: - Fixed compiling issue when building on MacOS (Georg Schwarz)
|
20-May-2006: - Fixed compiling issue when building on MacOS (Georg Schwarz)
|
||||||
- A number of correction in debugging code (James Henstridge)
|
- A number of correction in debugging code (James Henstridge)
|
||||||
26-Apr-2006: - REGISTER response generated from siproxd includes
|
26-Apr-2006: - REGISTER response generated from siproxd includes
|
||||||
|
|||||||
@ -36,6 +36,7 @@ typedef struct {
|
|||||||
struct in_addr remote_ipaddr; /* remote IP */
|
struct in_addr remote_ipaddr; /* remote IP */
|
||||||
int remote_port; /* remote port */
|
int remote_port; /* remote port */
|
||||||
time_t timestamp; /* last 'stream alive' TS */
|
time_t timestamp; /* last 'stream alive' TS */
|
||||||
|
int opposite_entry; /* 1 based!! index of opposite entry */
|
||||||
} rtp_proxytable_t;
|
} rtp_proxytable_t;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@ -299,6 +299,7 @@ static void *rtpproxy_main(void *arg) {
|
|||||||
(rtp_direction != rtp_proxytable[j].direction) &&
|
(rtp_direction != rtp_proxytable[j].direction) &&
|
||||||
(strcmp(rtp_proxytable[j].client_id, client_id) != 0) ) {
|
(strcmp(rtp_proxytable[j].client_id, client_id) != 0) ) {
|
||||||
rtp_proxytable[i].rtp_tx_sock = rtp_proxytable[j].rtp_rx_sock;
|
rtp_proxytable[i].rtp_tx_sock = rtp_proxytable[j].rtp_rx_sock;
|
||||||
|
rtp_proxytable[i].opposite_entry=j+1;
|
||||||
DEBUGC(DBCLASS_RTP, "connected entry %i (fd=%i) <-> entry %i (fd=%i)",
|
DEBUGC(DBCLASS_RTP, "connected entry %i (fd=%i) <-> entry %i (fd=%i)",
|
||||||
j, rtp_proxytable[j].rtp_rx_sock,
|
j, rtp_proxytable[j].rtp_rx_sock,
|
||||||
i, rtp_proxytable[i].rtp_rx_sock);
|
i, rtp_proxytable[i].rtp_rx_sock);
|
||||||
@ -340,8 +341,13 @@ static void *rtpproxy_main(void *arg) {
|
|||||||
}
|
}
|
||||||
} /* count > 0 */
|
} /* count > 0 */
|
||||||
|
|
||||||
/* update timestamp of last usage */
|
/* update timestamp of last usage for both (RX and TX) entries.
|
||||||
|
* This allows silence (no data) on one stream without breaking
|
||||||
|
* the connection after the RTP timeout */
|
||||||
rtp_proxytable[i].timestamp=t;
|
rtp_proxytable[i].timestamp=t;
|
||||||
|
if (rtp_proxytable[i].opposite_entry > 0) {
|
||||||
|
rtp_proxytable[rtp_proxytable[i].opposite_entry-1].timestamp=t;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} /* for i */
|
} /* for i */
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user