Set svn:eol-style property

git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@65 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjsip/src/test-pjsip/msg.c b/pjsip/src/test-pjsip/msg.c
index b546a75..18e5af1 100644
--- a/pjsip/src/test-pjsip/msg.c
+++ b/pjsip/src/test-pjsip/msg.c
@@ -1,369 +1,369 @@
-/* $Id$ */

-/* 

- * Copyright (C) 2003-2006 Benny Prijono <benny@prijono.org>

- *

- * This program is free software; you can redistribute it and/or modify

- * it under the terms of the GNU General Public License as published by

- * the Free Software Foundation; either version 2 of the License, or

- * (at your option) any later version.

- *

- * This program is distributed in the hope that it will be useful,

- * but WITHOUT ANY WARRANTY; without even the implied warranty of

- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

- * GNU General Public License for more details.

- *

- * You should have received a copy of the GNU General Public License

- * along with this program; if not, write to the Free Software

- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 

- */

-#include "test.h"

-#include <pjsip_core.h>

-#include <pjlib.h>

-

-static pjsip_msg *create_msg0(pj_pool_t *pool);

-

-struct test_msg

-{

-    char	 msg[1024];

-    pjsip_msg *(*creator)(pj_pool_t *pool);

-    pj_size_t	 len;

-} test_array[] = 

-{

-    {

-	/* 'Normal' message with all headers. */

-	"INVITE sip:user@foo SIP/2.0\n"

-	"From: Hi I'm Joe <sip:joe.user@bar.otherdomain.com>;tag=1234578901234567890\r"

-	"To: Fellow User <sip:user@foo.bar.domain.com>\r\n"

-	"Call-ID: 12345678901234567890@bar\r\n"

-	"Content-Length: 0\r\n"

-	"CSeq: 123456 INVITE\n"

-	"Contact: <sip:joe@bar> ; q=0.5;expires=3600,sip:user@host;q=0.500\r"

-	"  ,sip:user2@host2\n"

-	"Content-Type: text/html ; charset=ISO-8859-4\r"

-	"Route: <sip:bigbox3.site3.atlanta.com;lr>,\r\n"

-	"  <sip:server10.biloxi.com;lr>\r"

-	"Record-Route: <sip:server10.biloxi.com>,\r\n"

-	"  <sip:bigbox3.site3.atlanta.com;lr>\n"

-	"Via: SIP/2.0/SCTP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1\n"

-	"Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8\n"

-	" ;received=192.0.2.1\r\n"

-	"Via: SIP/2.0/UDP 10.2.1.1, SIP/2.0/TCP 192.168.1.1\n"

-	"Organization: \r"

-	"Max-Forwards: 70\n"

-	"X-Header: \r\n"

-	"\r",

-	&create_msg0

-    }

-};

-

-static pj_uint32_t parse_len, parse_time, print_time;

-

-static pj_status_t test_entry( pj_pool_t *pool, struct test_msg *entry )

