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

Function i_enum_query

modules/enum/enum.c:746–898  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

744/*********** INFRASTRUCTURE ENUM ***************/
745
746int i_enum_query(struct sip_msg* _msg, str* suffix, str* service)
747{
748 char *user_s;
749 int user_len, i, j;
750 char name[MAX_DOMAIN_SIZE];
751 char apex[MAX_COMPONENT_SIZE + 1];
752 char separator[MAX_COMPONENT_SIZE + 1];
753 int sdl = 0; /* subdomain location: infrastructure enum offset */
754 int cc_len;
755 struct rdata* head;
756
757 char string[17];
758
759 if (parse_sip_msg_uri(_msg) < 0) {
760 LM_ERR("Parsing of R-URI failed\n");
761 return -1;
762 }
763
764 if (is_e164(&(_msg->parsed_uri.user)) == -1) {
765 LM_ERR("R-URI user is not an E164 number\n");
766 return -1;
767 }
768
769 user_s = _msg->parsed_uri.user.s;
770 user_len = _msg->parsed_uri.user.len;
771
772 /* make sure we don't run out of space in strings */
773 if (( 2*user_len + MAX_COMPONENT_SIZE + MAX_COMPONENT_SIZE + 4) > MAX_DOMAIN_SIZE) {
774 LM_ERR("Strings too long\n");
775 return -1;
776 }
777 if ( i_branchlabel.len > MAX_COMPONENT_SIZE ) {
778 LM_ERR("i_branchlabel too long\n");
779 return -1;
780 }
781 if ( suffix->len > MAX_COMPONENT_SIZE ) {
782 LM_ERR("Suffix too long\n");
783 return -1;
784 }
785
786
787 memcpy(&(string[0]), user_s, user_len);
788 string[user_len] = (char)0;
789
790 /* Set up parameters as for user-enum */
791 memcpy(apex, suffix->s , suffix->len);
792 apex[suffix->len] = (char)0;
793 sdl = 0; /* where to insert i-enum separator */
794 separator[0] = 0; /* don't insert anything */
795
796 cc_len = cclen(string + 1);
797
798 if (!strncasecmp(i_bl_alg.s,"ebl",i_bl_alg.len)) {
799 sdl = cc_len; /* default */
800
801 j = 0;
802 memcpy(name, i_branchlabel.s, i_branchlabel.len);
803 j += i_branchlabel.len;

Callers

nothing calls this directly

Calls 5

parse_sip_msg_uriFunction · 0.85
cclenFunction · 0.85
get_recordFunction · 0.85
free_rdata_listFunction · 0.85
do_queryFunction · 0.85

Tested by

no test coverage detected