Revision history for Net::SIP

0.39
  - work around missing support for non-blocking sockets in IO::Socket
    on MSWin32 platform
  - fix  http://rt.cpan.org/Ticket/Display.html?id=30691 where the same realm
    was authorized again and again if the given user/pass where wrong

0.38
  - fix dns lookup problem for SRV records. Instead of using the
    IP it used the service name (e.g. _sip._udp....) as the target
    of the packet
  - bin/answer_machine.pl - crude attempt to create filenames
    which don't have chars special to windows ('<',...)

0.37
  - Endpoint::close_context now cancel all outstanding deliveries 
    for this context in the dispatcher. Extented queue objects 
    and Dispatcher::cancel_delivery to make this possible
  - tests for file descriptor leaks (09_fdleak.t,10_fdleak.t)
  - some more Scalar::Util::weaken for callbacks in Simple::Call
    to stop circular references

0.36
  - small performance improvements for Net::SIP::Simple::RTP
    and samples/bench
  - fixed race condition on Net::SIP::Dispatcher::Eventloop (e.g
    one callback disabled fd, but it tried to call callback for the
    disabled fd)
  - added Net::SIP::Simple::cleanup and made some references to the
    objects within callbacks weak, so that no objects and file
    descriptors would leak if properly used

0.35
  - Net::SIP::Simple::Call - close call context in $call->cleanup,
    otherwise it could leak file descriptors if the call wasn't
    closed clean (with BYE or CANCEL).
  - new test applications for simple benchmarks in samples/bench
  - documentation: new file samples/README describes the files in 
    samples/

0.34
  - Net::SIP::Simple: handle OPTIONS requests. These are for 
    instance used by Asterisk to determine if the registered 
    party accepts incoming calls.
 
0.33
  - fix rt#29153 in StatelessProxy.pm ($1 from prev regex
    used after call of user function, which could change it)
  - Endpoint::new_response - make sure that 2xx responses to
    INVITE carry a contact header

0.32
  - Net::SIP::Registrar checks on non-REGISTER requests if the
    target it registered with itself and then rewrites the URI in
    the packet. This can be used for a combined Registar+Proxy,
    see samples/test_registrar_and_proxy.pl
  - samples/invite_and_*.pl have now option -L|--leg to specify
    a local address

0.31
  - make it usable for perl5.9, tested with 5.9.5

0.30
  - Option cb_preliminary for Simple::Call:reinvite to specify
    callback which will be triggered when preliminary response
    is received
    more parameter for cb_create in Simple::listen, so that
    it can create a response (like 180 Ringing) to the peer
    see documentation and the adapted t/02_listen_and_invite.t

0.29
  - make sure that max-forwards is added to every Request from the
    endpoint and that all INVITE have a contact header because these
    are mandatory according to RFC
  - invoke 'filter' callback in Net::SIP::Simple::listen with the
    Request object as an additional argument, cb_create callback
    in listen needs to return TRUE or the call will be closed
    !!!! Warning: this might break code which did not return TRUE
    from cb_create !!!!!

0.28
  - Request.pm - make sure that nc-count is send when authorizing
    and qop was set. This is required according to rfc2617

0.27
  - Authorize.pm, Request.pm - support 'opaque' field in digest
    authorization (when authorizing or when requesting authorization)

0.26
  - SDP.pm - fix regex for IP4 which did not include all IPv4 addr

0.25
  - small fixes to SDP
  - added concept of chains, e.g. put an Authorize object in
    front of Registrar inside a ReceiveChain and all REGISTER
    requests will be authorized,
    see Net::SIP::{Authorize,ReceiveChain}
  - StatelessProxy can no longer have an internal Registrar.
    use ReceiveChain to put a Registrar in front of the proxy
    instead
  - new test t/08_register_with_auth.pl to test Authorize 
    and ReceiveChain
  - fix Request::authorize
    
0.24
  - make adding commands to NATHelper::Server easier
  - add user params for NATHelper::Session during activate_session
  - SDP: make sure that IP4/IP6 is valid IP
  - small fixes

0.23
  - fix memleak in NATHelper::Base
  - support for derived NATHelper::Base in NATHelper::Server 
  - update docu for NATHelper::Base::expire