-{

-    pjsip_msg *parsed_msg, *ref_msg;

-    pj_status_t status = PJ_SUCCESS;

-    int len;

-    pj_str_t str1, str2;

-    pjsip_hdr *hdr1, *hdr2;

-    pj_timestamp t1, t2;

-    char *msgbuf;

-

-    enum { BUFLEN = 512 };

-    

-    /* Parse message. */

-    parse_len += entry->len;

-    pj_get_timestamp(&t1);

-    parsed_msg = pjsip_parse_msg(pool, entry->msg, entry->len, NULL);

-    if (parsed_msg == NULL) {

-	status = -10;

-	goto on_return;

-    }

-    pj_get_timestamp(&t2);

-    parse_time += t2.u32.lo - t1.u32.lo;

-

-    /* Create reference message. */

-    ref_msg = entry->creator(pool);

-

-    /* Create buffer for comparison. */

-    str1.ptr = pj_pool_alloc(pool, BUFLEN);

-    str2.ptr = pj_pool_alloc(pool, BUFLEN);

-

-    /* Compare message type. */

-    if (parsed_msg->type != ref_msg->type) {

-	status = -20;

-	goto on_return;

-    }

-

-    /* Compare request or status line. */

-    if (parsed_msg->type == PJSIP_REQUEST_MSG) {

-	pjsip_method *m1 = &parsed_msg->line.req.method;

-	pjsip_method *m2 = &ref_msg->line.req.method;

-

-	if (m1->id != m2->id || pj_strcmp(&m1->name, &m2->name)) {

-	    status = -30;

-	    goto on_return;

-	}

-    } else {

-

-    }

-

-    /* Compare headers. */

-    hdr1 = parsed_msg->hdr.next;

-    hdr2 = ref_msg->hdr.next;

-

-    while (hdr1 != &parsed_msg->hdr && hdr2 != &ref_msg->hdr) {

-	len = hdr1->vptr->print_on(hdr1, str1.ptr, BUFLEN);

-	if (len < 1) {

-	    status = -40;

-	    goto on_return;

-	}

-	str1.slen = len;

-

-	len = hdr2->vptr->print_on(hdr2, str2.ptr, BUFLEN);

-	if (len < 1) {

-	    status = -50;

-	    goto on_return;

-	}

-	str2.slen = len;

-

-	if (pj_strcmp(&str1, &str2) != 0) {

-	    status = -60;

-	    goto on_return;

-	}

-

-	hdr1 = hdr1->next;

-	hdr2 = hdr2->next;

-    }

-

-    if (hdr1 != &parsed_msg->hdr || hdr2 != &ref_msg->hdr) {

-	status = -70;

-	goto on_return;

-    }

-

-    /* Print message. */

-    msgbuf = pj_pool_alloc(pool, PJSIP_MAX_PKT_LEN);

-    if (msgbuf == NULL) {

-	status = -80;

-	goto on_return;

-    }

-    pj_get_timestamp(&t1);

-    len = pjsip_msg_print(parsed_msg, msgbuf, PJSIP_MAX_PKT_LEN);

-    if (len < 1) {

-	status = -90;

-	goto on_return;

-    }

-    pj_get_timestamp(&t2);

-    print_time += t2.u32.lo - t1.u32.lo;

-    status = PJ_SUCCESS;

-

-on_return:

-    return status;

-}

-

-

-pj_status_t msg_test(void)

-{

-    pj_status_t status;

-    pj_pool_t *pool;

-

-    pool = pjsip_endpt_create_pool(endpt, NULL, 4000, 4000);

-

-    status = test_entry( pool, &test_array[0] );

-

-    pjsip_endpt_destroy(endpt);

-    return status;

-}

-

-/*****************************************************************************/

-

-static pjsip_msg *create_msg0(pj_pool_t *pool)

-{

-

-    pjsip_msg *msg;

-    pjsip_name_addr *name_addr;

-    pjsip_url *url;

-    pjsip_fromto_hdr *fromto;

-    pjsip_cid_hdr *cid;

-    pjsip_clen_hdr *clen;

-    pjsip_cseq_hdr *cseq;

-    pjsip_contact_hdr *contact;

-    pjsip_ctype_hdr *ctype;

-    pjsip_routing_hdr *routing;

-    pjsip_via_hdr *via;

-    pjsip_generic_string_hdr *generic;

-    pj_str_t str;

-

-    msg = pjsip_msg_create(pool, PJSIP_REQUEST_MSG);

-

-    /* "INVITE sip:user@foo SIP/2.0\n" */

-    pjsip_method_set(&msg->line.req.method, PJSIP_INVITE_METHOD);

-    url = pjsip_url_create(pool, 0);

-    msg->line.req.uri = (pjsip_uri*)url;

-    pj_strdup2(pool, &url->user, "user");

-    pj_strdup2(pool, &url->host, "foo");

-

-    /* "From: Hi I'm Joe <sip:joe.user@bar.otherdomain.com>;tag=1234578901234567890\r" */

-    fromto = pjsip_from_hdr_create(pool);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)fromto);

-    pj_strdup2(pool, &fromto->tag, "1234578901234567890");

-    name_addr = pjsip_name_addr_create(pool);

-    fromto->uri = (pjsip_uri*)name_addr;

-    pj_strdup2(pool, &name_addr->display, "Hi I'm Joe");

-    url = pjsip_url_create(pool, 0);

-    name_addr->uri = (pjsip_uri*)url;

-    pj_strdup2(pool, &url->user, "joe.user");

-    pj_strdup2(pool, &url->host, "bar.otherdomain.com");

-

-    /* "To: Fellow User <sip:user@foo.bar.domain.com>\r\n" */

