Ignore:
Timestamp:
Apr 29, 2007 1:55:56 PM (18 years ago)
Author:
bennylp
Message:

Related to ticket #239: Error parsing quoted parameters

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/symbian/pjsip/src/test-pjsip/msg_test.c

    r127 r1225  
    674674 
    675675/*****************************************************************************/ 
     676/* Test various header parsing and production */ 
     677static int hdr_test_success(pjsip_hdr *h); 
     678static int hdr_test_accept1(pjsip_hdr *h); 
     679static int hdr_test_accept2(pjsip_hdr *h); 
     680static int hdr_test_authorization(pjsip_hdr *h); 
     681static int hdr_test_cid(pjsip_hdr *h); 
     682static int hdr_test_contact0(pjsip_hdr *h); 
     683static int hdr_test_contact1(pjsip_hdr *h); 
     684static int hdr_test_content_length(pjsip_hdr *h); 
     685static int hdr_test_content_type(pjsip_hdr *h); 
     686static int hdr_test_from(pjsip_hdr *h); 
     687static int hdr_test_proxy_authenticate(pjsip_hdr *h); 
     688static int hdr_test_record_route(pjsip_hdr *h); 
     689static int hdr_test_to(pjsip_hdr *h); 
     690static int hdr_test_via(pjsip_hdr *h); 
     691 
     692 
     693 
     694#define GENERIC_PARAM        "p0=a;p1=\"ab:;cd\";p3" 
     695#define GENERIC_PARAM_PARSED "p0=a;p1=\"ab:;cd\";p3" 
     696#define PARAM_CHAR           "[]/:&+$" 
     697#define SIMPLE_ADDR_SPEC     "sip:host" 
     698#define ADDR_SPEC            SIMPLE_ADDR_SPEC ";" PARAM_CHAR "=" PARAM_CHAR 
     699#define NAME_ADDR            "<" ADDR_SPEC ">" 
     700 
     701#define HDR_FLAG_PARSE_FAIL 1 
     702#define HDR_FLAG_DONT_PRINT 2 
     703 
     704#define TEST_EMPTY_HDR      0 
     705 
     706struct hdr_test_t 
     707{ 
     708    char *hname; 
     709    char *hshort_name; 
     710    char *hcontent; 
     711    int  (*test)(pjsip_hdr*); 
     712    unsigned flags; 
     713} hdr_test_data[] = 
     714{ 
     715    { 
     716        /* Overflowing generic string header */ 
     717        "Accept", NULL, 
     718        "a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, " \ 
     719        "a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, " \ 
     720        "a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, " \ 
     721        "a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, " \ 
     722        "a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, " \ 
     723        "a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, " \ 
     724        "a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, " \ 
     725        "a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a", 
     726        &hdr_test_success, 
     727        HDR_FLAG_PARSE_FAIL 
     728    }, 
     729 
     730    { 
     731        /* Normal Accept */ 
     732        "Accept", NULL, 
     733        "application/*, text/plain", 
     734        &hdr_test_accept1 
     735    }, 
     736 
     737    { 
     738        /* Accept with params */ 
     739        "Accept", NULL, 
     740        "application/*;p1=v1, text/plain", 
     741        &hdr_test_accept2 
     742    }, 
     743 
     744    { 
     745        /* Authorization, testing which params should be quoted */ 
     746        "Authorization", NULL, 
     747        "Digest username=\"username\", realm=\"realm\", nonce=\"nonce\", "  \ 
     748                "uri=\"sip:domain\", response=\"RESPONSE\", algorithm=MD5, "    \ 
     749                "cnonce=\"CNONCE\", opaque=\"OPAQUE\", qop=auth, nc=00000001", 
     750        &hdr_test_authorization 
     751    }, 
     752 
     753    { 
     754        /* Call ID */ 
     755        "Call-ID", "i", 
     756        "-.!%*_+`'~()<>:\\\"/[]?{}", 
     757        &hdr_test_cid, 
     758    }, 
     759 
     760    { 
     761        /* Parameter belong to hparam */ 
     762        "Contact", "m", 
     763        SIMPLE_ADDR_SPEC ";p1=v1", 
     764        &hdr_test_contact0, 
     765        HDR_FLAG_DONT_PRINT 
     766    }, 
     767 
     768    { 
     769        /* generic-param in Contact header */ 
     770        "Contact", "m", 
     771        NAME_ADDR ";" GENERIC_PARAM, 
     772        &hdr_test_contact1 
     773    }, 
     774 
     775    { 
     776        /* Content-Length */ 
     777        "Content-Length", "l", 
     778        "10", 
     779        &hdr_test_content_length 
     780    }, 
     781 
     782    { 
     783        /* Content-Type, with generic-param */ 
     784        "Content-Type", "c", 
     785        "application/sdp" ";" GENERIC_PARAM, 
     786        &hdr_test_content_type, 
     787        HDR_FLAG_DONT_PRINT 
     788    }, 
     789 
     790    { 
     791        /* From, testing parameters and generic-param */ 
     792        "From", "f", 
     793        NAME_ADDR ";" GENERIC_PARAM, 
     794        &hdr_test_from 
     795    }, 
     796 
     797    { 
     798        /* Proxy-Authenticate, testing which params should be quoted */ 
     799        "Proxy-Authenticate", NULL, 
     800        "Digest  realm=\"realm\",domain=\"sip:domain\",nonce=\"nonce\","  \ 
     801                "opaque=\"opaque\",stale=true,algorithm=MD5,qop=\"auth\"", 
     802        &hdr_test_proxy_authenticate 
     803    }, 
     804 
     805    { 
     806        /* Record-Route, param belong to header */ 
     807        "Record-Route", NULL, 
     808        NAME_ADDR ";" GENERIC_PARAM, 
     809        &hdr_test_record_route 
     810    }, 
     811 
     812    { 
     813        /* To */ 
     814        "To", "t", 
     815        NAME_ADDR ";" GENERIC_PARAM, 
     816        &hdr_test_to 
     817    }, 
     818 
     819    { 
     820        /* Via */ 
     821        "Via", "v", 
     822        "SIP/2.0/XYZ host" ";" GENERIC_PARAM, 
     823        &hdr_test_via 
     824    } 
     825}; 
     826 
     827static int hdr_test_success(pjsip_hdr *h) 
     828{ 
     829    PJ_UNUSED_ARG(h); 
     830    return 0; 
     831} 
     832 
     833/* "application/*, text/plain\r\n" */ 
     834static int hdr_test_accept1(pjsip_hdr *h) 
     835{ 
     836    pjsip_accept_hdr *hdr = (pjsip_accept_hdr*)h; 
     837 
     838    if (h->type != PJSIP_H_ACCEPT) 
     839        return -1110; 
     840 
     841    if (hdr->count != 2) 
     842        return -1120; 
     843 
     844    if (pj_strcmp2(&hdr->values[0], "application/*")) 
     845        return -1130; 
     846 
     847    if (pj_strcmp2(&hdr->values[1], "text/plain")) 
     848        return -1140; 
     849 
     850    return 0; 
     851} 
     852 
     853/* "application/*;p1=v1, text/plain\r\n" */ 
     854static int hdr_test_accept2(pjsip_hdr *h) 
     855{ 
     856    pjsip_accept_hdr *hdr = (pjsip_accept_hdr*)h; 
     857 
     858    if (h->type != PJSIP_H_ACCEPT) 
     859        return -1210; 
     860 
     861    if (hdr->count != 2) 
     862        return -1220; 
     863 
     864    if (pj_strcmp2(&hdr->values[0], "application/*;p1=v1")) 
     865        return -1230; 
     866 
     867    if (pj_strcmp2(&hdr->values[1], "text/plain")) 
     868        return -1240; 
     869 
     870    return 0; 
     871} 
     872 
     873/* 
     874        "Digest username=\"username\", realm=\"realm\", nonce=\"nonce\", "  \ 
     875                "uri=\"sip:domain\", response=\"RESPONSE\", algorithm=MD5, "    \ 
     876                "cnonce=\"CNONCE\", opaque=\"OPAQUE\", qop=auth, nc=00000001", 
     877 */ 
     878static int hdr_test_authorization(pjsip_hdr *h) 
     879{ 
     880    pjsip_authorization_hdr *hdr = (pjsip_authorization_hdr*)h; 
     881 
     882    if (h->type != PJSIP_H_AUTHORIZATION) 
     883        return -1410; 
     884 
     885    if (pj_strcmp2(&hdr->scheme, "Digest")) 
     886        return -1420; 
     887 
     888    if (pj_strcmp2(&hdr->credential.digest.username, "username")) 
     889        return -1421; 
     890 
     891    if (pj_strcmp2(&hdr->credential.digest.realm, "realm")) 
     892        return -1422; 
     893 
     894    if (pj_strcmp2(&hdr->credential.digest.nonce, "nonce")) 
     895        return -1423; 
     896 
     897    if (pj_strcmp2(&hdr->credential.digest.uri, "sip:domain")) 
     898        return -1424; 
     899 
     900    if (pj_strcmp2(&hdr->credential.digest.response, "RESPONSE")) 
     901        return -1425; 
     902 
     903    if (pj_strcmp2(&hdr->credential.digest.algorithm, "MD5")) 
     904        return -1426; 
     905 
     906    if (pj_strcmp2(&hdr->credential.digest.cnonce, "CNONCE")) 
     907        return -1427; 
     908 
     909    if (pj_strcmp2(&hdr->credential.digest.opaque, "OPAQUE")) 
     910        return -1428; 
     911 
     912    if (pj_strcmp2(&hdr->credential.digest.qop, "auth")) 
     913        return -1429; 
     914 
     915    if (pj_strcmp2(&hdr->credential.digest.nc, "00000001")) 
     916        return -1430; 
     917 
     918    return 0; 
     919} 
     920 
     921 
     922/* 
     923    "-.!%*_+`'~()<>:\\\"/[]?{}\r\n" 
     924 */ 
     925static int hdr_test_cid(pjsip_hdr *h) 
     926{ 
     927    pjsip_cid_hdr *hdr = (pjsip_cid_hdr*)h; 
     928 
     929    if (h->type != PJSIP_H_CALL_ID) 
     930        return -1510; 
     931 
     932    if (pj_strcmp2(&hdr->id, "-.!%*_+`'~()<>:\\\"/[]?{}\r\n")) 
     933        return -1520; 
     934 
     935    return 0; 
     936} 
     937 
     938/* 
     939 #define SIMPLE_ADDR_SPEC    "sip:host" 
     940 */ 
     941static int test_simple_addr_spec(pjsip_uri *uri) 
     942{ 
     943    pjsip_sip_uri *sip_uri = (pjsip_sip_uri *)pjsip_uri_get_uri(uri); 
     944 
     945    if (!PJSIP_URI_SCHEME_IS_SIP(uri)) 
     946        return -900; 
     947 
     948    if (pj_strcmp2(&sip_uri->host, "host")) 
     949        return -910; 
     950 
     951    if (sip_uri->port != 0) 
     952        return -920; 
     953 
     954    return 0; 
     955} 
     956 
     957/*  
     958#define PARAM_CHAR          "[]/:&+$" 
     959#define SIMPLE_ADDR_SPEC    "sip:host" 
     960#define ADDR_SPEC           SIMPLE_ADDR_SPEC ";" PARAM_CHAR "=" PARAM_CHAR 
     961#define NAME_ADDR           "<" ADDR_SPEC ">" 
     962 */ 
     963static int nameaddr_test(pjsip_uri *uri) 
     964{ 
     965    pjsip_sip_uri *sip_uri = (pjsip_sip_uri *)pjsip_uri_get_uri(uri); 
     966    pjsip_param *param; 
     967    int rc; 
     968 
     969    if (!PJSIP_URI_SCHEME_IS_SIP(uri)) 
     970        return -930; 
     971 
     972    rc = test_simple_addr_spec((pjsip_uri*)sip_uri); 
     973    if (rc != 0) 
     974        return rc; 
     975 
     976    if (pj_list_size(&sip_uri->other_param) != 1) 
     977        return -940; 
     978 
     979    param = sip_uri->other_param.next; 
     980 
     981    if (pj_strcmp2(&param->name, PARAM_CHAR)) 
     982        return -942; 
     983 
     984    if (pj_strcmp2(&param->value, PARAM_CHAR)) 
     985        return -943; 
     986 
     987    return 0; 
     988} 
     989 
     990/* 
     991#define GENERIC_PARAM  "p0=a;p1=\"ab:;cd\";p3" 
     992 */ 
     993static int generic_param_test(pjsip_param *param_head) 
     994{ 
     995    pjsip_param *param; 
     996 
     997    if (pj_list_size(param_head) != 3) 
     998        return -950; 
     999 
     1000    param = param_head->next; 
     1001 
     1002    if (pj_strcmp2(&param->name, "p0")) 
     1003        return -952; 
     1004    if (pj_strcmp2(&param->value, "a")) 
     1005        return -953; 
     1006 
     1007    param = param->next; 
     1008    if (pj_strcmp2(&param->name, "p1")) 
     1009        return -954; 
     1010    if (pj_strcmp2(&param->value, "\"ab:;cd\"")) 
     1011        return -955; 
     1012 
     1013    param = param->next; 
     1014    if (pj_strcmp2(&param->name, "p3")) 
     1015        return -958; 
     1016    if (pj_strcmp2(&param->value, "")) 
     1017        return -959; 
     1018 
     1019    return 0; 
     1020} 
     1021 
     1022 
     1023 
     1024/* 
     1025    SIMPLE_ADDR_SPEC ";p1=v1\r\n" 
     1026 */ 
     1027static int hdr_test_contact0(pjsip_hdr *h) 
     1028{ 
     1029    pjsip_contact_hdr *hdr = (pjsip_contact_hdr*)h; 
     1030    pjsip_param *param; 
     1031    int rc; 
     1032 
     1033    if (h->type != PJSIP_H_CONTACT) 
     1034        return -1610; 
     1035 
     1036    rc = test_simple_addr_spec(hdr->uri); 
     1037    if (rc != 0) 
     1038        return rc; 
     1039 
     1040    if (pj_list_size(&hdr->other_param) != 1) 
     1041        return -1620; 
     1042 
     1043    param = hdr->other_param.next; 
     1044 
     1045    if (pj_strcmp2(&param->name, "p1")) 
     1046        return -1630; 
     1047 
     1048    if (pj_strcmp2(&param->value, "v1")) 
     1049        return -1640; 
     1050 
     1051    return 0; 
     1052} 
     1053 
     1054/* 
     1055    NAME_ADDR GENERIC_PARAM "\r\n",     
     1056 */ 
     1057static int hdr_test_contact1(pjsip_hdr *h) 
     1058{ 
     1059    pjsip_contact_hdr *hdr = (pjsip_contact_hdr*)h; 
     1060    int rc; 
     1061 
     1062    if (h->type != PJSIP_H_CONTACT) 
     1063        return -1710; 
     1064 
     1065    rc = nameaddr_test(hdr->uri); 
     1066    if (rc != 0) 
     1067        return rc; 
     1068 
     1069    rc = generic_param_test(&hdr->other_param); 
     1070    if (rc != 0) 
     1071        return rc; 
     1072 
     1073    return 0; 
     1074} 
     1075 
     1076/* 
     1077    "10" 
     1078 */ 
     1079static int hdr_test_content_length(pjsip_hdr *h) 
     1080{ 
     1081    pjsip_clen_hdr *hdr = (pjsip_clen_hdr*)h; 
     1082 
     1083    if (h->type != PJSIP_H_CONTENT_LENGTH) 
     1084        return -1810; 
     1085 
     1086    if (hdr->len != 10) 
     1087        return -1820; 
     1088 
     1089    return 0; 
     1090} 
     1091 
     1092/* 
     1093    "application/sdp" GENERIC_PARAM, 
     1094 */ 
     1095static int hdr_test_content_type(pjsip_hdr *h) 
     1096{ 
     1097    pjsip_ctype_hdr *hdr = (pjsip_ctype_hdr*)h; 
     1098 
     1099    if (h->type != PJSIP_H_CONTENT_TYPE) 
     1100        return -1910; 
     1101 
     1102    if (pj_strcmp2(&hdr->media.type, "application")) 
     1103        return -1920; 
     1104 
     1105    if (pj_strcmp2(&hdr->media.subtype, "sdp")) 
     1106        return -1930; 
     1107 
     1108    /* Currently, if the media parameter contains escaped characters, 
     1109     * pjsip will print the parameter unescaped. 
     1110     */ 
     1111    PJ_TODO(FIX_PARAMETER_IN_MEDIA_TYPE); 
     1112 
     1113    if (pj_strcmp2(&hdr->media.param, ";" GENERIC_PARAM_PARSED)) 
     1114        return -1940; 
     1115 
     1116    return 0; 
     1117} 
     1118 
     1119/* 
     1120    NAME_ADDR GENERIC_PARAM, 
     1121 */ 
     1122static int hdr_test_from(pjsip_hdr *h) 
     1123{ 
     1124    pjsip_from_hdr *hdr = (pjsip_from_hdr*)h; 
     1125    int rc; 
     1126 
     1127    if (h->type != PJSIP_H_FROM) 
     1128        return -2010; 
     1129 
     1130    rc = nameaddr_test(hdr->uri); 
     1131    if (rc != 0) 
     1132        return rc; 
     1133 
     1134    rc = generic_param_test(&hdr->other_param); 
     1135    if (rc != 0) 
     1136        return rc; 
     1137 
     1138    return 0; 
     1139} 
     1140 
     1141/* 
     1142        "Digest realm=\"realm\", domain=\"sip:domain\", nonce=\"nonce\", "  \ 
     1143                "opaque=\"opaque\", stale=true, algorithm=MD5, qop=\"auth\"", 
     1144 */ 
     1145static int hdr_test_proxy_authenticate(pjsip_hdr *h) 
     1146{ 
     1147    pjsip_proxy_authenticate_hdr *hdr = (pjsip_proxy_authenticate_hdr*)h; 
     1148 
     1149    if (h->type != PJSIP_H_PROXY_AUTHENTICATE) 
     1150        return -2110; 
     1151 
     1152    if (pj_strcmp2(&hdr->scheme, "Digest")) 
     1153        return -2120; 
     1154 
     1155    if (pj_strcmp2(&hdr->challenge.digest.realm, "realm")) 
     1156        return -2130; 
     1157 
     1158    if (pj_strcmp2(&hdr->challenge.digest.domain, "sip:domain")) 
     1159        return -2140; 
     1160 
     1161    if (pj_strcmp2(&hdr->challenge.digest.nonce, "nonce")) 
     1162        return -2150; 
     1163 
     1164    if (pj_strcmp2(&hdr->challenge.digest.opaque, "opaque")) 
     1165        return -2160; 
     1166 
     1167    if (hdr->challenge.digest.stale != 1) 
     1168        return -2170; 
     1169 
     1170    if (pj_strcmp2(&hdr->challenge.digest.algorithm, "MD5")) 
     1171        return -2180; 
     1172 
     1173    if (pj_strcmp2(&hdr->challenge.digest.qop, "auth")) 
     1174        return -2190; 
     1175 
     1176    return 0; 
     1177} 
     1178 
     1179/* 
     1180    NAME_ADDR GENERIC_PARAM, 
     1181 */ 
     1182static int hdr_test_record_route(pjsip_hdr *h) 
     1183{ 
     1184    pjsip_rr_hdr *hdr = (pjsip_rr_hdr*)h; 
     1185    int rc; 
     1186 
     1187    if (h->type != PJSIP_H_RECORD_ROUTE) 
     1188        return -2210; 
     1189 
     1190    rc = nameaddr_test((pjsip_uri*)&hdr->name_addr); 
     1191    if (rc != 0) 
     1192        return rc; 
     1193 
     1194    rc = generic_param_test(&hdr->other_param); 
     1195    if (rc != 0) 
     1196        return rc; 
     1197 
     1198    return 0; 
     1199 
     1200} 
     1201 
     1202/* 
     1203    NAME_ADDR GENERIC_PARAM, 
     1204 */ 
     1205static int hdr_test_to(pjsip_hdr *h) 
     1206{ 
     1207    pjsip_to_hdr *hdr = (pjsip_to_hdr*)h; 
     1208    int rc; 
     1209 
     1210    if (h->type != PJSIP_H_TO) 
     1211        return -2410; 
     1212 
     1213    rc = nameaddr_test(hdr->uri); 
     1214    if (rc != 0) 
     1215        return rc; 
     1216 
     1217    rc = generic_param_test(&hdr->other_param); 
     1218    if (rc != 0) 
     1219        return rc; 
     1220 
     1221    return 0; 
     1222} 
     1223 
     1224/* 
     1225    "SIP/2.0 host" GENERIC_PARAM 
     1226 */ 
     1227static int hdr_test_via(pjsip_hdr *h) 
     1228{ 
     1229    pjsip_via_hdr *hdr = (pjsip_via_hdr*)h; 
     1230    int rc; 
     1231 
     1232    if (h->type != PJSIP_H_VIA) 
     1233        return -2510; 
     1234 
     1235    if (pj_strcmp2(&hdr->transport, "XYZ")) 
     1236        return -2515; 
     1237 
     1238    if (pj_strcmp2(&hdr->sent_by.host, "host")) 
     1239        return -2520; 
     1240 
     1241    if (hdr->sent_by.port != 0) 
     1242        return -2530; 
     1243 
     1244    rc = generic_param_test(&hdr->other_param); 
     1245    if (rc != 0) 
     1246        return rc; 
     1247 
     1248    return 0; 
     1249} 
     1250 
     1251 
     1252static int hdr_test(void) 
     1253{ 
     1254    unsigned i; 
     1255 
     1256    PJ_LOG(3,(THIS_FILE, "  testing header parsing..")); 
     1257 
     1258    for (i=0; i<PJ_ARRAY_SIZE(hdr_test_data); ++i) { 
     1259        struct hdr_test_t  *test = &hdr_test_data[i]; 
     1260        pj_str_t hname; 
     1261        int len, parsed_len; 
     1262        pj_pool_t *pool; 
     1263        pjsip_hdr *parsed_hdr1=NULL, *parsed_hdr2=NULL; 
     1264        char *input, *output; 
     1265        int rc; 
     1266 
     1267        pool = pjsip_endpt_create_pool(endpt, NULL, POOL_SIZE, POOL_SIZE); 
     1268 
     1269        /* Parse the header */ 
     1270        hname = pj_str(test->hname); 
     1271        len = strlen(test->hcontent); 
     1272        parsed_hdr1 = pjsip_parse_hdr(pool, &hname, test->hcontent, len, &parsed_len); 
     1273        if (parsed_hdr1 == NULL) { 
     1274            if (test->flags & HDR_FLAG_PARSE_FAIL) { 
     1275                pj_pool_release(pool); 
     1276                continue; 
     1277            } 
     1278            PJ_LOG(3,(THIS_FILE, "    error parsing header %s: %s", test->hname, test->hcontent)); 
     1279            return -500; 
     1280        } 
     1281 
     1282        /* Test the parsing result */ 
     1283        if (test->test && (rc=test->test(parsed_hdr1)) != 0) { 
     1284            PJ_LOG(3,(THIS_FILE, "    validation failed for header %s: %s", test->hname, test->hcontent)); 
     1285            PJ_LOG(3,(THIS_FILE, "    error code is %d", rc)); 
     1286            return -502; 
     1287        } 
     1288 
     1289#if 1 
     1290        /* Parse with hshortname, if present */ 
     1291        if (test->hshort_name) { 
     1292            hname = pj_str(test->hshort_name); 
     1293            len = strlen(test->hcontent); 
     1294            parsed_hdr2 = pjsip_parse_hdr(pool, &hname, test->hcontent, len, &parsed_len); 
     1295            if (parsed_hdr2 == NULL) { 
     1296                PJ_LOG(3,(THIS_FILE, "    error parsing header %s: %s", test->hshort_name, test->hcontent)); 
     1297                return -510; 
     1298            } 
     1299        } 
     1300#endif 
     1301 
     1302        if (test->flags & HDR_FLAG_DONT_PRINT) { 
     1303            pj_pool_release(pool); 
     1304            continue; 
     1305        } 
     1306 
     1307        /* Print the original header */ 
     1308        input = pj_pool_alloc(pool, 1024); 
     1309        len = pj_ansi_snprintf(input, 1024, "%s: %s", test->hname, test->hcontent); 
     1310        if (len < 1 || len >= 1024) 
     1311            return -520; 
     1312 
     1313        /* Print the parsed header*/ 
     1314        output = pj_pool_alloc(pool, 1024); 
     1315        len = pjsip_hdr_print_on(parsed_hdr1, output, 1024); 
     1316        if (len < 1 || len >= 1024) { 
     1317            PJ_LOG(3,(THIS_FILE, "    header too long: %s: %s", test->hname, test->hcontent)); 
     1318            return -530; 
     1319        } 
     1320        output[len] = 0; 
     1321 
     1322        if (strcmp(input, output) != 0) { 
     1323            PJ_LOG(3,(THIS_FILE, "    header character by character comparison failed.")); 
     1324            PJ_LOG(3,(THIS_FILE, "    original header=|%s|", input)); 
     1325            PJ_LOG(3,(THIS_FILE, "    parsed header  =|%s|", output)); 
     1326            return -540; 
     1327        } 
     1328 
     1329        pj_pool_release(pool); 
     1330    } 
     1331 
     1332    return 0; 
     1333}  
     1334 
     1335/*****************************************************************************/ 
    6761336 
    6771337int msg_test(void) 
     
    6931353            return status; 
    6941354    } 
     1355 
     1356    i = hdr_test(); 
     1357    if (i != 0) 
     1358        return i; 
    6951359 
    6961360    PJ_LOG(3,(THIS_FILE, "  benchmarking..")); 
Note: See TracChangeset for help on using the changeset viewer.