-
Mark Michelson authored
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r139015 | mmichelson | 2008-08-20 10:37:56 -0500 (Wed, 20 Aug 2008) | 6 lines sip_read should properly handle a NULL return from sip_rtp_read. (closes issue #13257) Reported by: travishein ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@139016 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Mark Michelson authoredhttps://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r139015 | mmichelson | 2008-08-20 10:37:56 -0500 (Wed, 20 Aug 2008) | 6 lines sip_read should properly handle a NULL return from sip_rtp_read. (closes issue #13257) Reported by: travishein ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@139016 65c4cc65-6c06-0410-ace0-fbb531ad65f3
chan_sip.c 810.90 KiB
/*
* Asterisk -- An open source telephony toolkit.
*
* Copyright (C) 1999 - 2006, Digium, Inc.
*
* Mark Spencer <markster@digium.com>
*
* See http://www.asterisk.org for more information about
* the Asterisk project. Please do not directly contact
* any of the maintainers of this project for assistance;
* the project provides a web site, mailing lists and IRC
* channels for your use.
*
* This program is free software, distributed under the terms of
* the GNU General Public License Version 2. See the LICENSE file
* at the top of the source tree.
*/
/*!
* \file
* \brief Implementation of Session Initiation Protocol
*
* \author Mark Spencer <markster@digium.com>
*
* See Also:
* \arg \ref AstCREDITS
*
* Implementation of RFC 3261 - without S/MIME, and experimental TCP and TLS support
* Configuration file \link Config_sip sip.conf \endlink
*
* ********** IMPORTANT *
* \note TCP/TLS support is EXPERIMENTAL and WILL CHANGE. This applies to configuration
* settings, dialplan commands and dialplans apps/functions
*
*
* TODO:s
* \todo Better support of forking
* \todo VIA branch tag transaction checking
* \todo Transaction support
* \todo We need to test TCP sessions with SIP proxies and in regards
* to the SIP outbound specs.
* \todo Fix TCP/TLS handling in dialplan, SRV records, transfers and much more
* \todo Save TCP/TLS sessions in registry
* \todo Add TCP/TLS information to function SIPPEER and SIPCHANINFO
*
* \ingroup channel_drivers
*
* \par Overview of the handling of SIP sessions
* The SIP channel handles several types of SIP sessions, or dialogs,
* not all of them being "telephone calls".
* - Incoming calls that will be sent to the PBX core
* - Outgoing calls, generated by the PBX
* - SIP subscriptions and notifications of states and voicemail messages
* - SIP registrations, both inbound and outbound
* - SIP peer management (peerpoke, OPTIONS)
* - SIP text messages
*
* In the SIP channel, there's a list of active SIP dialogs, which includes
* all of these when they are active. "sip show channels" in the CLI will
* show most of these, excluding subscriptions which are shown by
* "sip show subscriptions"
*
* \par incoming packets
* Incoming packets are received in the monitoring thread, then handled by
* sipsock_read(). This function parses the packet and matches an existing
* dialog or starts a new SIP dialog.
*
* sipsock_read sends the packet to handle_incoming(), that parses a bit more.
* If it is a response to an outbound request, the packet is sent to handle_response().
* If it is a request, handle_incoming() sends it to one of a list of functions