-    fromto = pjsip_to_hdr_create(pool);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)fromto);

-    name_addr = pjsip_name_addr_create(pool);

-    fromto->uri = (pjsip_uri*)name_addr;

-    pj_strdup2(pool, &name_addr->display, "Fellow User");

-    url = pjsip_url_create(pool, 0);

-    name_addr->uri = (pjsip_uri*)url;

-    pj_strdup2(pool, &url->user, "user");

-    pj_strdup2(pool, &url->host, "foo.bar.domain.com");

-

-    /* "Call-ID: 12345678901234567890@bar\r\n" */

-    cid = pjsip_cid_hdr_create(pool);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)cid);

-    pj_strdup2(pool, &cid->id, "12345678901234567890@bar");

-

-    /* "Content-Length: 0\r\n" */

-    clen = pjsip_clen_hdr_create(pool);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)clen);

-    clen->len = 0;

-

-    /* "CSeq: 123456 INVITE\n" */

-    cseq = pjsip_cseq_hdr_create(pool);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)cseq);

-    cseq->cseq = 123456;

-    pjsip_method_set(&cseq->method, PJSIP_INVITE_METHOD);

-

-    /* "Contact: <sip:joe@bar>;q=0.5;expires=3600*/

-    contact = pjsip_contact_hdr_create(pool);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)contact);

-    contact->q1000 = 500;

-    contact->expires = 3600;

-    name_addr = pjsip_name_addr_create(pool);

-    contact->uri = (pjsip_uri*)name_addr;

-    url = pjsip_url_create(pool, 0);

-    name_addr->uri = (pjsip_uri*)url;

-    pj_strdup2(pool, &url->user, "joe");

-    pj_strdup2(pool, &url->host, "bar");

-

-    /*, sip:user@host;q=0.500\r" */

-    contact = pjsip_contact_hdr_create(pool);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)contact);

-    contact->q1000 = 500;

-    url = pjsip_url_create(pool, 0);

-    contact->uri = (pjsip_uri*)url;

-    pj_strdup2(pool, &url->user, "user");

-    pj_strdup2(pool, &url->host, "host");

-

-    /* "  ,sip:user2@host2\n" */

-    contact = pjsip_contact_hdr_create(pool);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)contact);

-    url = pjsip_url_create(pool, 0);

-    contact->uri = (pjsip_uri*)url;

-    pj_strdup2(pool, &url->user, "user2");

-    pj_strdup2(pool, &url->host, "host2");

-

-    /* "Content-Type: text/html; charset=ISO-8859-4\r" */

-    ctype = pjsip_ctype_hdr_create(pool);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)ctype);

-    pj_strdup2(pool, &ctype->media.type, "text");

-    pj_strdup2(pool, &ctype->media.subtype, "html");

-    pj_strdup2(pool, &ctype->media.param, ";charset=ISO-8859-4");

-

-    /* "Route: <sip:bigbox3.site3.atlanta.com;lr>,\r\n" */

-    routing = pjsip_route_hdr_create(pool);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)routing);

-    url = pjsip_url_create(pool, 0);

-    routing->name_addr.uri = (pjsip_uri*)url;

-    pj_strdup2(pool, &url->host, "bigbox3.site3.atlanta.com");

-    url->lr_param = 1;

-

-    /* "  <sip:server10.biloxi.com;lr>\r" */

-    routing = pjsip_route_hdr_create(pool);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)routing);

-    url = pjsip_url_create(pool, 0);

-    routing->name_addr.uri = (pjsip_uri*)url;

-    pj_strdup2(pool, &url->host, "server10.biloxi.com");

-    url->lr_param = 1;

-

-    /* "Record-Route: <sip:server10.biloxi.com>,\r\n" */

-    routing = pjsip_rr_hdr_create(pool);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)routing);

-    url = pjsip_url_create(pool, 0);

-    routing->name_addr.uri = (pjsip_uri*)url;

-    pj_strdup2(pool, &url->host, "server10.biloxi.com");

-    url->lr_param = 0;

-

-    /* "  <sip:bigbox3.site3.atlanta.com;lr>\n" */

-    routing = pjsip_rr_hdr_create(pool);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)routing);

-    url = pjsip_url_create(pool, 0);

-    routing->name_addr.uri = (pjsip_uri*)url;

