Ticket #551: sip_parser.c-GenericUriPatch

File sip_parser.c-GenericUriPatch, 1.2 KB (added by bennylp, 16 years ago)
Line 
1Index: sip_parser.c
2===================================================================
3--- sip_parser.c        (Revision 2046)
4+++ sip_parser.c        (Arbeitskopie)
5@@ -81,6 +81,7 @@
6 
7 static uri_parser_rec uri_handler[PJSIP_MAX_URI_TYPES];
8 static unsigned uri_handler_count;
9+static pjsip_parse_uri_func *generic_uri_parser;
10 
11 /*
12  * Global vars (also extern).
13@@ -386,6 +387,8 @@
14     status = pjsip_register_uri_parser("sips", &int_parse_sip_url);
15     PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
16 
17+               generic_uri_parser = 0;
18+
19     /*
20      * Register header parsers.
21      */
22@@ -687,9 +690,12 @@
23 {
24     unsigned i;
25     for (i=0; i<uri_handler_count; ++i) {
26-       if (parser_stricmp(uri_handler[i].scheme, (*scheme))==0)
27+                       if (parser_stricmp(uri_handler[i].scheme, (*scheme))==0)
28            return uri_handler[i].parse;
29     }
30+               if(generic_uri_parser) {
31+                       return generic_uri_parser;
32+               }
33     return NULL;
34 }
35 
36@@ -707,6 +713,13 @@
37     return PJ_SUCCESS;
38 }
39 
40+PJ_DEF(pj_status_t) pjsip_register_generic_uri_parser(
41+               pjsip_parse_uri_func *func)
42+{
43+       generic_uri_parser = func;
44+       return PJ_SUCCESS;
45+}
46+
47 /* Public function to parse SIP message. */
48 PJ_DEF(pjsip_msg*) pjsip_parse_msg( pj_pool_t *pool,
49                                     char *buf, pj_size_t size,