- REGISTER response generated from siproxd must include
a Contact header.
1. tell gcc that the logging functions use printf style
format strings. This gets gcc to tell us about a lot
of the problems.
2. size_t is not an int on AMD64, so don't treat it
like one. I've changed to use "%ld" format code and
cast to a long, which should work well enough.
3. some format strings didn't match the argument lists.
These fixes are pretty clear.
4. log_debug, log_error, log_warn, log_info could all
end up evaluating their varargs list multiple times if
the message was to be logged to multiple places. This
causes the second/third uses to access invalid memory
and potentially segfault. I fixed this by using
va_copy() to copy the varargs list for each use.
(hopefully) fixed a sporadic crash in sdp_message_parse()
- RTP timeouts on some PBX systems that include an video
stream, but the called UA has no video capability.
- fix: Via branch calculation
- security.c: increased max acceptable line length
- security.c: prevent libosip2 to die with "out of memory"
on some malformed headers
- proxy_rewrite_invitation_body: check success of
starting RTP relay before rewriting SDP body
- proxy_rewrite_invitation_body: don't fail on
Contact header with no user part.
- security_check_sip: CSeq header must be present.
behind the same siproxd to have conversation together
UA1 -->--\ /-->--\
siproxd Registrar
UA2 --<--/ \--<--/
- Redone code for evaluation if a received packet
if coming from inbound or outbound interface
- RTP stream are now identified by call_id AND
USERNAME of the contact header. This provides
support for RTP proxying between 2 UAs sitting on the
inbound network. -> Calls between local UAs going via
siproxd should now work.
UA1 -->--\
siproxd
UA2 --<--/
- Rewriting of SUBSCRIBE should now work.
- Removed obsolete prototypes from rtpproxy.h
- If the RTP stream in one direction is found to be
stopped (sendto()) also stop the opposite direction
- RTPPROXY correction: match RTP ports crosswise -
use one single port (and socket) on each side (inbound/
outbound) to send and receive RTP traffic for every
active stream (patch by Christof Meerwald).
a completely statically linked executable
- REGISTER takes honors the expires parameter
of the contact header
- Contact header of REGISTER response must be
rewritten back to the local (true) URL
his work on this). Up to now, only the RTP *Relay*
has been tested (works with KPhone, BudgeTone)
- fix: SIP phones that allocate a random port for
incomming SIP traffic should now work (like BudgeTone)
- fix: some SIP phones do change the RTP port number
during a session (like KPhone during HOLD/unHOLD)
means that local UAs may register themselfes to a
3rd party registrar and use siproxd only as oubound
proxy for masquerading purpose.
- fixed some errors with callid handling (NULL pointers)