-    pj_strdup2(pool, &url->host, "bigbox3.site3.atlanta.com");

-    url->lr_param = 1;

-

-    /* "Via: SIP/2.0/SCTP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1\n" */

-    via = pjsip_via_hdr_create(pool);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)via);

-    pj_strdup2(pool, &via->transport, "SCTP");

-    pj_strdup2(pool, &via->sent_by.host, "bigbox3.site3.atlanta.com");

-    pj_strdup2(pool, &via->branch_param, "z9hG4bK77ef4c2312983.1");

-

-    /* "Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8\n"

-	" ;received=192.0.2.1\r\n" */

-    via = pjsip_via_hdr_create(pool);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)via);

-    pj_strdup2(pool, &via->transport, "UDP");

-    pj_strdup2(pool, &via->sent_by.host, "pc33.atlanta.com");

-    pj_strdup2(pool, &via->branch_param, "z9hG4bKnashds8");

-    pj_strdup2(pool, &via->recvd_param, "192.0.2.1");

-

-

-    /* "Via: SIP/2.0/UDP 10.2.1.1, */ 

-    via = pjsip_via_hdr_create(pool);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)via);

-    pj_strdup2(pool, &via->transport, "UDP");

-    pj_strdup2(pool, &via->sent_by.host, "10.2.1.1");

-    

-    

-    /*SIP/2.0/TCP 192.168.1.1\n" */

-    via = pjsip_via_hdr_create(pool);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)via);

-    pj_strdup2(pool, &via->transport, "TCP");

-    pj_strdup2(pool, &via->sent_by.host, "192.168.1.1");

-

-    /* "Organization: \r" */

-    str.ptr = "Organization";

-    str.slen = 12;

-    generic = pjsip_generic_string_hdr_create(pool, &str);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)generic);

-    generic->hvalue.ptr = NULL;

-    generic->hvalue.slen = 0;

-

-    /* "Max-Forwards: 70\n" */

-    str.ptr = "Max-Forwards";

-    str.slen = 12;

-    generic = pjsip_generic_string_hdr_create(pool, &str);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)generic);

-    str.ptr = "70";

-    str.slen = 2;

-    generic->hvalue = str;

-

-    /* "X-Header: \r\n" */

-    str.ptr = "X-Header";

-    str.slen = 8;

-    generic = pjsip_generic_string_hdr_create(pool, &str);

-    pjsip_msg_add_hdr(msg, (pjsip_hdr*)generic);

-    str.ptr = NULL;

-    str.slen = 0;

-    generic->hvalue = str;

-

-    return msg;

-}

