diff options
author | Benny Prijono <bennylp@teluu.com> | 2005-11-23 20:56:30 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2005-11-23 20:56:30 +0000 |
commit | 9894af102a5d2e61e7629b99b7746210a8fd3475 (patch) | |
tree | 261a8df5003bab4bd60a3218ce06f845386dc7b9 /pjsip/include | |
parent | 3366b25100e19ce91de500de827aed0606390f70 (diff) |
Added tel: uri and user-defined uri parser
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@82 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/include')
-rw-r--r-- | pjsip/include/pjsip/print_util.h | 2 | ||||
-rw-r--r-- | pjsip/include/pjsip/sip_config.h | 6 | ||||
-rw-r--r-- | pjsip/include/pjsip/sip_parser.h | 7 | ||||
-rw-r--r-- | pjsip/include/pjsip/sip_tel_uri.h | 71 | ||||
-rw-r--r-- | pjsip/include/pjsip/sip_uri.h | 5 | ||||
-rw-r--r-- | pjsip/include/pjsip_core.h | 1 |
6 files changed, 88 insertions, 4 deletions
diff --git a/pjsip/include/pjsip/print_util.h b/pjsip/include/pjsip/print_util.h index c72d1ab2..0951612a 100644 --- a/pjsip/include/pjsip/print_util.h +++ b/pjsip/include/pjsip/print_util.h @@ -55,7 +55,7 @@ if (str2.slen) { \ if (len1+str2.slen >= (endbuf-buf)) return -1; \ pj_memcpy(buf,str1,len1); \ - printed=pj_strncpy2_escape(buf,&str2,(endbuf-buf-len1),&unres);\ + printed=pj_strncpy2_escape(buf+len1,&str2,(endbuf-buf-len1),&unres);\ if (printed < 0) return -1; \ buf += (printed+len1); \ } \ diff --git a/pjsip/include/pjsip/sip_config.h b/pjsip/include/pjsip/sip_config.h index 98441918..972a080f 100644 --- a/pjsip/include/pjsip/sip_config.h +++ b/pjsip/include/pjsip/sip_config.h @@ -75,6 +75,12 @@ /* Module related constants. */ #define PJSIP_MAX_MODULE 8 +/* Maximum header types. */ +#define PJSIP_MAX_HEADER_TYPES 64 + +/* Maximum URI types. */ +#define PJSIP_MAX_URI_TYPES 4 + /***************************************************************************** * Default timeout settings, in miliseconds. */ diff --git a/pjsip/include/pjsip/sip_parser.h b/pjsip/include/pjsip/sip_parser.h index d6e46e5f..b2e49694 100644 --- a/pjsip/include/pjsip/sip_parser.h +++ b/pjsip/include/pjsip/sip_parser.h @@ -59,7 +59,7 @@ enum /** * Parser syntax error exception value. */ -#define PJSIP_SYN_ERR_EXCEPTION 1 +extern int PJSIP_SYN_ERR_EXCEPTION; /** * This structure is used to get error reporting from parser. @@ -109,7 +109,8 @@ typedef pjsip_hdr* (pjsip_parse_hdr_func)(pjsip_parse_ctx *context); * Most of the specification of header parser handler (pjsip_parse_hdr_func) * also applies here (except the separator part). */ -typedef void* (pjsip_parse_uri_func)(pj_scanner *scanner, pj_pool_t *pool); +typedef void* (pjsip_parse_uri_func)(pj_scanner *scanner, pj_pool_t *pool, + pj_bool_t parse_params); /** * Register header parser handler. The parser handler MUST follow the @@ -148,7 +149,7 @@ PJ_DECL(pj_status_t) pjsip_unregister_hdr_parser( const char *hname, * * @return zero on success. */ -PJ_DECL(pj_status_t) pjsip_register_uri_parser( const char *scheme, +PJ_DECL(pj_status_t) pjsip_register_uri_parser( char *scheme, pjsip_parse_uri_func *func); /** diff --git a/pjsip/include/pjsip/sip_tel_uri.h b/pjsip/include/pjsip/sip_tel_uri.h new file mode 100644 index 00000000..5ade09c6 --- /dev/null +++ b/pjsip/include/pjsip/sip_tel_uri.h @@ -0,0 +1,71 @@ +/* $Id$ */ +/* + * Copyright (C) 2003-2006 Benny Prijono <benny@prijono.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef __PJSIP_TEL_URI_H__ +#define __PJSIP_TEL_URI_H__ + +/** + * @file sip_tel_uri.h + * @brief Tel: URI + */ + +#include <pjsip/sip_uri.h> + + +PJ_BEGIN_DECL + +/** + * tel: URI. + */ +typedef struct pjsip_tel_uri +{ + pjsip_uri_vptr *vptr; /**< Pointer to virtual function table. */ + pj_str_t number; /**< Global or local phone number */ + pj_str_t context; /**< Phone context (for local number). */ + pj_str_t ext_param; /**< Extension param. */ + pj_str_t isub_param; /**< ISDN sub-address param. */ + pjsip_param other_param;/**< Other parameter. */ +} pjsip_tel_uri; + + +/** + * Create a new tel: URI. + * + * @param pool The pool. + * + * @return New instance of tel: URI. + */ +PJ_DECL(pjsip_tel_uri*) pjsip_tel_uri_create(pj_pool_t *pool); + +/** + * This function compares two numbers for equality, according to rules as + * specified in RFC 3966. + * + * @param nb1 The first number. + * @param nb2 The second number. + * + * @return Zero if equal, -1 if nb1 is less than nb2, or +1 if + * nb1 is greater than nb2. + */ +PJ_DECL(int) pjsip_tel_nb_cmp(const pj_str_t *nb1, const pj_str_t *nb2); + + +PJ_END_DECL + + +#endif /* __PJSIP_TEL_URI_H__ */ diff --git a/pjsip/include/pjsip/sip_uri.h b/pjsip/include/pjsip/sip_uri.h index 0e13b300..63f0dfe1 100644 --- a/pjsip/include/pjsip/sip_uri.h +++ b/pjsip/include/pjsip/sip_uri.h @@ -27,6 +27,7 @@ #include <pjsip/sip_types.h> #include <pjsip/sip_config.h> #include <pj/list.h> +#include <pjlib-util/scanner.h> PJ_BEGIN_DECL @@ -102,12 +103,16 @@ PJ_DECL(void) pjsip_param_shallow_clone(pj_pool_t *pool, * @param param_list The parameter list. * @param buf Buffer. * @param size Size of buffer. + * @param pname_unres Specification of allowed characters in pname. + * @param pvalue_unres Specification of allowed characters in pvalue. * @param sep Separator character (either ';' or ','). * * @return The number of bytes printed, or -1 on errr. */ PJ_DECL(pj_ssize_t) pjsip_param_print_on(const pjsip_param *param_list, char *buf, pj_size_t size, + const pj_cis_t *pname_unres, + const pj_cis_t *pvalue_unres, int sep); /** diff --git a/pjsip/include/pjsip_core.h b/pjsip/include/pjsip_core.h index 6ae1c2cf..8ae286a5 100644 --- a/pjsip/include/pjsip_core.h +++ b/pjsip/include/pjsip_core.h @@ -28,6 +28,7 @@ #include <pjsip/sip_msg.h> #include <pjsip/sip_parser.h> #include <pjsip/sip_resolve.h> +#include <pjsip/sip_tel_uri.h> #include <pjsip/sip_transaction.h> #include <pjsip/sip_transport.h> #include <pjsip/sip_uri.h> |