Merge "funcs/func_devstate: Remove new line in Device field of during module load"
[asterisk/asterisk.git] / channels / sip / reqresp_parser.c
index 5c2f2eb..4d91446 100644 (file)
  */
 
 /*** MODULEINFO
-       <support_level>core</support_level>
+       <support_level>extended</support_level>
  ***/
 
 #include "asterisk.h"
 
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
-
 #include "include/sip.h"
 #include "include/sip_utils.h"
 #include "include/reqresp_parser.h"
@@ -258,7 +256,7 @@ int parse_uri_full(char *uri, const char *scheme, char **user, char **pass,
        return error;
 }
 
-
+#ifdef TEST_FRAMEWORK
 AST_TEST_DEFINE(sip_parse_uri_full_test)
 {
        int res = AST_TEST_PASS;
@@ -514,7 +512,7 @@ AST_TEST_DEFINE(sip_parse_uri_full_test)
 
        return res;
 }
-
+#endif
 
 int parse_uri(char *uri, const char *scheme, char **user, char **pass,
              char **hostport, char **transport) {
@@ -530,6 +528,7 @@ int parse_uri(char *uri, const char *scheme, char **user, char **pass,
        return ret;
 }
 
+#ifdef TEST_FRAMEWORK
 AST_TEST_DEFINE(sip_parse_uri_test)
 {
        int res = AST_TEST_PASS;
@@ -687,6 +686,7 @@ AST_TEST_DEFINE(sip_parse_uri_test)
 
        return res;
 }
+#endif
 
 /*! \brief  Get caller id name from SIP headers, copy into output buffer
  *
@@ -817,6 +817,7 @@ const char *get_calleridname(const char *input, char *output, size_t outputsize)
        return input;
 }
 
+#ifdef TEST_FRAMEWORK
 AST_TEST_DEFINE(get_calleridname_test)
 {
        int res = AST_TEST_PASS;
@@ -899,6 +900,7 @@ AST_TEST_DEFINE(get_calleridname_test)
 
        return res;
 }
+#endif
 
 int get_name_and_number(const char *hdr, char **name, char **number)
 {
@@ -940,6 +942,7 @@ int get_name_and_number(const char *hdr, char **name, char **number)
        return 0;
 }
 
+#ifdef TEST_FRAMEWORK
 AST_TEST_DEFINE(get_name_and_number_test)
 {
        int res = AST_TEST_PASS;
@@ -1044,6 +1047,7 @@ AST_TEST_DEFINE(get_name_and_number_test)
 
        return res;
 }
+#endif
 
 int get_in_brackets_const(const char *src,const char **start,int *length)
 {
@@ -1176,6 +1180,7 @@ char *get_in_brackets(char *tmp)
        return out;
 }
 
+#ifdef TEST_FRAMEWORK
 AST_TEST_DEFINE(get_in_brackets_test)
 {
        int res = AST_TEST_PASS;
@@ -1252,7 +1257,7 @@ AST_TEST_DEFINE(get_in_brackets_test)
 
        return res;
 }
-
+#endif
 
 int parse_name_andor_addr(char *uri, const char *scheme, char **name,
                          char **user, char **pass, char **hostport,
@@ -1298,6 +1303,7 @@ int parse_name_andor_addr(char *uri, const char *scheme, char **name,
        return parse_uri_full(uri, scheme, user, pass, hostport, params, headers, residue2);
 }
 
+#ifdef TEST_FRAMEWORK
 AST_TEST_DEFINE(parse_name_andor_addr_test)
 {
        int res = AST_TEST_PASS;
@@ -1427,6 +1433,7 @@ AST_TEST_DEFINE(parse_name_andor_addr_test)
 
        return res;
 }
+#endif
 
 int get_comma(char *in, char **out)
 {
@@ -1523,6 +1530,7 @@ int parse_contact_header(char *contactheader, struct contactliststruct *contactl
        return last;
 }
 
+#ifdef TEST_FRAMEWORK
 AST_TEST_DEFINE(parse_contact_header_test)
 {
        int res = AST_TEST_PASS;
@@ -1668,6 +1676,7 @@ AST_TEST_DEFINE(parse_contact_header_test)
 
        return res;
 }
+#endif
 
 /*!
  * \brief Parse supported header in incoming packet
@@ -1692,17 +1701,12 @@ unsigned int parse_sip_options(const char *options, char *unsupported, size_t un
        size_t outlen = unsupported_len;
        char *cur_out = out;
 
-       if (out && (outlen > 0)) {
-               memset(out, 0, outlen);
-       }
-
        if (ast_strlen_zero(options) )
                return 0;
 
        temp = ast_strdupa(options);
 
        ast_debug(3, "Begin: parsing SIP \"Supported: %s\"\n", options);
-
        for (next = temp; next; next = sep) {
                found = FALSE;
                supported = FALSE;
@@ -1760,6 +1764,7 @@ unsigned int parse_sip_options(const char *options, char *unsupported, size_t un
        return profile;
 }
 
+#ifdef TEST_FRAMEWORK
 AST_TEST_DEFINE(sip_parse_options_test)
 {
        int res = AST_TEST_PASS;
@@ -1862,6 +1867,7 @@ AST_TEST_DEFINE(sip_parse_options_test)
 
        /* Test with unsupported char buffer */
        AST_LIST_TRAVERSE(&testdatalist, testdataptr, list) {
+               memset(unsupported, 0, sizeof(unsupported));
                option_profile = parse_sip_options(testdataptr->input_options, unsupported, ARRAY_LEN(unsupported));
                if (option_profile != testdataptr->expected_profile ||
                        strcmp(unsupported, testdataptr->expected_unsupported)) {
@@ -1896,6 +1902,7 @@ AST_TEST_DEFINE(sip_parse_options_test)
 
        return res;
 }
+#endif
 
 /*! \brief helper routine for sip_uri_cmp to compare URI parameters
  *
@@ -2250,6 +2257,7 @@ int sip_uri_cmp(const char *input1, const char *input2)
 #define URI_CMP_MATCH 0
 #define URI_CMP_NOMATCH 1
 
+#ifdef TEST_FRAMEWORK
 AST_TEST_DEFINE(sip_uri_cmp_test)
 {
        static const struct {
@@ -2366,6 +2374,7 @@ AST_TEST_DEFINE(sip_uri_cmp_test)
 
        return test_res;
 }
+#endif
 
 void free_via(struct sip_via *v)
 {
@@ -2424,7 +2433,7 @@ struct sip_via *parse_via(const char *header)
 
        /* store the port, we have to handle ipv6 addresses containing ':'
         * characters gracefully */
-       if (((parm = strchr(v->sent_by, ']')) && *(++parm) == ':') || (parm = strchr(v->sent_by, ':'))) {
+       if (((parm = strchr(v->sent_by, ']')) && *(++parm) == ':') || (!(parm = strchr(v->sent_by, ']')) && (parm = strchr(v->sent_by, ':')))) {
                char *endptr;
 
                v->port = strtol(++parm, &endptr, 10);
@@ -2452,6 +2461,7 @@ struct sip_via *parse_via(const char *header)
        return v;
 }
 
+#ifdef TEST_FRAMEWORK
 AST_TEST_DEFINE(parse_via_test)
 {
        int res = AST_TEST_PASS;
@@ -2586,8 +2596,8 @@ AST_TEST_DEFINE(parse_via_test)
 
                if (testdataptr->expected_port && testdataptr->expected_port != via->port) {
                        ast_test_status_update(test, "TEST#%d FAILED: VIA = \"%s\"\n"
-                               "parsed port = \"%d\"\n"
-                               "expected = \"%d\"\n"
+                               "parsed port = \"%u\"\n"
+                               "expected = \"%u\"\n"
                                "failed to parse port\n",
                        i, testdataptr->in, via->port, testdataptr->expected_port);
                        res = AST_TEST_FAIL;
@@ -2629,6 +2639,7 @@ AST_TEST_DEFINE(parse_via_test)
        }
        return res;
 }
+#endif
 
 void sip_request_parser_register_tests(void)
 {