summaryrefslogtreecommitdiff
path: root/pjsip/include
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2005-11-23 20:56:30 +0000
committerBenny Prijono <bennylp@teluu.com>2005-11-23 20:56:30 +0000
commit9894af102a5d2e61e7629b99b7746210a8fd3475 (patch)
tree261a8df5003bab4bd60a3218ce06f845386dc7b9 /pjsip/include
parent3366b25100e19ce91de500de827aed0606390f70 (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.h2
-rw-r--r--pjsip/include/pjsip/sip_config.h6
-rw-r--r--pjsip/include/pjsip/sip_parser.h7
-rw-r--r--pjsip/include/pjsip/sip_tel_uri.h71
-rw-r--r--pjsip/include/pjsip/sip_uri.h5
-rw-r--r--pjsip/include/pjsip_core.h1
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>