2006-12-21 06:30:28 +00:00
|
|
|
/*
|
|
|
|
* This file is part of the Sofia-SIP package
|
|
|
|
*
|
|
|
|
* Copyright (C) 2005 Nokia Corporation.
|
|
|
|
*
|
|
|
|
* Contact: Pekka Pessi <pekka.pessi@nokia.com>
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public License
|
|
|
|
* as published by the Free Software Foundation; either version 2.1 of
|
|
|
|
* the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful, but
|
|
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
|
|
|
* 02110-1301 USA
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef NUA_STACK_H
|
|
|
|
/** Defined when <nua_stack.h> has been included. */
|
|
|
|
#define NUA_STACK_H
|
|
|
|
/**@IFILE nua_stack.h
|
|
|
|
* @brief Sofia-SIP User Agent Engine - internal stack interface
|
|
|
|
*
|
|
|
|
* @author Pekka Pessi <Pekka.Pessi@nokia.com>
|
|
|
|
* @author Kai Vehmanen <Kai.Vehmanen@nokia.com>
|
|
|
|
*
|
|
|
|
* @date Created: Wed Feb 14 17:09:44 2001 ppessi
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef SU_CONFIG_H
|
|
|
|
#include <su_config.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef SU_OS_NW_H
|
|
|
|
#include <sofia-sip/su_os_nw.h>
|
|
|
|
#endif
|
|
|
|
#ifndef SOA_H
|
|
|
|
#include "sofia-sip/soa.h"
|
|
|
|
#endif
|
|
|
|
#ifndef NTA_H
|
|
|
|
#include <sofia-sip/nta.h>
|
|
|
|
#endif
|
|
|
|
#ifndef AUTH_CLIENT_H
|
|
|
|
#include <sofia-sip/auth_client.h>
|
|
|
|
#endif
|
|
|
|
#ifndef NEA_H
|
|
|
|
#include <sofia-sip/nea.h>
|
|
|
|
#endif
|
|
|
|
#ifndef NUA_H
|
|
|
|
#include <sofia-sip/nua.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define SU_LOG (nua_log)
|
|
|
|
#include <sofia-sip/su_debug.h>
|
|
|
|
|
|
|
|
#ifndef NUA_DIALOG_H
|
|
|
|
#define NUA_OWNER_T struct nua_handle_s
|
2007-08-06 19:24:10 +00:00
|
|
|
#include "nua_dialog.h"
|
2006-12-21 06:30:28 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
SOFIA_BEGIN_DECLS
|
|
|
|
|
|
|
|
#if HAVE_SIGCOMP
|
|
|
|
#include <sigcomp.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef NUA_PARAMS_H
|
2007-08-06 19:24:10 +00:00
|
|
|
#include "nua_params.h"
|
2006-12-21 06:30:28 +00:00
|
|
|
#endif
|
|
|
|
|
2007-12-06 18:44:14 +00:00
|
|
|
typedef struct event_s event_t, nua_signal_data_t;
|
2006-12-21 06:30:28 +00:00
|
|
|
|
|
|
|
#define NONE ((void *)-1)
|
|
|
|
|
|
|
|
typedef struct register_usage nua_registration_t;
|
|
|
|
|
|
|
|
#define \
|
|
|
|
NH_ACTIVE_MEDIA_TAGS(include, soa) \
|
|
|
|
TAG_IF((include) && (soa) && soa_is_audio_active(soa) >= 0, \
|
|
|
|
SOATAG_ACTIVE_AUDIO(soa_is_audio_active(soa))), \
|
|
|
|
TAG_IF((include) && (soa) && soa_is_video_active(soa) >= 0, \
|
|
|
|
SOATAG_ACTIVE_VIDEO(soa_is_video_active(soa))), \
|
|
|
|
TAG_IF((include) && (soa) && soa_is_image_active(soa) >= 0, \
|
|
|
|
SOATAG_ACTIVE_IMAGE(soa_is_image_active(soa))), \
|
|
|
|
TAG_IF((include) && (soa) && soa_is_chat_active(soa) >= 0, \
|
|
|
|
SOATAG_ACTIVE_CHAT(soa_is_chat_active(soa)))
|
|
|
|
|
|
|
|
#define \
|
|
|
|
NH_REMOTE_MEDIA_TAGS(include, soa) \
|
|
|
|
TAG_IF((include) && (soa) && soa_is_remote_audio_active(soa) >= 0, \
|
|
|
|
SOATAG_ACTIVE_AUDIO(soa_is_remote_audio_active(soa))), \
|
|
|
|
TAG_IF((include) && (soa) && soa_is_remote_video_active(soa) >= 0, \
|
|
|
|
SOATAG_ACTIVE_VIDEO(soa_is_remote_video_active(soa))), \
|
|
|
|
TAG_IF((include) && (soa) && soa_is_remote_image_active(soa) >= 0, \
|
|
|
|
SOATAG_ACTIVE_IMAGE(soa_is_remote_image_active(soa))), \
|
|
|
|
TAG_IF((include) && (soa) && soa_is_remote_chat_active(soa) >= 0, \
|
|
|
|
SOATAG_ACTIVE_CHAT(soa_is_remote_chat_active(soa)))
|
|
|
|
|
2007-04-15 02:03:41 +00:00
|
|
|
#if HAVE_NUA_HANDLE_DEBUG
|
|
|
|
|
|
|
|
#define nua_handle_ref(nh) nua_handle_ref_by((nh), __func__)
|
|
|
|
#define nua_handle_unref(nh) nua_handle_unref_by((nh), __func__)
|
|
|
|
|
2007-05-08 19:14:10 +00:00
|
|
|
su_inline nua_handle_t *nua_handle_ref_by(nua_handle_t *nh,
|
2007-12-06 18:44:14 +00:00
|
|
|
char const *by)
|
2007-04-15 02:03:41 +00:00
|
|
|
{
|
|
|
|
if (nh)
|
|
|
|
SU_DEBUG_0(("nua_handle_ref(%p) => "MOD_ZU" by %s\n", nh,
|
|
|
|
su_home_refcount((su_home_t *)nh) + 1,
|
|
|
|
by));
|
|
|
|
return (nua_handle_t *)su_home_ref((su_home_t *)nh);
|
|
|
|
}
|
|
|
|
|
2007-05-08 19:14:10 +00:00
|
|
|
su_inline int nua_handle_unref_by(nua_handle_t *nh, char const *by)
|
2007-04-15 02:03:41 +00:00
|
|
|
{
|
2007-12-06 18:44:14 +00:00
|
|
|
if (nh) {
|
|
|
|
size_t refcount = su_home_refcount((su_home_t *)nh) - 1;
|
|
|
|
int freed = su_home_unref((su_home_t *)nh);
|
|
|
|
if (freed) refcount = 0;
|
|
|
|
SU_DEBUG_0(("nua_handle_unref(%p) => "MOD_ZU" by %s\n",
|
|
|
|
nh, refcount, by));
|
|
|
|
return freed;
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
2007-04-15 02:03:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
Sync to current darcs tree:
Mon Sep 17 14:50:04 EDT 2007 Pekka.Pessi@nokia.com
* sofia-sip/sip_util.h: updated documentation
Mon Sep 17 14:50:18 EDT 2007 Pekka.Pessi@nokia.com
* sofia-sip/tport_tag.h: updated documentation
Mon Sep 17 14:50:28 EDT 2007 Pekka.Pessi@nokia.com
* soa_tag.c: updated documentation
Wed Sep 19 12:50:01 EDT 2007 Pekka.Pessi@nokia.com
* msg: updated documentation
Wed Sep 19 13:29:50 EDT 2007 Pekka.Pessi@nokia.com
* url: updated documentation
Wed Sep 19 13:32:14 EDT 2007 Pekka.Pessi@nokia.com
* nth: updated documentation
Wed Sep 19 13:32:27 EDT 2007 Pekka.Pessi@nokia.com
* nea: updated documentation
Wed Sep 19 13:33:36 EDT 2007 Pekka.Pessi@nokia.com
* http: updated documentation
Wed Sep 19 13:36:58 EDT 2007 Pekka.Pessi@nokia.com
* bnf: updated documentation
Wed Sep 19 13:38:58 EDT 2007 Pekka.Pessi@nokia.com
* nua: updated nua_stack_init_handle() prototype
Wed Sep 19 18:45:56 EDT 2007 Pekka.Pessi@nokia.com
* sip: added sip_name_addr_xtra(), sip_name_addr_dup()
Wed Sep 19 19:00:19 EDT 2007 Pekka.Pessi@nokia.com
* sip_basic.c: cleaned old crud
Thu Sep 20 13:34:04 EDT 2007 Pekka.Pessi@nokia.com
* iptsec: updated documentation
Thu Sep 20 13:36:22 EDT 2007 Pekka.Pessi@nokia.com
* tport: updated documentation
Thu Sep 20 13:36:56 EDT 2007 Pekka.Pessi@nokia.com
* su: updated documentation
Removed internal files from doxygen-generated documentation.
Thu Sep 20 13:38:29 EDT 2007 Pekka.Pessi@nokia.com
* soa: fixed documentation
Thu Sep 20 13:39:56 EDT 2007 Pekka.Pessi@nokia.com
* sdp: updated documentation
Thu Sep 20 13:40:16 EDT 2007 Pekka.Pessi@nokia.com
* ipt: updated documentation
Thu Sep 20 14:24:20 EDT 2007 Pekka.Pessi@nokia.com
* nta: updated documentation
Thu Sep 20 14:41:04 EDT 2007 Pekka.Pessi@nokia.com
* nua: updated documentation
Updated tag documentation.
Moved doxygen doc entries from sofia-sip/nua_tag.h to nua_tag.c.
Removed internal datatypes and files from the generated documents.
Wed Sep 19 13:34:20 EDT 2007 Pekka.Pessi@nokia.com
* docs: updated the generation of documentation. Updated links to header files.
Thu Sep 20 08:45:32 EDT 2007 Pekka.Pessi@nokia.com
* sip/Makefile.am: added tags to <sofia-sip/sip_extra.h>
Added check for extra tags in torture_sip.c.
Thu Sep 20 14:45:22 EDT 2007 Pekka.Pessi@nokia.com
* stun: updated documentation
Wed Jul 4 18:55:20 EDT 2007 Pekka.Pessi@nokia.com
* torture_heap.c: added tests for ##sort() and su_smoothsort()
Wed Jul 4 18:56:59 EDT 2007 Pekka.Pessi@nokia.com
* Makefile.am: added smoothsort.c
Fri Jul 13 12:38:44 EDT 2007 Pekka.Pessi@nokia.com
* sofia-sip/heap.h: heap_remove() now set()s index to 0 on removed item
Mon Jul 23 11:14:22 EDT 2007 Pekka.Pessi@nokia.com
* sofia-sip/heap.h: fixed bug in heap##remove()
If left kid was in heap but right was not, left kid was ignored.
Wed Jul 4 18:51:08 EDT 2007 Pekka.Pessi@nokia.com
* smoothsort.c: added
Wed Jul 4 18:51:34 EDT 2007 Pekka.Pessi@nokia.com
* heap.h: using su_smoothsort()
Fri Jul 6 10:20:27 EDT 2007 Pekka.Pessi@nokia.com
* smoothsort.c: added
Wed Sep 19 17:40:30 EDT 2007 Pekka.Pessi@nokia.com
* msg_parser.awk: generate two parser tables, default and extended
Wed Sep 19 18:39:45 EDT 2007 Pekka.Pessi@nokia.com
* msg_parser.awk: just generate list of extra headers
Allocate extended parser dynamically.
Wed Sep 19 18:59:59 EDT 2007 Pekka.Pessi@nokia.com
* sip: added Remote-Party-ID, P-Asserted-Identity, P-Preferred-Identity
Added functions sip_update_default_mclass() and sip_extend_mclass()
for handling the extended parser. Note that Reply-To and Alert-Info are only
available with the extended parser.
Wed Sep 19 19:05:44 EDT 2007 Pekka.Pessi@nokia.com
* RELEASE: updated
Thu Sep 20 13:38:59 EDT 2007 Pekka.Pessi@nokia.com
* sip: updated documentation
Thu Sep 20 14:17:28 EDT 2007 Pekka.Pessi@nokia.com
* docs/conformance.docs: updated
Mon Oct 1 10:11:14 EDT 2007 Pekka.Pessi@nokia.com
* tport_tag.c: re-enabled tptag_trusted
Thu Oct 4 09:21:07 EDT 2007 Pekka.Pessi@nokia.com
* su_osx_runloop.c: moved virtual function table after struct definition
Preparing for su_port_vtable_t refactoring.
Thu Oct 4 10:22:03 EDT 2007 Pekka.Pessi@nokia.com
* su_source.c: refactored initialization/deinitialization
Fri Oct 5 04:58:18 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* sip_extra.c: fixed prototypes with isize_t
Fri Oct 5 04:58:45 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* test_nta_api.c: removed warnings about signedness
Fri Oct 5 04:59:02 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* test_nua_params.c: removed warnings about constness
Fri Oct 5 07:20:26 EDT 2007 Pekka Pessi <first.lastname@nokia.com>
* su_port.h, su_root.c: cleaned argument checking
The su_root_*() and su_port_*() functions now check their arguments once
and do not assert() with NULL arguments. The sur_task->sut_port should
always be valid while su_root_t is alive.
Fri Oct 5 07:22:09 EDT 2007 Pekka Pessi <first.lastname@nokia.com>
* su: added su_root_obtain(), su_root_release() and su_root_has_thread()
When root is created with su_root_create() or cloned with su_clone_start(),
the resulting root is obtained by the calling or created thread,
respectively.
The root can be released with su_root_release() and another thread can
obtain it.
The function su_root_has_thread() can be used to check if a thread has
obtained or released the root.
Implementation upgraded the su_port_own_thread() method as su_port_thread().
Fri Oct 5 07:28:10 EDT 2007 Pekka Pessi <first.lastname@nokia.com>
* su_port.h: removed su_port_threadsafe() and su_port_yield() methods
su_port_wait_events() replaces su_port_yield().
Fri Oct 5 13:26:04 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* msg_parser.awk: not extending header structure unless needed.
Removed gawk-ish /* comments */.
Fri Oct 5 14:32:25 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* run_test_su: removed GNUisms
Fri Oct 5 14:32:47 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* Makefile.am: removed implicit check target test_urlmap
Fri Oct 5 14:22:32 EDT 2007 Pekka Pessi <first.lastname@nokia.com>
* torture_sresolv.c: use CLOCK_REALTIME if no CLOCK_PROCESS_CPUTIME_ID available
Casting timespec tv_sec to unsigned long.
Fri Oct * nua_s added handling nua_prack()
Thanks to Fabio Margarido for the patch.
Mon Oct 8 10:24:35 EDT 2007 Pekka.Pessi@nokia.com
* test_nua: added test for sf.net bug #1803686
Mon Oct 8 08:15:23 EDT 2007 Pekka.Pessi@nokia.com
* RELEASE: updated.
Mon Oct 8 09:30:36 EDT 2007 Pekka.Pessi@nokia.com
* nua_stack: added handling nua_prack()
Thanks to Fabio Margarido for the patch.
Mon Oct 8 10:24:35 EDT 2007 Pekka.Pessi@nokia.com
* test_nua: added test for sf.net bug #1803686
Mon Oct 8 10:26:31 EDT 2007 Pekka.Pessi@nokia.com
* nua: added test for nua_prack() (sf.net bug #1804248)
Avoid sending nua_i_state after nua_prack() if no SDP O/A is happening, too.
Mon Oct 8 10:32:04 EDT 2007 Mikhail Zabaluev <mikhail.zabaluev@nokia.com>
* su_source.c: don t leak the wait arrays
Mon Oct 8 10:37:11 EDT 2007 Pekka.Pessi@nokia.com
* RELEASE: updated
Wed Oct 10 11:55:21 EDT 2007 Pekka.Pessi@nokia.com
* sip_parser.c: silenced warning about extra const in sip_extend_mclass()
Wed Oct 10 11:57:08 EDT 2007 Pekka.Pessi@nokia.com
* nta_tag.c: updated tag documentation
Wed Oct 10 13:16:40 EDT 2007 Pekka.Pessi@nokia.com
* nua: fix logging crash if outbound used with application contact
Silenced warnings.
Wed Oct 10 13:30:45 EDT 2007 Pekka.Pessi@nokia.com
* msg_parser.awk: removed extra "const"
Wed Oct 10 13:31:45 EDT 2007 Pekka.Pessi@nokia.com
* Makefile.am's: fixed distclean of documentation
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5840 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-10-11 14:16:59 +00:00
|
|
|
/** @internal @brief NUA handle.
|
2006-12-21 06:30:28 +00:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
struct nua_handle_s
|
|
|
|
{
|
|
|
|
su_home_t nh_home[1]; /**< Memory home */
|
|
|
|
nua_handle_t *nh_next;
|
|
|
|
nua_handle_t **nh_prev;
|
|
|
|
|
|
|
|
nua_t *nh_nua; /**< Pointer to NUA object */
|
2007-04-15 02:03:41 +00:00
|
|
|
void *nh_valid; /**< Cookie */
|
|
|
|
#define nua_valid_handle_cookie ((void *)(intptr_t)nua_handle)
|
2006-12-21 06:30:28 +00:00
|
|
|
nua_hmagic_t *nh_magic; /**< Application context */
|
|
|
|
|
|
|
|
tagi_t *nh_tags; /**< Initial tags */
|
|
|
|
tagi_t *nh_ptags; /**< Initial parameters */
|
|
|
|
|
|
|
|
nua_handle_t *nh_identity; /**< Identity */
|
|
|
|
|
|
|
|
nua_handle_preferences_t *nh_prefs; /**< Preferences */
|
|
|
|
|
|
|
|
/* Handle type is determined by special event and flags. */
|
|
|
|
nua_event_t nh_special; /**< Special event */
|
|
|
|
unsigned nh_has_invite:1; /**< Has call */
|
|
|
|
unsigned nh_has_subscribe:1; /**< Has watcher */
|
|
|
|
unsigned nh_has_notify:1; /**< Has notifier */
|
|
|
|
unsigned nh_has_register:1; /**< Has registration */
|
|
|
|
|
|
|
|
/* Call status */
|
|
|
|
unsigned nh_active_call:1;
|
|
|
|
unsigned nh_hold_remote:1;
|
|
|
|
|
|
|
|
unsigned nh_ref_by_stack:1; /**< Has stack used the handle? */
|
|
|
|
unsigned nh_ref_by_user:1; /**< Has user used the handle? */
|
|
|
|
unsigned nh_init:1; /**< Handle has been initialized */
|
|
|
|
unsigned nh_used_ptags:1; /**< Ptags has been used */
|
|
|
|
unsigned :0;
|
|
|
|
|
|
|
|
nua_dialog_state_t nh_ds[1];
|
|
|
|
|
|
|
|
auth_client_t *nh_auth; /**< Authorization objects */
|
|
|
|
|
|
|
|
soa_session_t *nh_soa; /**< Media session */
|
|
|
|
|
|
|
|
struct nua_referral {
|
|
|
|
nua_handle_t *ref_handle; /**< Referring handle */
|
|
|
|
sip_event_t *ref_event; /**< Event used with NOTIFY */
|
|
|
|
} nh_referral[1];
|
|
|
|
|
|
|
|
nea_server_t *nh_notifier; /**< SIP notifier */
|
|
|
|
};
|
|
|
|
|
2007-04-15 02:03:41 +00:00
|
|
|
#define NH_IS_VALID(nh) \
|
|
|
|
((nh) && (nh)->nh_valid == nua_valid_handle_cookie)
|
2006-12-21 06:30:28 +00:00
|
|
|
|
|
|
|
#define NH_STATUS(nh) \
|
|
|
|
(nh)->nh_status, \
|
|
|
|
(nh)->nh_phrase, \
|
|
|
|
SIPTAG_WARNING_STR(nh->nh_warning)
|
|
|
|
|
|
|
|
#define NH_IS_DEFAULT(nh) ((nh) == (nh)->nh_nua->nua_handles)
|
|
|
|
|
2007-05-08 19:14:10 +00:00
|
|
|
su_inline
|
2006-12-21 06:30:28 +00:00
|
|
|
int nh_is_special(nua_handle_t *nh)
|
|
|
|
{
|
|
|
|
return nh == NULL || nh->nh_special;
|
|
|
|
}
|
|
|
|
|
2007-12-06 18:44:14 +00:00
|
|
|
typedef struct nua_event_frame_s nua_event_frame_t;
|
|
|
|
|
2006-12-21 06:30:28 +00:00
|
|
|
extern char const nua_internal_error[];
|
|
|
|
|
|
|
|
#define NUA_INTERNAL_ERROR 900, nua_internal_error
|
merge to sofia sip darcs tree. Includes multiple fixes and several merges of changes from the freeswitch tree back to darcs as follows:
Mon Nov 19 22:05:07 EST 2007 Pekka Pessi <first.lastname@nokia.com>
* test_htable2.c: define struct before using it in prototypes
Fri Jan 11 09:12:01 EST 2008 Bernhard Suttner <suttner at comdasys.com>
* Using # in SOATAG_HOLD to set media as inactive instead of sendonly
Fri Jan 11 09:15:18 EST 2008 Pekka.Pessi@nokia.com
* soa_tag.c: documented SOATAG_HOLD() inactive mode
Fri Jan 11 09:28:46 EST 2008 Pekka.Pessi@nokia.com
* su_addrinfo.c: if su_getaddrinfo() service is NULL, try both with "0" and NULL
Fri Jan 11 09:30:23 EST 2008 Pekka.Pessi@nokia.com
* Makefile.am: added tests to DIST_SUBDIRS
Fri Jan 11 12:11:12 EST 2008 Pekka.Pessi@nokia.com
* nta.c: NetModule hack re-prioritizing SRV records
Original hack by Stefan Leuenberger <Stefan.Leuenberger@netmodule.com>.
The hack reprioritizes the SRV records used with transaction in case a
server refuses connection or it does not answer.
Fri Jan 11 12:12:23 EST 2008 Pekka.Pessi@nokia.com
* sres.c, sres_cache.c: NetModule hack for re-prioritizing SRV records
Original hack by Stefan Leuenberger <Stefan.Leuenberger@netmodule.com>.
The hack reprioritizes the SRV records used with transaction in case a
server refuses connection or it does not answer.
New functions sres_cache_set_srv_priority() and
sres_set_cached_srv_priority().
Fri Jan 11 12:15:19 EST 2008 Pekka.Pessi@nokia.com
* Makefile.am: fixed dist target
Fri Jan 11 12:19:33 EST 2008 Pekka.Pessi@nokia.com
* tport_internal.h: grammar in doc
Mon Jan 14 06:59:17 EST 2008 Pekka.Pessi@nokia.com
* su.h: IPv6 fix for Vista SDK
Patch by Michael Jerris
Wed Jan 16 13:20:47 EST 2008 Pekka.Pessi@nokia.com
* nua: fix sf.net bug #1867753 (avoid duplicating initial route set)
Thu Jan 17 07:48:10 EST 2008 Pekka.Pessi@nokia.com
* sres.c, sres_cache.c: documented sres_set_cached_srv_priority(), sres_cache_set_srv_priority()
Thu Jan 17 07:51:32 EST 2008 Pekka.Pessi@nokia.com
* sofia-sip/su_wait.h, su_port.h, su_root.c: documented new functions and types for 1.12.8
Thu Jan 17 07:52:03 EST 2008 Pekka.Pessi@nokia.com
* sofia-sip/htable2.h: marked new features for release 1.12.8
Thu Jan 17 07:52:33 EST 2008 Pekka.Pessi@nokia.com
* su_alloc.c: marked new features for release 1.12.8.
Thu Jan 17 07:53:01 EST 2008 Pekka.Pessi@nokia.com
* AUTHORS: updated
Thu Jan 17 07:53:21 EST 2008 Pekka.Pessi@nokia.com
* RELEASE: added new features and bug fixes since 1.12.7
Thu Jan 17 07:55:18 EST 2008 Pekka.Pessi@nokia.com
* libsofia-sip-ua/docs/Doxyfile.aliases: added @NEW_1_12_8 and @VERSION_1_12_8
Thu Jan 17 09:48:48 EST 2008 Pekka Pessi <Pekka.Pessi@nokia.com>
* autogen.sh: use automake 1.9 unless otherwise specified
Thu Jan 17 11:40:46 EST 2008 Pekka Pessi <Pekka.Pessi@nokia.com>
* soa_static.c: cleaned inactive hold, added tests
Thu Jan 17 11:41:54 EST 2008 Pekka Pessi <Pekka.Pessi@nokia.com>
* Makefile.am: added hide_emails.sh to dist
Thu Jan 17 11:42:35 EST 2008 Pekka Pessi <Pekka.Pessi@nokia.com>
* nua_stack.c: removed noisy debug message from nua_client_request_sendmsg()
Fri Jan 18 11:06:10 EST 2008 Pekka.Pessi@nokia.com
* nua: Added NUA_ERROR_AT() macro
Made internally generated 900 (and 904) response phrases unique as suggested
by Jerry Richards.
Mon Jan 21 10:39:50 EST 2008 Stefan Knoblich
* TLS debug cleanup
Mon Jan 21 12:05:38 EST 2008 Pekka.Pessi@nokia.com
* tport: build fixes from Freeswitch
Mon Jan 21 12:14:25 EST 2008 Pekka.Pessi@nokia.com
* su_global_log.c: disable warning on SU_DEBUG[] (Doxygen-only variable)
Patch from Michael Jerris.
Mon Jan 21 12:15:19 EST 2008 Pekka.Pessi@nokia.com
* sres.c: default log level to the same as SU_DEBUG define
Patch by Michael Jerris
Mon Jan 21 12:16:39 EST 2008 Pekka.Pessi@nokia.com
* stun.c: default log level to the same as SU_DEBUG define
Patch by Michael Jerris
Mon Jan 21 12:45:04 EST 2008 Stefan Knoblich
* TLS debug cleanup, 2/2.
Silence openssl messages, part 2 of 2. Changed to TPORT_DEBUG=1 (thanks
MikeJ). This one converts all ERR_print_errors() calls
Mon Jan 21 13:00:49 EST 2008 Pekka.Pessi@nokia.com
* nua: removed asserts() on hairy dialog/request handling cases
Mon Jan 21 14:06:35 EST 2008 Pekka.Pessi@nokia.com
* soa.c: using session state in soa_set_activity()
The media mode bits are set using (local) session description instead of
remote offer/answer when O/A has been completed.
Mon Jan 21 14:08:08 EST 2008 Pekka.Pessi@nokia.com
* soa_static.c: soa_sdp_mode_set() now includes wanted media state in offer
The wanted media state is based on original user SDP and SOATAG_HOLD()
content. Removed soa_sdp_mode_set_is_needed(), using dry-run parameter
instead.
Mon Jan 21 14:09:11 EST 2008 Pekka.Pessi@nokia.com
* nua_subnotref.c: fixed REFER re-try case
REFER trashed its dialog when it got retried if there was no other dialog
usages.
Mon Jan 21 14:20:31 EST 2008 Pekka.Pessi@nokia.com
* nua_stack.c: return specific error phrases from nua_client_init_request()
As suggested by Jerry Richards.
Tue Jan 22 11:15:04 EST 2008 Pekka.Pessi@nokia.com
* sip_util.c: updated sip_response_terminates_dialog() as per RFC 5057.
Changes handling of 423 in case of SUBSCRIBE.
Tue Jan 22 11:34:01 EST 2008 Pekka.Pessi@nokia.com
* conformance.docs: added RFC 5057 (sipping-dialogusage)
Tue Jan 22 11:34:16 EST 2008 Pekka.Pessi@nokia.com
* test_auth_digest.c: testing empty realm
Tue Jan 22 11:35:44 EST 2008 Pekka.Pessi@nokia.com
* test_soa.c: testing hold with inactive, offered mode and setting remote activity flags while in hold
Tue Jan 22 12:27:41 EST 2008 Pekka.Pessi@nokia.com
* nta.c: fixed memory corruption in case sending ACK failed
Thanks for Fabio Margarido for reporting this problem.
Tue Jan 22 12:49:02 EST 2008 Pekka.Pessi@nokia.com
* nua/test_refer.c: run test_challenge_refer() only if we use proxy
Test case is now more deterministic, too.
Tue Jan 22 12:51:59 EST 2008 Pekka.Pessi@nokia.com
* docs/Makefile.am, docs/conformance.docs: fixed links to RFC 5057.
Tue Jan 22 13:57:38 EST 2008 Pekka.Pessi@nokia.com
* sres: added ttl parameter to sres_set_cached_srv_priority() and sres_cache_set_srv_priority().
Tue Jan 22 13:59:44 EST 2008 Pekka.Pessi@nokia.com
* nta.c: added NTATAG_GRAYLIST().
Use NTATAG_GRAYLIST() as ttl value for sres_set_cached_srv_priority().
Tue Jan 22 14:04:29 EST 2008 Pekka.Pessi@nokia.com
* RELEASE: updated.
Tue Jan 22 14:04:29 EST 2008 Pekka.Pessi@nokia.com
* RELEASE: updated.
Wed Jan 23 06:56:11 EST 2008 Pekka.Pessi@nokia.com
* sip_extra.c, sip_parser.c: updated documentation
Wed Jan 23 09:47:50 EST 2008 Pekka.Pessi@nokia.com
* test_nta.c: fixed receiving with sink socket
Wed Jan 23 10:07:30 EST 2008 Pekka Pessi <Pekka.Pessi@nokia.com>
* soa_static.c: fixed signedness error
Wed Jan 23 10:11:14 EST 2008 Pekka Pessi <Pekka.Pessi@nokia.com>
* win32 project files: fixed slash direction
Wed Jan 23 10:13:00 EST 2008 Pekka Pessi <Pekka.Pessi@nokia.com>
* torture_su.c: set blocking on
Wed Jan 23 10:13:36 EST 2008 Pekka Pessi <Pekka.Pessi@nokia.com>
* test_tport.c: using blocking sockets in test_incomplete()
Wed Jan 23 11:01:11 EST 2008 Pekka.Pessi@nokia.com
* nta.c: now using RFC3261-compliant dialog-matching
Wed Jan 23 11:05:23 EST 2008 Pekka.Pessi@nokia.com
* nta.c: ignore tags in nta_leg_by_dialog() if they are empty strings
Wed Jan 23 11:05:58 EST 2008 Pekka.Pessi@nokia.com
* nta.c: asserting in proper place when handling queue tail
Wed Jan 23 12:11:09 EST 2008 Pekka.Pessi@nokia.com
* torture_sip.c: added tests for accessing other extra headers beside P-Asserted-Identity/P-Preferred-Identity
Wed Jan 23 13:08:55 EST 2008 Pekka.Pessi@nokia.com
* nua: terminate dialog when redirected and re-establish it with new request
Wed Jan 23 13:18:16 EST 2008 Pekka.Pessi@nokia.com
* test_100rel.c: added test for redirect after 100rel response.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@7328 d0543943-73ff-0310-b7d9-9358b9ac24b2
2008-01-23 18:37:33 +00:00
|
|
|
#define NUA_ERROR_AT(file, line) 900, "Internal error at " file ":" #line
|
2006-12-21 06:30:28 +00:00
|
|
|
|
|
|
|
struct nua_s {
|
|
|
|
su_home_t nua_home[1];
|
|
|
|
|
|
|
|
/* API (client) side */
|
|
|
|
su_root_t *nua_api_root;
|
|
|
|
su_clone_r nua_clone;
|
|
|
|
su_task_r nua_client;
|
|
|
|
|
2008-02-27 22:12:16 +00:00
|
|
|
su_network_changed_t *nua_nw_changed;
|
|
|
|
|
2006-12-21 06:30:28 +00:00
|
|
|
nua_callback_f nua_callback;
|
|
|
|
nua_magic_t *nua_magic;
|
|
|
|
|
2007-12-06 18:44:14 +00:00
|
|
|
nua_event_frame_t *nua_current;
|
2006-12-21 06:30:28 +00:00
|
|
|
nua_saved_event_t nua_signal[1];
|
|
|
|
|
|
|
|
/* Engine state flags */
|
|
|
|
unsigned nua_shutdown_started:1; /**< Shutdown initiated */
|
|
|
|
unsigned nua_shutdown_final:1; /**< Shutdown is complete */
|
2007-10-11 19:58:13 +00:00
|
|
|
|
|
|
|
unsigned nua_from_is_set;
|
2006-12-21 06:30:28 +00:00
|
|
|
unsigned :0;
|
|
|
|
|
2008-02-27 22:12:16 +00:00
|
|
|
/**< Used by stop-and-wait args calls */
|
|
|
|
tagi_t const *nua_args;
|
2008-02-27 21:57:19 +00:00
|
|
|
|
2008-02-27 22:12:16 +00:00
|
|
|
/**< Local SIP address. Contents are kept around for ever. */
|
|
|
|
sip_from_t nua_from[1];
|
2006-12-21 06:30:28 +00:00
|
|
|
|
|
|
|
/* Protocol (server) side */
|
|
|
|
|
|
|
|
nua_registration_t *nua_registrations; /**< Active registrations */
|
|
|
|
|
|
|
|
/* Constants */
|
|
|
|
sip_accept_t *nua_invite_accept; /* What we accept for invite */
|
|
|
|
|
|
|
|
su_root_t *nua_root;
|
|
|
|
su_task_r nua_server;
|
|
|
|
nta_agent_t *nua_nta;
|
|
|
|
su_timer_t *nua_timer;
|
|
|
|
|
2008-02-27 22:12:16 +00:00
|
|
|
void *nua_sip_parser;
|
|
|
|
|
|
|
|
sip_time_t nua_shutdown;
|
|
|
|
|
|
|
|
/* Route */
|
|
|
|
sip_service_route_t *nua_service_route;
|
|
|
|
|
2006-12-21 06:30:28 +00:00
|
|
|
/* User-agent parameters */
|
2008-02-27 22:12:16 +00:00
|
|
|
unsigned nua_media_enable:1;
|
|
|
|
|
|
|
|
unsigned :0;
|
|
|
|
|
|
|
|
#if HAVE_SMIME /* Start NRC Boston */
|
|
|
|
sm_object_t *sm;
|
|
|
|
#endif /* End NRC Boston */
|
2006-12-21 06:30:28 +00:00
|
|
|
|
|
|
|
nua_handle_t *nua_handles;
|
|
|
|
nua_handle_t **nua_handles_tail;
|
|
|
|
};
|
|
|
|
|
|
|
|
#define nua_dhandle nua_handles
|
|
|
|
|
|
|
|
#if HAVE_FUNC
|
|
|
|
#define enter (void)SU_DEBUG_9(("nua: %s: entering\n", __func__))
|
|
|
|
#define nh_enter (void)SU_DEBUG_9(("nua %s(%p): entering\n", __func__, nh))
|
|
|
|
#elif HAVE_FUNCTION
|
|
|
|
#define enter (void)SU_DEBUG_9(("nua: %s: entering\n", __FUNCTION__))
|
|
|
|
#define nh_enter (void)SU_DEBUG_9(("nua %s(%p): entering\n", __FUNCTION__, nh))
|
|
|
|
#define __func__ __FUNCTION__
|
|
|
|
#else
|
|
|
|
#define enter ((void)0)
|
|
|
|
#define nh_enter ((void)0)
|
|
|
|
#define __func__ "nua"
|
|
|
|
#endif
|
|
|
|
|
2007-12-06 18:44:14 +00:00
|
|
|
su_inline nua_t *nua_stack_ref(nua_t *nua)
|
|
|
|
{
|
|
|
|
return (nua_t *)su_home_ref(nua->nua_home);
|
|
|
|
}
|
|
|
|
|
|
|
|
su_inline void nua_stack_unref(nua_t *nua)
|
|
|
|
{
|
|
|
|
su_home_unref(nua->nua_home);
|
|
|
|
}
|
|
|
|
|
2006-12-21 06:30:28 +00:00
|
|
|
/* Internal prototypes */
|
|
|
|
int nua_stack_init(su_root_t *root, nua_t *nua);
|
|
|
|
void nua_stack_deinit(su_root_t *root, nua_t *nua);
|
|
|
|
|
|
|
|
int nua_stack_init_transport(nua_t *nua, tagi_t const *tags);
|
|
|
|
|
|
|
|
int nua_stack_init_registrations(nua_t *nua);
|
|
|
|
|
|
|
|
nua_registration_t *nua_registration_by_aor(nua_registration_t const *list,
|
|
|
|
sip_from_t const *aor,
|
|
|
|
url_t const *remote_uri,
|
|
|
|
int only_default);
|
|
|
|
|
|
|
|
sip_contact_t const *nua_registration_contact(nua_registration_t const *nr);
|
|
|
|
|
|
|
|
int nua_registration_process_request(nua_registration_t *nr,
|
|
|
|
nta_incoming_t *irq,
|
|
|
|
sip_t const *sip);
|
|
|
|
|
|
|
|
void nua_stack_post_signal(nua_handle_t *nh, nua_event_t event,
|
|
|
|
tag_type_t tag, tag_value_t value, ...);
|
|
|
|
|
|
|
|
typedef int nua_stack_signal_handler(nua_t *,
|
|
|
|
nua_handle_t *,
|
|
|
|
nua_event_t,
|
|
|
|
tagi_t const *);
|
|
|
|
|
2007-12-06 18:44:14 +00:00
|
|
|
void nua_move_signal(nua_saved_signal_t a[1], nua_saved_signal_t b[1]);
|
|
|
|
nua_signal_data_t const *nua_signal_data(nua_saved_signal_t const saved[1]);
|
|
|
|
void nua_destroy_signal(nua_saved_signal_t saved[1]);
|
|
|
|
|
2006-12-21 06:30:28 +00:00
|
|
|
nua_stack_signal_handler
|
|
|
|
nua_stack_set_params, nua_stack_get_params,
|
|
|
|
nua_stack_register,
|
|
|
|
nua_stack_invite, nua_stack_ack, nua_stack_cancel,
|
Sync to current darcs tree:
Mon Sep 17 14:50:04 EDT 2007 Pekka.Pessi@nokia.com
* sofia-sip/sip_util.h: updated documentation
Mon Sep 17 14:50:18 EDT 2007 Pekka.Pessi@nokia.com
* sofia-sip/tport_tag.h: updated documentation
Mon Sep 17 14:50:28 EDT 2007 Pekka.Pessi@nokia.com
* soa_tag.c: updated documentation
Wed Sep 19 12:50:01 EDT 2007 Pekka.Pessi@nokia.com
* msg: updated documentation
Wed Sep 19 13:29:50 EDT 2007 Pekka.Pessi@nokia.com
* url: updated documentation
Wed Sep 19 13:32:14 EDT 2007 Pekka.Pessi@nokia.com
* nth: updated documentation
Wed Sep 19 13:32:27 EDT 2007 Pekka.Pessi@nokia.com
* nea: updated documentation
Wed Sep 19 13:33:36 EDT 2007 Pekka.Pessi@nokia.com
* http: updated documentation
Wed Sep 19 13:36:58 EDT 2007 Pekka.Pessi@nokia.com
* bnf: updated documentation
Wed Sep 19 13:38:58 EDT 2007 Pekka.Pessi@nokia.com
* nua: updated nua_stack_init_handle() prototype
Wed Sep 19 18:45:56 EDT 2007 Pekka.Pessi@nokia.com
* sip: added sip_name_addr_xtra(), sip_name_addr_dup()
Wed Sep 19 19:00:19 EDT 2007 Pekka.Pessi@nokia.com
* sip_basic.c: cleaned old crud
Thu Sep 20 13:34:04 EDT 2007 Pekka.Pessi@nokia.com
* iptsec: updated documentation
Thu Sep 20 13:36:22 EDT 2007 Pekka.Pessi@nokia.com
* tport: updated documentation
Thu Sep 20 13:36:56 EDT 2007 Pekka.Pessi@nokia.com
* su: updated documentation
Removed internal files from doxygen-generated documentation.
Thu Sep 20 13:38:29 EDT 2007 Pekka.Pessi@nokia.com
* soa: fixed documentation
Thu Sep 20 13:39:56 EDT 2007 Pekka.Pessi@nokia.com
* sdp: updated documentation
Thu Sep 20 13:40:16 EDT 2007 Pekka.Pessi@nokia.com
* ipt: updated documentation
Thu Sep 20 14:24:20 EDT 2007 Pekka.Pessi@nokia.com
* nta: updated documentation
Thu Sep 20 14:41:04 EDT 2007 Pekka.Pessi@nokia.com
* nua: updated documentation
Updated tag documentation.
Moved doxygen doc entries from sofia-sip/nua_tag.h to nua_tag.c.
Removed internal datatypes and files from the generated documents.
Wed Sep 19 13:34:20 EDT 2007 Pekka.Pessi@nokia.com
* docs: updated the generation of documentation. Updated links to header files.
Thu Sep 20 08:45:32 EDT 2007 Pekka.Pessi@nokia.com
* sip/Makefile.am: added tags to <sofia-sip/sip_extra.h>
Added check for extra tags in torture_sip.c.
Thu Sep 20 14:45:22 EDT 2007 Pekka.Pessi@nokia.com
* stun: updated documentation
Wed Jul 4 18:55:20 EDT 2007 Pekka.Pessi@nokia.com
* torture_heap.c: added tests for ##sort() and su_smoothsort()
Wed Jul 4 18:56:59 EDT 2007 Pekka.Pessi@nokia.com
* Makefile.am: added smoothsort.c
Fri Jul 13 12:38:44 EDT 2007 Pekka.Pessi@nokia.com
* sofia-sip/heap.h: heap_remove() now set()s index to 0 on removed item
Mon Jul 23 11:14:22 EDT 2007 Pekka.Pessi@nokia.com
* sofia-sip/heap.h: fixed bug in heap##remove()
If left kid was in heap but right was not, left kid was ignored.
Wed Jul 4 18:51:08 EDT 2007 Pekka.Pessi@nokia.com
* smoothsort.c: added
Wed Jul 4 18:51:34 EDT 2007 Pekka.Pessi@nokia.com
* heap.h: using su_smoothsort()
Fri Jul 6 10:20:27 EDT 2007 Pekka.Pessi@nokia.com
* smoothsort.c: added
Wed Sep 19 17:40:30 EDT 2007 Pekka.Pessi@nokia.com
* msg_parser.awk: generate two parser tables, default and extended
Wed Sep 19 18:39:45 EDT 2007 Pekka.Pessi@nokia.com
* msg_parser.awk: just generate list of extra headers
Allocate extended parser dynamically.
Wed Sep 19 18:59:59 EDT 2007 Pekka.Pessi@nokia.com
* sip: added Remote-Party-ID, P-Asserted-Identity, P-Preferred-Identity
Added functions sip_update_default_mclass() and sip_extend_mclass()
for handling the extended parser. Note that Reply-To and Alert-Info are only
available with the extended parser.
Wed Sep 19 19:05:44 EDT 2007 Pekka.Pessi@nokia.com
* RELEASE: updated
Thu Sep 20 13:38:59 EDT 2007 Pekka.Pessi@nokia.com
* sip: updated documentation
Thu Sep 20 14:17:28 EDT 2007 Pekka.Pessi@nokia.com
* docs/conformance.docs: updated
Mon Oct 1 10:11:14 EDT 2007 Pekka.Pessi@nokia.com
* tport_tag.c: re-enabled tptag_trusted
Thu Oct 4 09:21:07 EDT 2007 Pekka.Pessi@nokia.com
* su_osx_runloop.c: moved virtual function table after struct definition
Preparing for su_port_vtable_t refactoring.
Thu Oct 4 10:22:03 EDT 2007 Pekka.Pessi@nokia.com
* su_source.c: refactored initialization/deinitialization
Fri Oct 5 04:58:18 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* sip_extra.c: fixed prototypes with isize_t
Fri Oct 5 04:58:45 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* test_nta_api.c: removed warnings about signedness
Fri Oct 5 04:59:02 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* test_nua_params.c: removed warnings about constness
Fri Oct 5 07:20:26 EDT 2007 Pekka Pessi <first.lastname@nokia.com>
* su_port.h, su_root.c: cleaned argument checking
The su_root_*() and su_port_*() functions now check their arguments once
and do not assert() with NULL arguments. The sur_task->sut_port should
always be valid while su_root_t is alive.
Fri Oct 5 07:22:09 EDT 2007 Pekka Pessi <first.lastname@nokia.com>
* su: added su_root_obtain(), su_root_release() and su_root_has_thread()
When root is created with su_root_create() or cloned with su_clone_start(),
the resulting root is obtained by the calling or created thread,
respectively.
The root can be released with su_root_release() and another thread can
obtain it.
The function su_root_has_thread() can be used to check if a thread has
obtained or released the root.
Implementation upgraded the su_port_own_thread() method as su_port_thread().
Fri Oct 5 07:28:10 EDT 2007 Pekka Pessi <first.lastname@nokia.com>
* su_port.h: removed su_port_threadsafe() and su_port_yield() methods
su_port_wait_events() replaces su_port_yield().
Fri Oct 5 13:26:04 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* msg_parser.awk: not extending header structure unless needed.
Removed gawk-ish /* comments */.
Fri Oct 5 14:32:25 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* run_test_su: removed GNUisms
Fri Oct 5 14:32:47 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* Makefile.am: removed implicit check target test_urlmap
Fri Oct 5 14:22:32 EDT 2007 Pekka Pessi <first.lastname@nokia.com>
* torture_sresolv.c: use CLOCK_REALTIME if no CLOCK_PROCESS_CPUTIME_ID available
Casting timespec tv_sec to unsigned long.
Fri Oct * nua_s added handling nua_prack()
Thanks to Fabio Margarido for the patch.
Mon Oct 8 10:24:35 EDT 2007 Pekka.Pessi@nokia.com
* test_nua: added test for sf.net bug #1803686
Mon Oct 8 08:15:23 EDT 2007 Pekka.Pessi@nokia.com
* RELEASE: updated.
Mon Oct 8 09:30:36 EDT 2007 Pekka.Pessi@nokia.com
* nua_stack: added handling nua_prack()
Thanks to Fabio Margarido for the patch.
Mon Oct 8 10:24:35 EDT 2007 Pekka.Pessi@nokia.com
* test_nua: added test for sf.net bug #1803686
Mon Oct 8 10:26:31 EDT 2007 Pekka.Pessi@nokia.com
* nua: added test for nua_prack() (sf.net bug #1804248)
Avoid sending nua_i_state after nua_prack() if no SDP O/A is happening, too.
Mon Oct 8 10:32:04 EDT 2007 Mikhail Zabaluev <mikhail.zabaluev@nokia.com>
* su_source.c: don t leak the wait arrays
Mon Oct 8 10:37:11 EDT 2007 Pekka.Pessi@nokia.com
* RELEASE: updated
Wed Oct 10 11:55:21 EDT 2007 Pekka.Pessi@nokia.com
* sip_parser.c: silenced warning about extra const in sip_extend_mclass()
Wed Oct 10 11:57:08 EDT 2007 Pekka.Pessi@nokia.com
* nta_tag.c: updated tag documentation
Wed Oct 10 13:16:40 EDT 2007 Pekka.Pessi@nokia.com
* nua: fix logging crash if outbound used with application contact
Silenced warnings.
Wed Oct 10 13:30:45 EDT 2007 Pekka.Pessi@nokia.com
* msg_parser.awk: removed extra "const"
Wed Oct 10 13:31:45 EDT 2007 Pekka.Pessi@nokia.com
* Makefile.am's: fixed distclean of documentation
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5840 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-10-11 14:16:59 +00:00
|
|
|
nua_stack_bye, nua_stack_info, nua_stack_update,
|
|
|
|
nua_stack_prack,
|
2006-12-21 06:30:28 +00:00
|
|
|
nua_stack_options, nua_stack_publish, nua_stack_message,
|
|
|
|
nua_stack_subscribe, nua_stack_notify, nua_stack_refer,
|
|
|
|
nua_stack_method;
|
|
|
|
|
|
|
|
#define UA_EVENT1(e, statusphrase) \
|
2007-04-15 02:03:41 +00:00
|
|
|
nua_stack_event(nua, nh, NULL, e, statusphrase, NULL)
|
2006-12-21 06:30:28 +00:00
|
|
|
|
|
|
|
#define UA_EVENT2(e, status, phrase) \
|
2007-04-15 02:03:41 +00:00
|
|
|
nua_stack_event(nua, nh, NULL, e, status, phrase, NULL)
|
2006-12-21 06:30:28 +00:00
|
|
|
|
|
|
|
#define UA_EVENT3(e, status, phrase, tag) \
|
2007-04-15 02:03:41 +00:00
|
|
|
nua_stack_event(nua, nh, NULL, e, status, phrase, tag, NULL)
|
|
|
|
|
|
|
|
int nua_stack_tevent(nua_t *nua, nua_handle_t *nh, msg_t *msg,
|
|
|
|
nua_event_t event, int status, char const *phrase,
|
|
|
|
tag_type_t tag, tag_value_t value, ...);
|
2006-12-21 06:30:28 +00:00
|
|
|
|
|
|
|
int nua_stack_event(nua_t *nua, nua_handle_t *nh, msg_t *msg,
|
|
|
|
nua_event_t event, int status, char const *phrase,
|
2007-04-15 02:03:41 +00:00
|
|
|
tagi_t const *tags);
|
2006-12-21 06:30:28 +00:00
|
|
|
|
2007-12-06 18:44:14 +00:00
|
|
|
void nua_move_event(nua_saved_event_t a[1], nua_saved_event_t b[1]);
|
|
|
|
|
2007-04-15 02:03:41 +00:00
|
|
|
nua_handle_t *nh_create_handle(nua_t *nua, nua_hmagic_t *hmagic, tagi_t *tags);
|
2006-12-21 06:30:28 +00:00
|
|
|
|
|
|
|
nua_handle_t *nua_stack_incoming_handle(nua_t *nua,
|
|
|
|
nta_incoming_t *irq,
|
|
|
|
sip_t const *sip,
|
|
|
|
int create_dialog);
|
|
|
|
|
Sync to current darcs tree:
Mon Sep 17 14:50:04 EDT 2007 Pekka.Pessi@nokia.com
* sofia-sip/sip_util.h: updated documentation
Mon Sep 17 14:50:18 EDT 2007 Pekka.Pessi@nokia.com
* sofia-sip/tport_tag.h: updated documentation
Mon Sep 17 14:50:28 EDT 2007 Pekka.Pessi@nokia.com
* soa_tag.c: updated documentation
Wed Sep 19 12:50:01 EDT 2007 Pekka.Pessi@nokia.com
* msg: updated documentation
Wed Sep 19 13:29:50 EDT 2007 Pekka.Pessi@nokia.com
* url: updated documentation
Wed Sep 19 13:32:14 EDT 2007 Pekka.Pessi@nokia.com
* nth: updated documentation
Wed Sep 19 13:32:27 EDT 2007 Pekka.Pessi@nokia.com
* nea: updated documentation
Wed Sep 19 13:33:36 EDT 2007 Pekka.Pessi@nokia.com
* http: updated documentation
Wed Sep 19 13:36:58 EDT 2007 Pekka.Pessi@nokia.com
* bnf: updated documentation
Wed Sep 19 13:38:58 EDT 2007 Pekka.Pessi@nokia.com
* nua: updated nua_stack_init_handle() prototype
Wed Sep 19 18:45:56 EDT 2007 Pekka.Pessi@nokia.com
* sip: added sip_name_addr_xtra(), sip_name_addr_dup()
Wed Sep 19 19:00:19 EDT 2007 Pekka.Pessi@nokia.com
* sip_basic.c: cleaned old crud
Thu Sep 20 13:34:04 EDT 2007 Pekka.Pessi@nokia.com
* iptsec: updated documentation
Thu Sep 20 13:36:22 EDT 2007 Pekka.Pessi@nokia.com
* tport: updated documentation
Thu Sep 20 13:36:56 EDT 2007 Pekka.Pessi@nokia.com
* su: updated documentation
Removed internal files from doxygen-generated documentation.
Thu Sep 20 13:38:29 EDT 2007 Pekka.Pessi@nokia.com
* soa: fixed documentation
Thu Sep 20 13:39:56 EDT 2007 Pekka.Pessi@nokia.com
* sdp: updated documentation
Thu Sep 20 13:40:16 EDT 2007 Pekka.Pessi@nokia.com
* ipt: updated documentation
Thu Sep 20 14:24:20 EDT 2007 Pekka.Pessi@nokia.com
* nta: updated documentation
Thu Sep 20 14:41:04 EDT 2007 Pekka.Pessi@nokia.com
* nua: updated documentation
Updated tag documentation.
Moved doxygen doc entries from sofia-sip/nua_tag.h to nua_tag.c.
Removed internal datatypes and files from the generated documents.
Wed Sep 19 13:34:20 EDT 2007 Pekka.Pessi@nokia.com
* docs: updated the generation of documentation. Updated links to header files.
Thu Sep 20 08:45:32 EDT 2007 Pekka.Pessi@nokia.com
* sip/Makefile.am: added tags to <sofia-sip/sip_extra.h>
Added check for extra tags in torture_sip.c.
Thu Sep 20 14:45:22 EDT 2007 Pekka.Pessi@nokia.com
* stun: updated documentation
Wed Jul 4 18:55:20 EDT 2007 Pekka.Pessi@nokia.com
* torture_heap.c: added tests for ##sort() and su_smoothsort()
Wed Jul 4 18:56:59 EDT 2007 Pekka.Pessi@nokia.com
* Makefile.am: added smoothsort.c
Fri Jul 13 12:38:44 EDT 2007 Pekka.Pessi@nokia.com
* sofia-sip/heap.h: heap_remove() now set()s index to 0 on removed item
Mon Jul 23 11:14:22 EDT 2007 Pekka.Pessi@nokia.com
* sofia-sip/heap.h: fixed bug in heap##remove()
If left kid was in heap but right was not, left kid was ignored.
Wed Jul 4 18:51:08 EDT 2007 Pekka.Pessi@nokia.com
* smoothsort.c: added
Wed Jul 4 18:51:34 EDT 2007 Pekka.Pessi@nokia.com
* heap.h: using su_smoothsort()
Fri Jul 6 10:20:27 EDT 2007 Pekka.Pessi@nokia.com
* smoothsort.c: added
Wed Sep 19 17:40:30 EDT 2007 Pekka.Pessi@nokia.com
* msg_parser.awk: generate two parser tables, default and extended
Wed Sep 19 18:39:45 EDT 2007 Pekka.Pessi@nokia.com
* msg_parser.awk: just generate list of extra headers
Allocate extended parser dynamically.
Wed Sep 19 18:59:59 EDT 2007 Pekka.Pessi@nokia.com
* sip: added Remote-Party-ID, P-Asserted-Identity, P-Preferred-Identity
Added functions sip_update_default_mclass() and sip_extend_mclass()
for handling the extended parser. Note that Reply-To and Alert-Info are only
available with the extended parser.
Wed Sep 19 19:05:44 EDT 2007 Pekka.Pessi@nokia.com
* RELEASE: updated
Thu Sep 20 13:38:59 EDT 2007 Pekka.Pessi@nokia.com
* sip: updated documentation
Thu Sep 20 14:17:28 EDT 2007 Pekka.Pessi@nokia.com
* docs/conformance.docs: updated
Mon Oct 1 10:11:14 EDT 2007 Pekka.Pessi@nokia.com
* tport_tag.c: re-enabled tptag_trusted
Thu Oct 4 09:21:07 EDT 2007 Pekka.Pessi@nokia.com
* su_osx_runloop.c: moved virtual function table after struct definition
Preparing for su_port_vtable_t refactoring.
Thu Oct 4 10:22:03 EDT 2007 Pekka.Pessi@nokia.com
* su_source.c: refactored initialization/deinitialization
Fri Oct 5 04:58:18 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* sip_extra.c: fixed prototypes with isize_t
Fri Oct 5 04:58:45 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* test_nta_api.c: removed warnings about signedness
Fri Oct 5 04:59:02 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* test_nua_params.c: removed warnings about constness
Fri Oct 5 07:20:26 EDT 2007 Pekka Pessi <first.lastname@nokia.com>
* su_port.h, su_root.c: cleaned argument checking
The su_root_*() and su_port_*() functions now check their arguments once
and do not assert() with NULL arguments. The sur_task->sut_port should
always be valid while su_root_t is alive.
Fri Oct 5 07:22:09 EDT 2007 Pekka Pessi <first.lastname@nokia.com>
* su: added su_root_obtain(), su_root_release() and su_root_has_thread()
When root is created with su_root_create() or cloned with su_clone_start(),
the resulting root is obtained by the calling or created thread,
respectively.
The root can be released with su_root_release() and another thread can
obtain it.
The function su_root_has_thread() can be used to check if a thread has
obtained or released the root.
Implementation upgraded the su_port_own_thread() method as su_port_thread().
Fri Oct 5 07:28:10 EDT 2007 Pekka Pessi <first.lastname@nokia.com>
* su_port.h: removed su_port_threadsafe() and su_port_yield() methods
su_port_wait_events() replaces su_port_yield().
Fri Oct 5 13:26:04 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* msg_parser.awk: not extending header structure unless needed.
Removed gawk-ish /* comments */.
Fri Oct 5 14:32:25 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* run_test_su: removed GNUisms
Fri Oct 5 14:32:47 EDT 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
* Makefile.am: removed implicit check target test_urlmap
Fri Oct 5 14:22:32 EDT 2007 Pekka Pessi <first.lastname@nokia.com>
* torture_sresolv.c: use CLOCK_REALTIME if no CLOCK_PROCESS_CPUTIME_ID available
Casting timespec tv_sec to unsigned long.
Fri Oct * nua_s added handling nua_prack()
Thanks to Fabio Margarido for the patch.
Mon Oct 8 10:24:35 EDT 2007 Pekka.Pessi@nokia.com
* test_nua: added test for sf.net bug #1803686
Mon Oct 8 08:15:23 EDT 2007 Pekka.Pessi@nokia.com
* RELEASE: updated.
Mon Oct 8 09:30:36 EDT 2007 Pekka.Pessi@nokia.com
* nua_stack: added handling nua_prack()
Thanks to Fabio Margarido for the patch.
Mon Oct 8 10:24:35 EDT 2007 Pekka.Pessi@nokia.com
* test_nua: added test for sf.net bug #1803686
Mon Oct 8 10:26:31 EDT 2007 Pekka.Pessi@nokia.com
* nua: added test for nua_prack() (sf.net bug #1804248)
Avoid sending nua_i_state after nua_prack() if no SDP O/A is happening, too.
Mon Oct 8 10:32:04 EDT 2007 Mikhail Zabaluev <mikhail.zabaluev@nokia.com>
* su_source.c: don t leak the wait arrays
Mon Oct 8 10:37:11 EDT 2007 Pekka.Pessi@nokia.com
* RELEASE: updated
Wed Oct 10 11:55:21 EDT 2007 Pekka.Pessi@nokia.com
* sip_parser.c: silenced warning about extra const in sip_extend_mclass()
Wed Oct 10 11:57:08 EDT 2007 Pekka.Pessi@nokia.com
* nta_tag.c: updated tag documentation
Wed Oct 10 13:16:40 EDT 2007 Pekka.Pessi@nokia.com
* nua: fix logging crash if outbound used with application contact
Silenced warnings.
Wed Oct 10 13:30:45 EDT 2007 Pekka.Pessi@nokia.com
* msg_parser.awk: removed extra "const"
Wed Oct 10 13:31:45 EDT 2007 Pekka.Pessi@nokia.com
* Makefile.am's: fixed distclean of documentation
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5840 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-10-11 14:16:59 +00:00
|
|
|
int nua_stack_init_handle(nua_t *nua, nua_handle_t *nh, tagi_t const *tags);
|
2006-12-21 06:30:28 +00:00
|
|
|
|
|
|
|
enum nh_kind {
|
|
|
|
nh_has_nothing,
|
|
|
|
nh_has_invite,
|
|
|
|
nh_has_subscribe,
|
|
|
|
nh_has_notify,
|
|
|
|
nh_has_register,
|
|
|
|
nh_has_streaming
|
|
|
|
};
|
|
|
|
|
|
|
|
int nua_stack_set_handle_special(nua_handle_t *nh,
|
|
|
|
enum nh_kind kind,
|
|
|
|
nua_event_t special);
|
|
|
|
|
|
|
|
int nua_handle_save_tags(nua_handle_t *h, tagi_t *tags);
|
|
|
|
|
|
|
|
void nh_destroy(nua_t *nua, nua_handle_t *nh);
|
|
|
|
|
|
|
|
nua_handle_t *nh_validate(nua_t *nua, nua_handle_t *maybe);
|
|
|
|
|
|
|
|
sip_replaces_t *nua_stack_handle_make_replaces(nua_handle_t *handle,
|
|
|
|
su_home_t *home,
|
|
|
|
int early_only);
|
|
|
|
|
|
|
|
nua_handle_t *nua_stack_handle_by_replaces(nua_t *nua,
|
|
|
|
sip_replaces_t const *r);
|
|
|
|
|
|
|
|
/* ---------------------------------------------------------------------- */
|
|
|
|
|
|
|
|
int nua_stack_set_defaults(nua_handle_t *nh, nua_handle_preferences_t *nhp);
|
|
|
|
|
|
|
|
int nua_stack_set_from(nua_t *, int initial, tagi_t const *tags);
|
|
|
|
|
|
|
|
int nua_stack_init_instance(nua_handle_t *nh, tagi_t const *tags);
|
|
|
|
|
|
|
|
int nua_stack_process_request(nua_handle_t *nh,
|
|
|
|
nta_leg_t *leg,
|
|
|
|
nta_incoming_t *irq,
|
|
|
|
sip_t const *sip);
|
|
|
|
|
|
|
|
int nua_stack_launch_network_change_detector(nua_t *nua);
|
|
|
|
|
|
|
|
sip_contact_t const *nua_stack_get_contact(nua_registration_t const *nr);
|
|
|
|
|
|
|
|
int nua_registration_add_contact_to_request(nua_handle_t *nh,
|
|
|
|
msg_t *msg,
|
|
|
|
sip_t *sip,
|
|
|
|
int add_contact,
|
|
|
|
int add_service_route);
|
|
|
|
|
|
|
|
int nua_registration_add_contact_to_response(nua_handle_t *nh,
|
|
|
|
msg_t *msg,
|
|
|
|
sip_t *sip,
|
|
|
|
sip_record_route_t const *,
|
|
|
|
sip_contact_t const *remote);
|
|
|
|
|
|
|
|
/* ---------------------------------------------------------------------- */
|
|
|
|
|
|
|
|
#ifndef SDP_MIME_TYPE
|
|
|
|
#define SDP_MIME_TYPE nua_application_sdp
|
|
|
|
#endif
|
|
|
|
|
|
|
|
extern char const nua_application_sdp[];
|
|
|
|
|
|
|
|
/* ---------------------------------------------------------------------- */
|
|
|
|
|
|
|
|
#define SIP_METHOD_UNKNOWN sip_method_unknown, NULL
|
|
|
|
|
|
|
|
/* Private tags */
|
|
|
|
#define NUTAG_ADD_CONTACT(v) _nutag_add_contact, tag_bool_v(v)
|
|
|
|
extern tag_typedef_t _nutag_add_contact;
|
|
|
|
|
|
|
|
/* ---------------------------------------------------------------------- */
|
|
|
|
|
|
|
|
typedef unsigned longlong ull;
|
|
|
|
|
|
|
|
#define SET_STATUS(_status, _phrase) status = _status, phrase = _phrase
|
|
|
|
|
|
|
|
#define SET_STATUS2(_status, _phrase) status = _status, phrase = _phrase
|
|
|
|
|
|
|
|
/* This is an "interesting" macro:
|
|
|
|
* x is a define expanding to <i>num, str</i>.
|
|
|
|
* @a num is assigned to variable status, @a str to variable phrase.
|
|
|
|
* Macro SET_STATUS1 expands to two comma-separated expressions that are
|
|
|
|
* also usable as function arguments.
|
|
|
|
*/
|
|
|
|
#define SET_STATUS1(x) ((status = x), status), (phrase = ((void)x))
|
|
|
|
|
|
|
|
/* ---------------------------------------------------------------------- */
|
|
|
|
/* Application side prototypes */
|
|
|
|
|
2007-12-06 18:44:14 +00:00
|
|
|
int nua_signal(nua_t *nua, nua_handle_t *nh, msg_t *msg,
|
|
|
|
nua_event_t event, int status, char const *phrase,
|
|
|
|
tag_type_t tag, tag_value_t value, ...);
|
2006-12-21 06:30:28 +00:00
|
|
|
|
|
|
|
SOFIA_END_DECLS
|
|
|
|
|
|
|
|
#endif /* NUA_STACK_H */
|