1 | Index: 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, |
---|