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
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**@CFILE test_nua.h
|
|
|
|
* @brief High-level tester framework for Sofia SIP User Agent Engine
|
|
|
|
*
|
|
|
|
* @author Pekka Pessi <Pekka.Pessi@nokia.com>
|
|
|
|
* @author Martti Mela <Martti Mela@nokia.com>
|
|
|
|
*
|
|
|
|
* @date Created: Wed Aug 17 12:12:12 EEST 2005 ppessi
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef TEST_NUA_H
|
|
|
|
#define TEST_NUA_H
|
|
|
|
|
|
|
|
struct context;
|
|
|
|
#define NUA_MAGIC_T struct context
|
|
|
|
|
|
|
|
struct call;
|
|
|
|
#define NUA_HMAGIC_T struct call
|
|
|
|
|
|
|
|
#include "sofia-sip/nua.h"
|
|
|
|
#include "sofia-sip/sip_status.h"
|
|
|
|
|
|
|
|
#include <sofia-sip/sdp.h>
|
|
|
|
#include <sofia-sip/sip_header.h>
|
|
|
|
|
|
|
|
#include <sofia-sip/su_log.h>
|
|
|
|
#include <sofia-sip/su_tagarg.h>
|
|
|
|
#include <sofia-sip/su_tag_io.h>
|
|
|
|
|
|
|
|
#if __APPLE_CC__
|
|
|
|
#include <sofia-sip/su_osx_runloop.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <test_proxy.h>
|
|
|
|
#include <test_nat.h>
|
|
|
|
#include <sofia-sip/auth_module.h>
|
|
|
|
|
|
|
|
#include <stddef.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
#include <assert.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
|
|
|
|
extern char const name[];
|
|
|
|
|
|
|
|
extern int print_headings;
|
|
|
|
extern int tstflags;
|
|
|
|
#define TSTFLAGS tstflags
|
|
|
|
|
|
|
|
#include <sofia-sip/tstdef.h>
|
|
|
|
|
|
|
|
#define TEST_E(a, b) TEST_S(nua_event_name(a), nua_event_name(b))
|
|
|
|
|
|
|
|
#define NONE ((void*)-1)
|
|
|
|
|
|
|
|
struct endpoint;
|
|
|
|
|
|
|
|
typedef
|
|
|
|
int condition_function(nua_event_t event,
|
|
|
|
int status, char const *phrase,
|
|
|
|
nua_t *nua, struct context *ctx,
|
|
|
|
struct endpoint *ep,
|
|
|
|
nua_handle_t *nh, struct call *call,
|
|
|
|
sip_t const *sip,
|
|
|
|
tagi_t tags[]);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
void printer_function(nua_event_t event,
|
|
|
|
char const *operation,
|
|
|
|
int status, char const *phrase,
|
|
|
|
nua_t *nua, struct context *ctx,
|
|
|
|
struct endpoint *ep,
|
|
|
|
nua_handle_t *nh, struct call *call,
|
|
|
|
sip_t const *sip,
|
|
|
|
tagi_t tags[]);
|
|
|
|
|
|
|
|
struct proxy_transaction;
|
|
|
|
struct registration_entry;
|
|
|
|
|
|
|
|
enum { event_is_extra, event_is_normal, event_is_special };
|
|
|
|
|
|
|
|
struct eventlist
|
|
|
|
{
|
|
|
|
nua_event_t kind;
|
|
|
|
struct event *head, **tail;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct event
|
|
|
|
{
|
|
|
|
struct event *next, **prev;
|
|
|
|
struct call *call;
|
|
|
|
nua_saved_event_t saved_event[1];
|
|
|
|
nua_event_data_t const *data;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct context
|
|
|
|
{
|
|
|
|
su_home_t home[1];
|
|
|
|
su_root_t *root;
|
|
|
|
|
|
|
|
int threading, proxy_tests, expensive, quit_on_single_failure, osx_runloop;
|
Update sofia-sip from darcs:
Mon May 14 12:43:07 EDT 2007 martti.mela@nokia.com
* su_base_port.c: fixed a double free in su_base_port_start_shared().
Fri May 25 13:56:23 EDT 2007 Pekka.Pessi@nokia.com
* soa: added SOATAG_ORDERED_USER(), SOATAG_REUSE_REJECTED().
Allow replacing existing m=lines.
Sun May 27 14:52:13 EDT 2007 Pekka.Pessi@nokia.com
* msg_parser.c: fixed bug #1726034
Mon May 28 04:57:08 EDT 2007 Pekka.Pessi@nokia.com
* test_nth.c: using non-blocking connect in test program, too.
Mon May 28 04:58:05 EDT 2007 Pekka.Pessi@nokia.com
* su.c: making all sockets non-blocking by default.
Mon May 28 04:59:28 EDT 2007 Pekka.Pessi@nokia.com
* m4/sac-su.m4: moved contents into sac-s2.m4
Mon May 28 05:32:26 EDT 2007 Pekka.Pessi@nokia.com
* RELEASE: updated.
Wed May 30 10:37:53 EDT 2007 Pekka.Pessi@nokia.com
* m4/sac-su2.m4: added configure option --disable-tag-cast.
Added SU_INLINE_TAG_CAST into sofia-sip/su_configure.h{,.in}.
Using SU_INLINE_TAG_CAST in
sofia-sip/sip_tag.h{,.in}
sofia-sip/http_tag.h{,.in}
sofia-sip/su_tag.h
sofia-sip/su_tag_io.h
sofia-sip/auth_module.h
sofia-sip/nth_tag.h
sofia-sip/nua_tag.h
Fri Jun 1 15:11:52 EDT 2007 Pekka.Pessi@nokia.com
* tport.c: fixed tport_set_params() with secondary transports
Fri Jun 1 15:13:23 EDT 2007 Pekka.Pessi@nokia.com
* tport_type_tcp.c: checking for end-of-stream even if su_getmsgsize() promised more data
Fri Jun 1 15:15:34 EDT 2007 Pekka.Pessi@nokia.com
* tport: added tport_is_clear_to_send(), allow use of tport_pending() without msg
The error callback from tport can now be registered even if there is no
request pending on transport (e.g., when keeping a transport connection open
for inbound messages).
Fri Jun 1 15:16:43 EDT 2007 Pekka.Pessi@nokia.com
* nta: not retrying after an transport error if application provided the transport
Fri Jun 1 15:17:23 EDT 2007 Pekka.Pessi@nokia.com
* sip: do not accept empty URIs (<>) in From, To, and other headers expecting name-addr format
Fri Jun 1 15:17:43 EDT 2007 Pekka.Pessi@nokia.com
* torture_url.c: added test for parsing empty URLs.
Fri Jun 1 15:19:27 EDT 2007 Pekka.Pessi@nokia.com
* nua/test_proxy.[hc]: use registered connections for outbound with TCP.
Added test_proxy_close_tports() used testing recovering from TCP failures.
Fri Jun 1 15:20:33 EDT 2007 Pekka.Pessi@nokia.com
* test_nua.c: added --print-tags and --tags-a, --tags=b and --tags=c options
Added more functions for handling events
Fri Jun 1 15:22:08 EDT 2007 Pekka.Pessi@nokia.com
* test_nua: fixed some tests depending on delivery of responses in correct order
Reordering might happen if some messages are sent over TCP, other over UDP.
Fri Jun 1 15:27:55 EDT 2007 Pekka.Pessi@nokia.com
* nua_register.c: re-registering in case the TCP connection towards proxy is closed
In test_nua, Mr. B is now using TCP with the test proxy.
Fri Jun 1 15:35:39 EDT 2007 Pekka.Pessi@nokia.com
* nua/test_refer.c: fixed SIP payload checks
Fri Jun 1 15:36:08 EDT 2007 Pekka.Pessi@nokia.com
* nta_internal.h: added orq_user_tport field
Tue Jun 5 06:16:43 EDT 2007 Pekka.Pessi@nokia.com
* hide_email.sh: now fixing links, too.
Fri Jun 15 05:34:29 EDT 2007 Pekka.Pessi@nokia.com
* nua: fixed documentation entries for API functions left out from doxygen
Thanks for Jerry Ricahrds for pointing this out.
Wed May 23 10:26:26 EDT 2007 Mikhail Zabaluev <mikhail.zabaluev@nokia.com>
* Correct documentation for parameter type of NUTAG_WITH_SAVED
Mon Jun 18 12:34:58 EDT 2007 Mikhail Zabaluev <mikhail.zabaluev@nokia.com>
* Make nua_saved_event_request() and hence NUTAG_WITH_SAVED resilient to a NULL event content
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5413 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-06-20 10:41:15 +00:00
|
|
|
int print_tags;
|
2006-12-21 06:30:28 +00:00
|
|
|
char const *external_proxy;
|
|
|
|
|
2007-04-15 02:03:41 +00:00
|
|
|
int proxy_logging;
|
|
|
|
|
2006-12-21 06:30:28 +00:00
|
|
|
struct endpoint {
|
|
|
|
char name[4];
|
|
|
|
struct context *ctx; /* Backpointer */
|
|
|
|
|
2007-04-15 02:03:41 +00:00
|
|
|
int logging;
|
Update sofia-sip from darcs:
Mon May 14 12:43:07 EDT 2007 martti.mela@nokia.com
* su_base_port.c: fixed a double free in su_base_port_start_shared().
Fri May 25 13:56:23 EDT 2007 Pekka.Pessi@nokia.com
* soa: added SOATAG_ORDERED_USER(), SOATAG_REUSE_REJECTED().
Allow replacing existing m=lines.
Sun May 27 14:52:13 EDT 2007 Pekka.Pessi@nokia.com
* msg_parser.c: fixed bug #1726034
Mon May 28 04:57:08 EDT 2007 Pekka.Pessi@nokia.com
* test_nth.c: using non-blocking connect in test program, too.
Mon May 28 04:58:05 EDT 2007 Pekka.Pessi@nokia.com
* su.c: making all sockets non-blocking by default.
Mon May 28 04:59:28 EDT 2007 Pekka.Pessi@nokia.com
* m4/sac-su.m4: moved contents into sac-s2.m4
Mon May 28 05:32:26 EDT 2007 Pekka.Pessi@nokia.com
* RELEASE: updated.
Wed May 30 10:37:53 EDT 2007 Pekka.Pessi@nokia.com
* m4/sac-su2.m4: added configure option --disable-tag-cast.
Added SU_INLINE_TAG_CAST into sofia-sip/su_configure.h{,.in}.
Using SU_INLINE_TAG_CAST in
sofia-sip/sip_tag.h{,.in}
sofia-sip/http_tag.h{,.in}
sofia-sip/su_tag.h
sofia-sip/su_tag_io.h
sofia-sip/auth_module.h
sofia-sip/nth_tag.h
sofia-sip/nua_tag.h
Fri Jun 1 15:11:52 EDT 2007 Pekka.Pessi@nokia.com
* tport.c: fixed tport_set_params() with secondary transports
Fri Jun 1 15:13:23 EDT 2007 Pekka.Pessi@nokia.com
* tport_type_tcp.c: checking for end-of-stream even if su_getmsgsize() promised more data
Fri Jun 1 15:15:34 EDT 2007 Pekka.Pessi@nokia.com
* tport: added tport_is_clear_to_send(), allow use of tport_pending() without msg
The error callback from tport can now be registered even if there is no
request pending on transport (e.g., when keeping a transport connection open
for inbound messages).
Fri Jun 1 15:16:43 EDT 2007 Pekka.Pessi@nokia.com
* nta: not retrying after an transport error if application provided the transport
Fri Jun 1 15:17:23 EDT 2007 Pekka.Pessi@nokia.com
* sip: do not accept empty URIs (<>) in From, To, and other headers expecting name-addr format
Fri Jun 1 15:17:43 EDT 2007 Pekka.Pessi@nokia.com
* torture_url.c: added test for parsing empty URLs.
Fri Jun 1 15:19:27 EDT 2007 Pekka.Pessi@nokia.com
* nua/test_proxy.[hc]: use registered connections for outbound with TCP.
Added test_proxy_close_tports() used testing recovering from TCP failures.
Fri Jun 1 15:20:33 EDT 2007 Pekka.Pessi@nokia.com
* test_nua.c: added --print-tags and --tags-a, --tags=b and --tags=c options
Added more functions for handling events
Fri Jun 1 15:22:08 EDT 2007 Pekka.Pessi@nokia.com
* test_nua: fixed some tests depending on delivery of responses in correct order
Reordering might happen if some messages are sent over TCP, other over UDP.
Fri Jun 1 15:27:55 EDT 2007 Pekka.Pessi@nokia.com
* nua_register.c: re-registering in case the TCP connection towards proxy is closed
In test_nua, Mr. B is now using TCP with the test proxy.
Fri Jun 1 15:35:39 EDT 2007 Pekka.Pessi@nokia.com
* nua/test_refer.c: fixed SIP payload checks
Fri Jun 1 15:36:08 EDT 2007 Pekka.Pessi@nokia.com
* nta_internal.h: added orq_user_tport field
Tue Jun 5 06:16:43 EDT 2007 Pekka.Pessi@nokia.com
* hide_email.sh: now fixing links, too.
Fri Jun 15 05:34:29 EDT 2007 Pekka.Pessi@nokia.com
* nua: fixed documentation entries for API functions left out from doxygen
Thanks for Jerry Ricahrds for pointing this out.
Wed May 23 10:26:26 EDT 2007 Mikhail Zabaluev <mikhail.zabaluev@nokia.com>
* Correct documentation for parameter type of NUTAG_WITH_SAVED
Mon Jun 18 12:34:58 EDT 2007 Mikhail Zabaluev <mikhail.zabaluev@nokia.com>
* Make nua_saved_event_request() and hence NUTAG_WITH_SAVED resilient to a NULL event content
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5413 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-06-20 10:41:15 +00:00
|
|
|
int print_tags;
|
2007-04-15 02:03:41 +00:00
|
|
|
|
2006-12-21 06:30:28 +00:00
|
|
|
int running;
|
|
|
|
|
|
|
|
condition_function *next_condition;
|
|
|
|
nua_event_t next_event, last_event;
|
|
|
|
nua_t *nua;
|
|
|
|
sip_contact_t *contact;
|
|
|
|
sip_from_t *to;
|
|
|
|
|
2007-04-15 02:03:41 +00:00
|
|
|
sip_allow_t *allow;
|
|
|
|
char const *appl_method;
|
|
|
|
sip_supported_t *supported;
|
|
|
|
|
2006-12-21 06:30:28 +00:00
|
|
|
printer_function *printer;
|
|
|
|
|
|
|
|
char const *instance;
|
|
|
|
|
|
|
|
/* Per-call stuff */
|
|
|
|
struct call {
|
|
|
|
struct call *next;
|
|
|
|
nua_handle_t *nh;
|
|
|
|
char const *sdp;
|
|
|
|
struct eventlist *events;
|
|
|
|
} call[1], reg[1];
|
|
|
|
|
|
|
|
int (*is_special)(nua_event_t e);
|
|
|
|
|
|
|
|
/* Normal events are saved here */
|
|
|
|
struct eventlist events[1];
|
|
|
|
/* Special events are saved here */
|
|
|
|
struct eventlist specials[1];
|
|
|
|
|
|
|
|
/* State flags for complex scenarios */
|
2007-04-15 02:03:41 +00:00
|
|
|
struct {
|
2006-12-21 06:30:28 +00:00
|
|
|
unsigned n;
|
2007-04-15 02:03:41 +00:00
|
|
|
unsigned bit0:1, bit1:1, bit2:1, bit3:1;
|
|
|
|
unsigned bit4:1, bit5:1, bit6:1, bit7:1;
|
|
|
|
unsigned :0;
|
2006-12-21 06:30:28 +00:00
|
|
|
} flags;
|
|
|
|
|
|
|
|
} a, b, c;
|
|
|
|
|
|
|
|
struct proxy *p;
|
|
|
|
struct nat *nat;
|
|
|
|
};
|
|
|
|
|
|
|
|
#define RETURN_ON_SINGLE_FAILURE(retval) \
|
|
|
|
do { \
|
|
|
|
fflush(stdout); \
|
|
|
|
if (retval && ctx->quit_on_single_failure) { return retval; } \
|
|
|
|
} while(0)
|
|
|
|
|
|
|
|
|
|
|
|
int save_event_in_list(struct context *,
|
|
|
|
nua_event_t nevent,
|
|
|
|
struct endpoint *,
|
|
|
|
struct call *);
|
|
|
|
void free_events_in_list(struct context *,
|
|
|
|
struct eventlist *);
|
2007-04-15 02:03:41 +00:00
|
|
|
void free_event_in_list(struct context *ctx,
|
|
|
|
struct eventlist *list,
|
|
|
|
struct event *e);
|
2006-12-21 06:30:28 +00:00
|
|
|
|
Update sofia-sip from darcs:
Mon May 14 12:43:07 EDT 2007 martti.mela@nokia.com
* su_base_port.c: fixed a double free in su_base_port_start_shared().
Fri May 25 13:56:23 EDT 2007 Pekka.Pessi@nokia.com
* soa: added SOATAG_ORDERED_USER(), SOATAG_REUSE_REJECTED().
Allow replacing existing m=lines.
Sun May 27 14:52:13 EDT 2007 Pekka.Pessi@nokia.com
* msg_parser.c: fixed bug #1726034
Mon May 28 04:57:08 EDT 2007 Pekka.Pessi@nokia.com
* test_nth.c: using non-blocking connect in test program, too.
Mon May 28 04:58:05 EDT 2007 Pekka.Pessi@nokia.com
* su.c: making all sockets non-blocking by default.
Mon May 28 04:59:28 EDT 2007 Pekka.Pessi@nokia.com
* m4/sac-su.m4: moved contents into sac-s2.m4
Mon May 28 05:32:26 EDT 2007 Pekka.Pessi@nokia.com
* RELEASE: updated.
Wed May 30 10:37:53 EDT 2007 Pekka.Pessi@nokia.com
* m4/sac-su2.m4: added configure option --disable-tag-cast.
Added SU_INLINE_TAG_CAST into sofia-sip/su_configure.h{,.in}.
Using SU_INLINE_TAG_CAST in
sofia-sip/sip_tag.h{,.in}
sofia-sip/http_tag.h{,.in}
sofia-sip/su_tag.h
sofia-sip/su_tag_io.h
sofia-sip/auth_module.h
sofia-sip/nth_tag.h
sofia-sip/nua_tag.h
Fri Jun 1 15:11:52 EDT 2007 Pekka.Pessi@nokia.com
* tport.c: fixed tport_set_params() with secondary transports
Fri Jun 1 15:13:23 EDT 2007 Pekka.Pessi@nokia.com
* tport_type_tcp.c: checking for end-of-stream even if su_getmsgsize() promised more data
Fri Jun 1 15:15:34 EDT 2007 Pekka.Pessi@nokia.com
* tport: added tport_is_clear_to_send(), allow use of tport_pending() without msg
The error callback from tport can now be registered even if there is no
request pending on transport (e.g., when keeping a transport connection open
for inbound messages).
Fri Jun 1 15:16:43 EDT 2007 Pekka.Pessi@nokia.com
* nta: not retrying after an transport error if application provided the transport
Fri Jun 1 15:17:23 EDT 2007 Pekka.Pessi@nokia.com
* sip: do not accept empty URIs (<>) in From, To, and other headers expecting name-addr format
Fri Jun 1 15:17:43 EDT 2007 Pekka.Pessi@nokia.com
* torture_url.c: added test for parsing empty URLs.
Fri Jun 1 15:19:27 EDT 2007 Pekka.Pessi@nokia.com
* nua/test_proxy.[hc]: use registered connections for outbound with TCP.
Added test_proxy_close_tports() used testing recovering from TCP failures.
Fri Jun 1 15:20:33 EDT 2007 Pekka.Pessi@nokia.com
* test_nua.c: added --print-tags and --tags-a, --tags=b and --tags=c options
Added more functions for handling events
Fri Jun 1 15:22:08 EDT 2007 Pekka.Pessi@nokia.com
* test_nua: fixed some tests depending on delivery of responses in correct order
Reordering might happen if some messages are sent over TCP, other over UDP.
Fri Jun 1 15:27:55 EDT 2007 Pekka.Pessi@nokia.com
* nua_register.c: re-registering in case the TCP connection towards proxy is closed
In test_nua, Mr. B is now using TCP with the test proxy.
Fri Jun 1 15:35:39 EDT 2007 Pekka.Pessi@nokia.com
* nua/test_refer.c: fixed SIP payload checks
Fri Jun 1 15:36:08 EDT 2007 Pekka.Pessi@nokia.com
* nta_internal.h: added orq_user_tport field
Tue Jun 5 06:16:43 EDT 2007 Pekka.Pessi@nokia.com
* hide_email.sh: now fixing links, too.
Fri Jun 15 05:34:29 EDT 2007 Pekka.Pessi@nokia.com
* nua: fixed documentation entries for API functions left out from doxygen
Thanks for Jerry Ricahrds for pointing this out.
Wed May 23 10:26:26 EDT 2007 Mikhail Zabaluev <mikhail.zabaluev@nokia.com>
* Correct documentation for parameter type of NUTAG_WITH_SAVED
Mon Jun 18 12:34:58 EDT 2007 Mikhail Zabaluev <mikhail.zabaluev@nokia.com>
* Make nua_saved_event_request() and hence NUTAG_WITH_SAVED resilient to a NULL event content
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5413 d0543943-73ff-0310-b7d9-9358b9ac24b2
2007-06-20 10:41:15 +00:00
|
|
|
struct event *event_by_type(struct event *e, nua_event_t);
|
|
|
|
size_t count_events(struct event const *e);
|
|
|
|
|
2006-12-21 06:30:28 +00:00
|
|
|
#define CONDITION_PARAMS \
|
|
|
|
nua_event_t event, \
|
|
|
|
int status, char const *phrase, \
|
|
|
|
nua_t *nua, struct context *ctx, \
|
|
|
|
struct endpoint *ep, \
|
|
|
|
nua_handle_t *nh, struct call *call, \
|
|
|
|
sip_t const *sip, \
|
|
|
|
tagi_t tags[]
|
|
|
|
|
|
|
|
int save_events(CONDITION_PARAMS);
|
|
|
|
int until_final_response(CONDITION_PARAMS);
|
|
|
|
int save_until_final_response(CONDITION_PARAMS);
|
|
|
|
int save_until_received(CONDITION_PARAMS);
|
|
|
|
int save_until_special(CONDITION_PARAMS);
|
|
|
|
|
|
|
|
int until_terminated(CONDITION_PARAMS);
|
|
|
|
int until_ready(CONDITION_PARAMS);
|
|
|
|
int accept_call(CONDITION_PARAMS);
|
2007-04-15 02:03:41 +00:00
|
|
|
int cancel_when_ringing(CONDITION_PARAMS);
|
|
|
|
|
|
|
|
int accept_notify(CONDITION_PARAMS);
|
2007-02-09 17:32:17 +00:00
|
|
|
|
2006-12-21 06:30:28 +00:00
|
|
|
void a_callback(nua_event_t event,
|
|
|
|
int status, char const *phrase,
|
|
|
|
nua_t *nua, struct context *ctx,
|
|
|
|
nua_handle_t *nh, struct call *call,
|
|
|
|
sip_t const *sip,
|
|
|
|
tagi_t tags[]);
|
|
|
|
void b_callback(nua_event_t event,
|
|
|
|
int status, char const *phrase,
|
|
|
|
nua_t *nua, struct context *ctx,
|
|
|
|
nua_handle_t *nh, struct call *call,
|
|
|
|
sip_t const *sip,
|
|
|
|
tagi_t tags[]);
|
|
|
|
void c_callback(nua_event_t event,
|
|
|
|
int status, char const *phrase,
|
|
|
|
nua_t *nua, struct context *ctx,
|
|
|
|
nua_handle_t *nh, struct call *call,
|
|
|
|
sip_t const *sip,
|
|
|
|
tagi_t tags[]);
|
|
|
|
|
|
|
|
void run_abc_until(struct context *ctx,
|
|
|
|
nua_event_t a_event, condition_function *a_condition,
|
|
|
|
nua_event_t b_event, condition_function *b_condition,
|
|
|
|
nua_event_t c_event, condition_function *c_condition);
|
|
|
|
|
|
|
|
void run_ab_until(struct context *ctx,
|
|
|
|
nua_event_t a_event, condition_function *a_condition,
|
|
|
|
nua_event_t b_event, condition_function *b_condition);
|
|
|
|
|
|
|
|
void run_bc_until(struct context *ctx,
|
|
|
|
nua_event_t b_event, condition_function *b_condition,
|
|
|
|
nua_event_t c_event, condition_function *c_condition);
|
|
|
|
|
|
|
|
int run_a_until(struct context *, nua_event_t, condition_function *);
|
|
|
|
int run_b_until(struct context *, nua_event_t, condition_function *);
|
|
|
|
int run_c_until(struct context *, nua_event_t, condition_function *);
|
|
|
|
|
|
|
|
typedef int operation_f(struct endpoint *ep, struct call *call,
|
|
|
|
nua_handle_t *nh, tag_type_t tag, tag_value_t value,
|
|
|
|
...);
|
|
|
|
|
|
|
|
operation_f INVITE, ACK, BYE, CANCEL, AUTHENTICATE, UPDATE, INFO, PRACK,
|
|
|
|
REFER, MESSAGE, METHOD, OPTIONS, PUBLISH, UNPUBLISH, REGISTER, UNREGISTER,
|
|
|
|
SUBSCRIBE, UNSUBSCRIBE, NOTIFY, NOTIFIER, TERMINATE, AUTHORIZE;
|
|
|
|
|
|
|
|
int RESPOND(struct endpoint *ep,
|
|
|
|
struct call *call,
|
|
|
|
nua_handle_t *nh,
|
|
|
|
int status, char const *phrase,
|
|
|
|
tag_type_t tag, tag_value_t value,
|
|
|
|
...);
|
|
|
|
|
|
|
|
int DESTROY(struct endpoint *ep,
|
|
|
|
struct call *call,
|
|
|
|
nua_handle_t *nh);
|
|
|
|
|
|
|
|
struct call *check_handle(struct endpoint *ep,
|
|
|
|
struct call *call,
|
|
|
|
nua_handle_t *nh,
|
|
|
|
int status, char const *phrase);
|
|
|
|
|
|
|
|
int is_special(nua_event_t e);
|
|
|
|
int callstate(tagi_t const *tags);
|
|
|
|
int is_offer_sent(tagi_t const *tags);
|
|
|
|
int is_answer_sent(tagi_t const *tags);
|
|
|
|
int is_offer_recv(tagi_t const *tags);
|
|
|
|
int is_answer_recv(tagi_t const *tags);
|
|
|
|
int is_offer_answer_done(tagi_t const *tags);
|
|
|
|
int audio_activity(tagi_t const *tags);
|
|
|
|
int video_activity(tagi_t const *tags);
|
|
|
|
|
|
|
|
void print_event(nua_event_t event,
|
|
|
|
char const *operation,
|
|
|
|
int status, char const *phrase,
|
|
|
|
nua_t *nua, struct context *ctx,
|
|
|
|
struct endpoint *ep,
|
|
|
|
nua_handle_t *nh, struct call *call,
|
|
|
|
sip_t const *sip,
|
|
|
|
tagi_t tags[]);
|
|
|
|
|
2007-05-08 19:14:10 +00:00
|
|
|
su_inline
|
2006-12-21 06:30:28 +00:00
|
|
|
void eventlist_init(struct eventlist *list)
|
|
|
|
{
|
|
|
|
list->tail = &list->head;
|
|
|
|
}
|
|
|
|
|
2007-05-08 19:14:10 +00:00
|
|
|
su_inline
|
2006-12-21 06:30:28 +00:00
|
|
|
void call_init(struct call *call)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void endpoint_init(struct context *ctx, struct endpoint *e, char id);
|
|
|
|
|
|
|
|
int test_nua_init(struct context *ctx,
|
|
|
|
int start_proxy,
|
|
|
|
url_t const *o_proxy,
|
|
|
|
int start_nat,
|
|
|
|
tag_type_t tag, tag_value_t value, ...);
|
|
|
|
|
|
|
|
int test_deinit(struct context *ctx);
|
|
|
|
|
|
|
|
int test_nua_api_errors(struct context *ctx);
|
|
|
|
int test_stack_errors(struct context *ctx);
|
|
|
|
int test_tag_filter(void);
|
|
|
|
int test_nua_params(struct context *ctx);
|
|
|
|
|
|
|
|
int test_register(struct context *ctx);
|
|
|
|
int test_connectivity(struct context *ctx);
|
|
|
|
int test_nat_timeout(struct context *ctx);
|
|
|
|
int test_unregister(struct context *ctx);
|
|
|
|
|
|
|
|
int test_basic_call(struct context *ctx);
|
2007-04-15 02:03:41 +00:00
|
|
|
int test_offer_answer(struct context *ctx);
|
|
|
|
int test_rejects(struct context *ctx);
|
2006-12-21 06:30:28 +00:00
|
|
|
int test_mime_negotiation(struct context *ctx);
|
2007-04-15 02:03:41 +00:00
|
|
|
int test_call_timeouts(struct context *ctx);
|
2006-12-21 06:30:28 +00:00
|
|
|
int test_reject_401_aka(struct context *ctx);
|
|
|
|
int test_call_cancel(struct context *ctx);
|
|
|
|
int test_call_destroy(struct context *ctx);
|
|
|
|
int test_early_bye(struct context *ctx);
|
|
|
|
int test_call_hold(struct context *ctx);
|
|
|
|
int test_reinvites(struct context *ctx);
|
|
|
|
int test_session_timer(struct context *ctx);
|
|
|
|
int test_refer(struct context *ctx);
|
|
|
|
int test_100rel(struct context *ctx);
|
|
|
|
int test_simple(struct context *ctx);
|
|
|
|
int test_events(struct context *ctx);
|
|
|
|
|
|
|
|
int test_extension(struct context *ctx);
|
|
|
|
|
|
|
|
#endif
|