+/* $Id$ */
+/* 
+ * Copyright (C) 2003-2006 Benny Prijono <benny@prijono.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
+ */
+#include "test.h"
+#include <pjsip_core.h>
+#include <pjlib.h>
+
+static pjsip_msg *create_msg0(pj_pool_t *pool);
+
+struct test_msg
+{
+    char	 msg[1024];
+    pjsip_msg *(*creator)(pj_pool_t *pool);
+    pj_size_t	 len;
+} test_array[] = 
+{
+    {
+	/* 'Normal' message with all headers. */
+	"INVITE sip:user@foo SIP/2.0\n"
+	"From: Hi I'm Joe <sip:joe.user@bar.otherdomain.com>;tag=1234578901234567890\r"
+	"To: Fellow User <sip:user@foo.bar.domain.com>\r\n"
+	"Call-ID: 12345678901234567890@bar\r\n"
+	"Content-Length: 0\r\n"
+	"CSeq: 123456 INVITE\n"
+	"Contact: <sip:joe@bar> ; q=0.5;expires=3600,sip:user@host;q=0.500\r"
+	"  ,sip:user2@host2\n"
+	"Content-Type: text/html ; charset=ISO-8859-4\r"
+	"Route: <sip:bigbox3.site3.atlanta.com;lr>,\r\n"
+	"  <sip:server10.biloxi.com;lr>\r"
+	"Record-Route: <sip:server10.biloxi.com>,\r\n"
+	"  <sip:bigbox3.site3.atlanta.com;lr>\n"
+	"Via: SIP/2.0/SCTP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1\n"
+	"Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8\n"
+	" ;received=192.0.2.1\r\n"
+	"Via: SIP/2.0/UDP 10.2.1.1, SIP/2.0/TCP 192.168.1.1\n"
+	"Organization: \r"
+	"Max-Forwards: 70\n"
+	"X-Header: \r\n"
+	"\r",
+	&create_msg0
+    }
+};
+
+static pj_uint32_t parse_len, parse_time, print_time;
+
+static pj_status_t test_entry( pj_pool_t *pool, struct test_msg *entry )
+{
+    pjsip_msg *parsed_msg, *ref_msg;
+    pj_status_t status = PJ_SUCCESS;
+    int len;
+    pj_str_t str1, str2;
+    pjsip_hdr *hdr1, *hdr2;
+    pj_timestamp t1, t2;
+    char *msgbuf;
+
+    enum { BUFLEN = 512 };
+    
+    /* Parse message. */
+    parse_len += entry->len;
+    pj_get_timestamp(&t1);
+    parsed_msg = pjsip_parse_msg(pool, entry->msg, entry->len, NULL);
+    if (parsed_msg == NULL) {
+	status = -10;
+	goto on_return;
+    }
+    pj_get_timestamp(&t2);
+    parse_time += t2.u32.lo - t1.u32.lo;
+
+    /* Create reference message. */
+    ref_msg = entry->creator(pool);
+
+    /* Create buffer for comparison. */
+    str1.ptr = pj_pool_alloc(pool, BUFLEN);
+    str2.ptr = pj_pool_alloc(pool, BUFLEN);
+
+    /* Compare message type. */
+    if (parsed_msg->type != ref_msg->type) {
+	status = -20;
+	goto on_return;
+    }
+
+    /* Compare request or status line. */
+    if (parsed_msg->type == PJSIP_REQUEST_MSG) {
+	pjsip_method *m1 = &parsed_msg->line.req.method;
+	pjsip_method *m2 = &ref_msg->line.req.method;
+
+	if (m1->id != m2->id || pj_strcmp(&m1->name, &m2->name)) {
+	    status = -30;
+	    goto on_return;
+	}
+    } else {
+
+    }
+
+    /* Compare headers. */
+    hdr1 = parsed_msg->hdr.next;
+    hdr2 = ref_msg->hdr.next;
+
+    while (hdr1 != &parsed_msg->hdr && hdr2 != &ref_msg->hdr) {
+	len = hdr1->vptr->print_on(hdr1, str1.ptr, BUFLEN);
+	if (len < 1) {
+	    status = -40;
+	    goto on_return;
+	}
+	str1.slen = len;
+
+	len = hdr2->vptr->print_on(hdr2, str2.ptr, BUFLEN);
+	if (len < 1) {
+	    status = -50;
+	    goto on_return;
+	}
+	str2.slen = len;
+
+	if (pj_strcmp(&str1, &str2) != 0) {
+	    status = -60;
+	    goto on_return;
+	}
+
+	hdr1 = hdr1->next;
+	hdr2 = hdr2->next;
+    }
+
+    if (hdr1 != &parsed_msg->hdr || hdr2 != &ref_msg->hdr) {
+	status = -70;
+	goto on_return;
+    }
+
+    /* Print message. */
+    msgbuf = pj_pool_alloc(pool, PJSIP_MAX_PKT_LEN);
+    if (msgbuf == NULL) {
+	status = -80;
+	goto on_return;
+    }
+    pj_get_timestamp(&t1);
+    len = pjsip_msg_print(parsed_msg, msgbuf, PJSIP_MAX_PKT_LEN);
+    if (len < 1) {
+	status = -90;
+	goto on_return;
+    }
+    pj_get_timestamp(&t2);
+    print_time += t2.u32.lo - t1.u32.lo;
+    status = PJ_SUCCESS;
+
+on_return:
+    return status;
+}
+
+
+pj_status_t msg_test(void)
+{
+    pj_status_t status;
+    pj_pool_t *pool;
+
+    pool = pjsip_endpt_create_pool(endpt, NULL, 4000, 4000);
+
+    status = test_entry( pool, &test_array[0] );
+
+    pjsip_endpt_destroy(endpt);
+    return status;
+}
+
+/*****************************************************************************/
+
+static pjsip_msg *create_msg0(pj_pool_t *pool)
+{
+
+    pjsip_msg *msg;
+    pjsip_name_addr *name_addr;
+    pjsip_url *url;
+    pjsip_fromto_hdr *fromto;
+    pjsip_cid_hdr *cid;
+    pjsip_clen_hdr *clen;
+    pjsip_cseq_hdr *cseq;
+    pjsip_contact_hdr *contact;
+    pjsip_ctype_hdr *ctype;
+    pjsip_routing_hdr *routing;
+    pjsip_via_hdr *via;
+    pjsip_generic_string_hdr *generic;
+    pj_str_t str;
+
+    msg = pjsip_msg_create(pool, PJSIP_REQUEST_MSG);
+
+    /* "INVITE sip:user@foo SIP/2.0\n" */
+    pjsip_method_set(&msg->line.req.method, PJSIP_INVITE_METHOD);
+    url = pjsip_url_create(pool, 0);
+    msg->line.req.uri = (pjsip_uri*)url;
+    pj_strdup2(pool, &url->user, "user");
+    pj_strdup2(pool, &url->host, "foo");
+
+    /* "From: Hi I'm Joe <sip:joe.user@bar.otherdomain.com>;tag=1234578901234567890\r" */
+    fromto = pjsip_from_hdr_create(pool);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)fromto);
+    pj_strdup2(pool, &fromto->tag, "1234578901234567890");
+    name_addr = pjsip_name_addr_create(pool);
+    fromto->uri = (pjsip_uri*)name_addr;
+    pj_strdup2(pool, &name_addr->display, "Hi I'm Joe");
+    url = pjsip_url_create(pool, 0);
+    name_addr->uri = (pjsip_uri*)url;
+    pj_strdup2(pool, &url->user, "joe.user");
+    pj_strdup2(pool, &url->host, "bar.otherdomain.com");
+
+    /* "To: Fellow User <sip:user@foo.bar.domain.com>\r\n" */
+    fromto = pjsip_to_hdr_create(pool);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)fromto);
+    name_addr = pjsip_name_addr_create(pool);
+    fromto->uri = (pjsip_uri*)name_addr;
+    pj_strdup2(pool, &name_addr->display, "Fellow User");
+    url = pjsip_url_create(pool, 0);
+    name_addr->uri = (pjsip_uri*)url;
+    pj_strdup2(pool, &url->user, "user");
+    pj_strdup2(pool, &url->host, "foo.bar.domain.com");
+
+    /* "Call-ID: 12345678901234567890@bar\r\n" */
+    cid = pjsip_cid_hdr_create(pool);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)cid);
+    pj_strdup2(pool, &cid->id, "12345678901234567890@bar");
+
+    /* "Content-Length: 0\r\n" */
+    clen = pjsip_clen_hdr_create(pool);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)clen);
+    clen->len = 0;
+
+    /* "CSeq: 123456 INVITE\n" */
+    cseq = pjsip_cseq_hdr_create(pool);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)cseq);
+    cseq->cseq = 123456;
+    pjsip_method_set(&cseq->method, PJSIP_INVITE_METHOD);
+
+    /* "Contact: <sip:joe@bar>;q=0.5;expires=3600*/
+    contact = pjsip_contact_hdr_create(pool);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)contact);
+    contact->q1000 = 500;
+    contact->expires = 3600;
+    name_addr = pjsip_name_addr_create(pool);
+    contact->uri = (pjsip_uri*)name_addr;
+    url = pjsip_url_create(pool, 0);
+    name_addr->uri = (pjsip_uri*)url;
+    pj_strdup2(pool, &url->user, "joe");
+    pj_strdup2(pool, &url->host, "bar");
+
+    /*, sip:user@host;q=0.500\r" */
+    contact = pjsip_contact_hdr_create(pool);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)contact);
+    contact->q1000 = 500;
+    url = pjsip_url_create(pool, 0);
+    contact->uri = (pjsip_uri*)url;
+    pj_strdup2(pool, &url->user, "user");
+    pj_strdup2(pool, &url->host, "host");
+
+    /* "  ,sip:user2@host2\n" */
+    contact = pjsip_contact_hdr_create(pool);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)contact);
+    url = pjsip_url_create(pool, 0);
+    contact->uri = (pjsip_uri*)url;
+    pj_strdup2(pool, &url->user, "user2");
+    pj_strdup2(pool, &url->host, "host2");
+
+    /* "Content-Type: text/html; charset=ISO-8859-4\r" */
+    ctype = pjsip_ctype_hdr_create(pool);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)ctype);
+    pj_strdup2(pool, &ctype->media.type, "text");
+    pj_strdup2(pool, &ctype->media.subtype, "html");
+    pj_strdup2(pool, &ctype->media.param, ";charset=ISO-8859-4");
+
+    /* "Route: <sip:bigbox3.site3.atlanta.com;lr>,\r\n" */
+    routing = pjsip_route_hdr_create(pool);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)routing);
+    url = pjsip_url_create(pool, 0);
+    routing->name_addr.uri = (pjsip_uri*)url;
+    pj_strdup2(pool, &url->host, "bigbox3.site3.atlanta.com");
+    url->lr_param = 1;
+
+    /* "  <sip:server10.biloxi.com;lr>\r" */
+    routing = pjsip_route_hdr_create(pool);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)routing);
+    url = pjsip_url_create(pool, 0);
+    routing->name_addr.uri = (pjsip_uri*)url;
+    pj_strdup2(pool, &url->host, "server10.biloxi.com");
+    url->lr_param = 1;
+
+    /* "Record-Route: <sip:server10.biloxi.com>,\r\n" */
+    routing = pjsip_rr_hdr_create(pool);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)routing);
+    url = pjsip_url_create(pool, 0);
+    routing->name_addr.uri = (pjsip_uri*)url;
+    pj_strdup2(pool, &url->host, "server10.biloxi.com");
+    url->lr_param = 0;
+
+    /* "  <sip:bigbox3.site3.atlanta.com;lr>\n" */
+    routing = pjsip_rr_hdr_create(pool);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)routing);
+    url = pjsip_url_create(pool, 0);
+    routing->name_addr.uri = (pjsip_uri*)url;
+    pj_strdup2(pool, &url->host, "bigbox3.site3.atlanta.com");
+    url->lr_param = 1;
+
+    /* "Via: SIP/2.0/SCTP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1\n" */
+    via = pjsip_via_hdr_create(pool);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)via);
+    pj_strdup2(pool, &via->transport, "SCTP");
+    pj_strdup2(pool, &via->sent_by.host, "bigbox3.site3.atlanta.com");
+    pj_strdup2(pool, &via->branch_param, "z9hG4bK77ef4c2312983.1");
+
+    /* "Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8\n"
+	" ;received=192.0.2.1\r\n" */
+    via = pjsip_via_hdr_create(pool);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)via);
+    pj_strdup2(pool, &via->transport, "UDP");
+    pj_strdup2(pool, &via->sent_by.host, "pc33.atlanta.com");
+    pj_strdup2(pool, &via->branch_param, "z9hG4bKnashds8");
+    pj_strdup2(pool, &via->recvd_param, "192.0.2.1");
+
+
+    /* "Via: SIP/2.0/UDP 10.2.1.1, */ 
+    via = pjsip_via_hdr_create(pool);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)via);
+    pj_strdup2(pool, &via->transport, "UDP");
+    pj_strdup2(pool, &via->sent_by.host, "10.2.1.1");
+    
+    
+    /*SIP/2.0/TCP 192.168.1.1\n" */
+    via = pjsip_via_hdr_create(pool);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)via);
+    pj_strdup2(pool, &via->transport, "TCP");
+    pj_strdup2(pool, &via->sent_by.host, "192.168.1.1");
+
+    /* "Organization: \r" */
+    str.ptr = "Organization";
+    str.slen = 12;
+    generic = pjsip_generic_string_hdr_create(pool, &str);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)generic);
+    generic->hvalue.ptr = NULL;
+    generic->hvalue.slen = 0;
+
+    /* "Max-Forwards: 70\n" */
+    str.ptr = "Max-Forwards";
+    str.slen = 12;
+    generic = pjsip_generic_string_hdr_create(pool, &str);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)generic);
+    str.ptr = "70";
+    str.slen = 2;
+    generic->hvalue = str;
+
+    /* "X-Header: \r\n" */
+    str.ptr = "X-Header";
+    str.slen = 8;
+    generic = pjsip_generic_string_hdr_create(pool, &str);
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)generic);
+    str.ptr = NULL;
+    str.slen = 0;
+    generic->hvalue = str;
+
+    return msg;
+}