0.22
  - enforce perl5.8 and prerequisite Net::DNS in Makefile.PL
  - NATHelper::Base - more controling of resource usage with
    max_sockets and max_sockets_in_group and/or by redefining
    (un)get_rtp_sockets

0.21
  - new sample samples/3pcc.pl for 3rd party call control
  - small fixes

0.20
  - enhancements on tests, new tests for reinvite and call on hold
  - lots of bugfixes: re-invites, NAT, call on hold, branch tag
    on via and 'tag' on to|from in responses, max-forwards handling,
    response caching in dispatcher....
  - set route from record-route in responses, use route header
    in dispatching outgoing requests
  - early loop detection for outgoing packets
  - new param call_on_hold for Net::Simple::Call to set call on
    hold on reinvite...

0.18
  - NATHelper::* changes in the return values of expire,
    close_session, activate_session to aid logging of
    sessions (see updated doc)
  - NATHelper::Local has smarter _update_callbacks
  - bugfixes, especially on Net::Simple regarding handling 
    of re-invites in existing call
  - new test t/06_call_with_reinvite.t

0.17
  - added documentation for Net::SIP::NATHelper::*
  - updated doc for Net::SIP::StatelessProxy regarding NAT
  - added HOWTO with some Q+A
  - added COPYRIGHT
  - new method 'method' in Net::SIP::Response
  - small bugfixes

0.16
  - lots of bugfixes
  - removed leg2proxy and domain2leg from Net::SIP::Dispatcher
    again because they do not fit into concept, see 
	bin/stateles_proxy.pl how to achieve similar things
  - lot of bugfixes, changes and enhancement on StatelessProxy
  - Net::SIP can now export useful things, see doc
  - a lot of enhancements for NAT, implementation of local
    (inside process) and remote NAT helpers which forward
	RTP data
  - Net::SIP::Dispatcher: lookup for A an SRV records now in
    seperate, callback oriented method (which are not asynchronous
	yet, but have an asynchronous interface)
  - moved real world usable programs from samples/ to bin/
  - more tests, samples/ and bins/

0.15
  - various bugfixes
  - limit Max-Forwards header to 70 while forwarding packets
    for security reasons (to avoid bad clients which will set
    it to something very high and then try to force loop)
  - do not add Record-Route header to REGISTER requests
  - major changes and enhancements on Net::SIP::StatelessProxy
  - rename Net::SIP::Dispatcher::Eventloop::addTimer to add_timer
    so that it is the same name like in the other modules
  - Net::SIP::Simple: way to add explicit Route headers#
  - new package Net::SIP::NATHelper do aid in the writing of 
    SIP proxies which do NAT (no documentation yet)
  - support for debug levels in Net::SIP::Debug
    sample scripts support various debug levels, see doc to
    Net::SIP::Debug for meaning of different levels
  - samples/stateless_proxy.pl as sample implementation for
    slightly complex stateless proxy (not fully tested yet)
  - new function sip_uri2parts in Net::SIP::Util
  - ways to specify custom headers in Net::SIP::Simple using
    option 'sip_header'
  - new keys domain2leg and leg2proxy in Net::SIP::Dispatcher
    which influence routing
  - new method resolve_uri in Net::SIP::Dispatcher to asnychronously
    resolve URI (was __resolve_uri, but now public with slightly
    different interface)
  - new test 03_forward_stateless which tests parts of routing
    for stateless proxy

0.14
  - forgot to include samples to MANIFEST, this is fixed now
    so that they get included into the distribution

0.13
  - samples/answer_machine.pl as a sample implementation
    of an answer machine
  - new methods peer in Net::SIP::Endpoint::Context and
    get_peer in Net::SIP::Simple::Call
  - fix inactivity timeout for media_recv_send in Net::SIP::Simple::RTP
  - media_send_recv, media_recv_echo in Net::SIP::Simple::RTP can use 
    callback for read/write data instead of filenames

0.12
  - samples/invite_and_send.pl as new sample client
    which can invite and send multiple voice file
    to peer (using re-invites)
  - various small bug fixes

0.11 
  - samples/invite_and_recv.pl as new sample client
    which can invite and record a message
  - various small features and bug fixes

0.1 - first public version
