MCPcopy Create free account
hub / github.com/OpenSIPS/opensips / parse_uri

Function parse_uri

parser/parse_uri.c:307–402  ·  view source on GitHub ↗

buf= pointer to beginning of uri (sip:x@foo.bar:5060;a=b?h=i) * len= len of uri * returns: fills uri & returns <0 on error or 0 if ok */

Source from the content-addressed store, hash-verified

305 * returns: fills uri & returns <0 on error or 0 if ok
306 */
307int parse_uri(char* buf, int len, struct sip_uri* uri)
308{
309 enum states { URI_INIT, URI_USER, URI_PASSWORD, URI_PASSWORD_ALPHA,
310 URI_HOST, URI_HOST_P,
311 URI_HOST6_P, URI_HOST6_END, URI_PORT,
312 URI_PARAM, URI_PARAM_P, URI_PARAM_VAL_P,
313 URI_VAL_P, URI_HEADERS,
314 /* param states */
315 /* transport */
316 PT_T, PT_R, PT_A, PT_N, PT_S, PT_P, PT_O, PT_R2, PT_T2,
317 PT_eq,
318 /* ttl */
319 PTTL_T2, PTTL_L, PTTL_eq,
320 /* user */
321 PU_U, PU_S, PU_E, PU_R, PU_eq,
322 /* method */
323 PM_M, PM_E, PM_T, PM_H, PM_O, PM_D, PM_eq,
324 /* maddr */
325 PMA_A, PMA_D, PMA_D2, PMA_R, PMA_eq,
326 /* lr */
327 PLR_L, PLR_R_FIN, PLR_eq,
328 /* gr */
329 PG_G, PG_G_FIN, PG_eq,
330 /* r2 */
331 PR2_R, PR2_2_FIN, PR2_eq,
332 /* transport values */
333 /* udp */
334 VU_U, VU_D, VU_P_FIN,
335 /* tcp */
336 VT_T, VT_C, VT_P_FIN,
337 /* tls */
338 VTLS_L, VTLS_S_FIN,
339 /* sctp */
340 VS_S, VS_C, VS_T, VS_P_FIN,
341 /* ws */
342 VW_W, VW_S, VW_S_FIN, VWS_S_FIN,
343
344 /* pn-{provider, prid, param, purr} (RFC 8599 - SIP PN) */
345 PN_P, PN_N, PN_dash, PN_P2, PN_PR,
346 PN1_O, PN1_V, PN1_I, PN1_D, PN1_E, PN1_FIN, PN1_eq,
347 PN2_I, PN2_D, PN2_eq,
348 PN3_A, PN3_R, PN3_A2, PN3_M, PN3_eq,
349 PN4_U, PN4_R, PN4_R2, PN4_eq,
350
351 };
352 register enum states state;
353 char* s;
354 char* b; /* param start */
355 char *v; /* value start */
356 str* param; /* current param */
357 str* param_val; /* current param val */
358 str user;
359 str password;
360 unsigned int port_no;
361 register char* p;
362 char* end;
363 char* pass;
364 int found_user;

Callers 15

w_forwardFunction · 0.85
pv_get_dsturi_attrFunction · 0.85
pv_get_acc_usernameFunction · 0.85
tr_eval_uriFunction · 0.85
determine_fromto_userFunction · 0.85
get_contact_uriFunction · 0.85
create_sca_lineFunction · 0.85
get_plain_uriFunction · 0.85
alias_db_findFunction · 0.85
request_winfoFunction · 0.85
ebr_filter_match_evpFunction · 0.85
is_rpid_user_e164Function · 0.85

Calls

no outgoing calls

Tested by 1

test_parse_uriFunction · 0.68