⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sip_msg.c

📁 基于sip协议的网络电话源码
💻 C
📖 第 1 页 / 共 4 页
字号:
	*p++ = '\n';	*p++ = '\r';	*p++ = '\n';    }    *p = '\0';    return p-buf;}///////////////////////////////////////////////////////////////////////////////PJ_DEF(void*) pjsip_hdr_clone( pj_pool_t *pool, const void *hdr_ptr ){    const pjsip_hdr *hdr = hdr_ptr;    return (*hdr->vptr->clone)(pool, hdr_ptr);}PJ_DEF(void*) pjsip_hdr_shallow_clone( pj_pool_t *pool, const void *hdr_ptr ){    const pjsip_hdr *hdr = hdr_ptr;    return (*hdr->vptr->shallow_clone)(pool, hdr_ptr);}PJ_DEF(int) pjsip_hdr_print_on( void *hdr_ptr, char *buf, pj_size_t len){    pjsip_hdr *hdr = hdr_ptr;    return (*hdr->vptr->print_on)(hdr_ptr, buf, len);}////////////////////////////////////////////////////////////////////////////////* * Status/Reason Phrase */PJ_DEF(const pj_str_t*) pjsip_get_status_text(int code){    static int is_initialized;    if (is_initialized == 0) {	is_initialized = 1;	init_status_phrase();    }    return (code>=100 && code<(sizeof(status_phrase)/sizeof(status_phrase[0]))) ? 	&status_phrase[code] : &status_phrase[0];}////////////////////////////////////////////////////////////////////////////////* * Generic pjsip_hdr_names/hvalue header. */static int pjsip_generic_string_hdr_print( pjsip_generic_string_hdr *hdr, 				    char *buf, pj_size_t size);static pjsip_generic_string_hdr* pjsip_generic_string_hdr_clone( pj_pool_t *pool, 						   const pjsip_generic_string_hdr *hdr);static pjsip_generic_string_hdr* pjsip_generic_string_hdr_shallow_clone( pj_pool_t *pool,							   const pjsip_generic_string_hdr *hdr );static pjsip_hdr_vptr generic_hdr_vptr = {    (pjsip_hdr_clone_fptr) &pjsip_generic_string_hdr_clone,    (pjsip_hdr_clone_fptr) &pjsip_generic_string_hdr_shallow_clone,    (pjsip_hdr_print_fptr) &pjsip_generic_string_hdr_print,};PJ_DEF(void) pjsip_generic_string_hdr_init2(pjsip_generic_string_hdr *hdr,					    pj_str_t *hname,					    pj_str_t *hvalue){    init_hdr(hdr, PJSIP_H_OTHER, &generic_hdr_vptr);    if (hname) {	hdr->name = *hname;	hdr->sname = *hname;    }    if (hvalue) {	hdr->hvalue = *hvalue;    } else {	hdr->hvalue.ptr = NULL;	hdr->hvalue.slen = 0;    }}PJ_DEF(pjsip_generic_string_hdr*) pjsip_generic_string_hdr_init( pj_pool_t *pool,			       void *mem,			       const pj_str_t *hnames,			       const pj_str_t *hvalue){    pjsip_generic_string_hdr *hdr = mem;    pj_str_t dup_hname, dup_hval;    if (hnames) {	pj_strdup(pool, &dup_hname, hnames);    } else {	dup_hname.slen = 0;    }    if (hvalue) {	pj_strdup(pool, &dup_hval, hvalue);    } else {	dup_hval.slen = 0;    }    pjsip_generic_string_hdr_init2(hdr, &dup_hname, &dup_hval);    return hdr;}PJ_DEF(pjsip_generic_string_hdr*) pjsip_generic_string_hdr_create( pj_pool_t *pool,				 const pj_str_t *hnames,				 const pj_str_t *hvalue){    void *mem = pj_pool_alloc(pool, sizeof(pjsip_generic_string_hdr));    return pjsip_generic_string_hdr_init(pool, mem, hnames, hvalue);}static int pjsip_generic_string_hdr_print( pjsip_generic_string_hdr *hdr,					   char *buf, pj_size_t size){    char *p = buf;        if ((pj_ssize_t)size < hdr->name.slen + hdr->hvalue.slen + 5)	return -1;    pj_memcpy(p, hdr->name.ptr, hdr->name.slen);    p += hdr->name.slen;    *p++ = ':';    *p++ = ' ';    pj_memcpy(p, hdr->hvalue.ptr, hdr->hvalue.slen);    p += hdr->hvalue.slen;    *p = '\0';    return p - buf;}static pjsip_generic_string_hdr* pjsip_generic_string_hdr_clone( pj_pool_t *pool, 					           const pjsip_generic_string_hdr *rhs){    pjsip_generic_string_hdr *hdr;        hdr = pjsip_generic_string_hdr_create(pool, &rhs->name, &rhs->hvalue);    hdr->type = rhs->type;    hdr->sname = hdr->name;    return hdr;}static pjsip_generic_string_hdr* pjsip_generic_string_hdr_shallow_clone( pj_pool_t *pool,							   const pjsip_generic_string_hdr *rhs ){    pjsip_generic_string_hdr *hdr = pj_pool_alloc(pool, sizeof(*hdr));    pj_memcpy(hdr, rhs, sizeof(*hdr));    return hdr;}////////////////////////////////////////////////////////////////////////////////* * Generic pjsip_hdr_names/integer value header. */static int pjsip_generic_int_hdr_print( pjsip_generic_int_hdr *hdr, 					char *buf, pj_size_t size);static pjsip_generic_int_hdr* pjsip_generic_int_hdr_clone( pj_pool_t *pool, 						   const pjsip_generic_int_hdr *hdr);static pjsip_generic_int_hdr* pjsip_generic_int_hdr_shallow_clone( pj_pool_t *pool,							   const pjsip_generic_int_hdr *hdr );static pjsip_hdr_vptr generic_int_hdr_vptr = {    (pjsip_hdr_clone_fptr) &pjsip_generic_int_hdr_clone,    (pjsip_hdr_clone_fptr) &pjsip_generic_int_hdr_shallow_clone,    (pjsip_hdr_print_fptr) &pjsip_generic_int_hdr_print,};PJ_DEF(pjsip_generic_int_hdr*) pjsip_generic_int_hdr_init(  pj_pool_t *pool,							    void *mem,							    const pj_str_t *hnames,							    int value){    pjsip_generic_int_hdr *hdr = mem;    init_hdr(hdr, PJSIP_H_OTHER, &generic_int_hdr_vptr);    if (hnames) {	pj_strdup(pool, &hdr->name, hnames);	hdr->sname = hdr->name;    }    hdr->ivalue = value;    return hdr;}PJ_DEF(pjsip_generic_int_hdr*) pjsip_generic_int_hdr_create( pj_pool_t *pool,						     const pj_str_t *hnames,						     int value){    void *mem = pj_pool_alloc(pool, sizeof(pjsip_generic_int_hdr));    return pjsip_generic_int_hdr_init(pool, mem, hnames, value);}static int pjsip_generic_int_hdr_print( pjsip_generic_int_hdr *hdr, 					char *buf, pj_size_t size){    char *p = buf;    if ((pj_ssize_t)size < hdr->name.slen + 15)	return -1;    pj_memcpy(p, hdr->name.ptr, hdr->name.slen);    p += hdr->name.slen;    *p++ = ':';    *p++ = ' ';    p += pj_utoa(hdr->ivalue, p);    return p - buf;}static pjsip_generic_int_hdr* pjsip_generic_int_hdr_clone( pj_pool_t *pool, 					           const pjsip_generic_int_hdr *rhs){    pjsip_generic_int_hdr *hdr = pj_pool_alloc(pool, sizeof(*hdr));    pj_memcpy(hdr, rhs, sizeof(*hdr));    return hdr;}static pjsip_generic_int_hdr* pjsip_generic_int_hdr_shallow_clone( pj_pool_t *pool,							   const pjsip_generic_int_hdr *rhs ){    pjsip_generic_int_hdr *hdr = pj_pool_alloc(pool, sizeof(*hdr));    pj_memcpy(hdr, rhs, sizeof(*hdr));    return hdr;}////////////////////////////////////////////////////////////////////////////////* * Generic array header. */static int pjsip_generic_array_hdr_print( pjsip_generic_array_hdr *hdr, char *buf, pj_size_t size);static pjsip_generic_array_hdr* pjsip_generic_array_hdr_clone( pj_pool_t *pool, 						 const pjsip_generic_array_hdr *hdr);static pjsip_generic_array_hdr* pjsip_generic_array_hdr_shallow_clone( pj_pool_t *pool, 						 const pjsip_generic_array_hdr *hdr);static pjsip_hdr_vptr generic_array_hdr_vptr = {    (pjsip_hdr_clone_fptr) &pjsip_generic_array_hdr_clone,    (pjsip_hdr_clone_fptr) &pjsip_generic_array_hdr_shallow_clone,    (pjsip_hdr_print_fptr) &pjsip_generic_array_hdr_print,};PJ_DEF(pjsip_generic_array_hdr*) pjsip_generic_array_hdr_init( pj_pool_t *pool,							       void *mem,							       const pj_str_t *hnames){    pjsip_generic_array_hdr *hdr = mem;    init_hdr(hdr, PJSIP_H_OTHER, &generic_array_hdr_vptr);    if (hnames) {	pj_strdup(pool, &hdr->name, hnames);	hdr->sname = hdr->name;    }    hdr->count = 0;    return hdr;}PJ_DEF(pjsip_generic_array_hdr*) pjsip_generic_array_hdr_create( pj_pool_t *pool,							     const pj_str_t *hnames){    void *mem = pj_pool_alloc(pool, sizeof(pjsip_generic_array_hdr));    return pjsip_generic_array_hdr_init(pool, mem, hnames);}static int pjsip_generic_array_hdr_print( pjsip_generic_array_hdr *hdr, 					  char *buf, pj_size_t size){    char *p = buf, *endbuf = buf+size;    copy_advance(p, hdr->name);    *p++ = ':';    *p++ = ' ';    if (hdr->count > 0) {	unsigned i;	int printed;	copy_advance(p, hdr->values[0]);	for (i=1; i<hdr->count; ++i) {	    copy_advance_pair(p, ", ", 2, hdr->values[i]);	}    }    return p - buf;}static pjsip_generic_array_hdr* pjsip_generic_array_hdr_clone( pj_pool_t *pool, 						 const pjsip_generic_array_hdr *rhs){    unsigned i;    pjsip_generic_array_hdr *hdr = pj_pool_alloc(pool, sizeof(*hdr));    pj_memcpy(hdr, rhs, sizeof(*hdr));    for (i=0; i<rhs->count; ++i) {	pj_strdup(pool, &hdr->values[i], &rhs->values[i]);    }    return hdr;}static pjsip_generic_array_hdr* pjsip_generic_array_hdr_shallow_clone( pj_pool_t *pool, 						 const pjsip_generic_array_hdr *rhs){    pjsip_generic_array_hdr *hdr = pj_pool_alloc(pool, sizeof(*hdr));    pj_memcpy(hdr, rhs, sizeof(*hdr));    return hdr;}////////////////////////////////////////////////////////////////////////////////* * Accept header. */PJ_DEF(pjsip_accept_hdr*) pjsip_accept_hdr_init( pj_pool_t *pool,						 void *mem ){    pjsip_accept_hdr *hdr = mem;    PJ_UNUSED_ARG(pool);    init_hdr(hdr, PJSIP_H_ACCEPT, &generic_array_hdr_vptr);    hdr->count = 0;    return hdr;}PJ_DEF(pjsip_accept_hdr*) pjsip_accept_hdr_create(pj_pool_t *pool){    void *mem = pj_pool_alloc(pool, sizeof(pjsip_accept_hdr));    return pjsip_accept_hdr_init(pool, mem);}////////////////////////////////////////////////////////////////////////////////* * Allow header. */PJ_DEF(pjsip_allow_hdr*) pjsip_allow_hdr_init( pj_pool_t *pool,					       void *mem ){    pjsip_allow_hdr *hdr = mem;    PJ_UNUSED_ARG(pool);    init_hdr(hdr, PJSIP_H_ALLOW, &generic_array_hdr_vptr);    hdr->count = 0;    return hdr;}PJ_DEF(pjsip_allow_hdr*) pjsip_allow_hdr_create(pj_pool_t *pool){    void *mem = pj_pool_alloc(pool, sizeof(pjsip_allow_hdr));    return pjsip_allow_hdr_init(pool, mem);}////////////////////////////////////////////////////////////////////////////////* * Call-ID header. */PJ_DEF(pjsip_cid_hdr*) pjsip_cid_hdr_init( pj_pool_t *pool,					   void *mem ){    pjsip_cid_hdr *hdr = mem;    PJ_UNUSED_ARG(pool);    init_hdr(hdr, PJSIP_H_CALL_ID, &generic_hdr_vptr);    return hdr;}PJ_DEF(pjsip_cid_hdr*) pjsip_cid_hdr_create( pj_pool_t *pool ){    void *mem = pj_pool_alloc(pool, sizeof(pjsip_cid_hdr));    return pjsip_cid_hdr_init(pool, mem);}////////////////////////////////////////////////////////////////////////////////* * Content-Length header. */static int pjsip_clen_hdr_print( pjsip_clen_hdr *hdr, char *buf, pj_size_t size);static pjsip_clen_hdr* pjsip_clen_hdr_clone( pj_pool_t *pool, const pjsip_clen_hdr *hdr);#define pjsip_clen_hdr_shallow_clone pjsip_clen_hdr_clonestatic pjsip_hdr_vptr clen_hdr_vptr = {    (pjsip_hdr_clone_fptr) &pjsip_clen_hdr_clone,    (pjsip_hdr_clone_fptr) &pjsip_clen_hdr_shallow_clone,    (pjsip_hdr_print_fptr) &pjsip_clen_hdr_print,};PJ_DEF(pjsip_clen_hdr*) pjsip_clen_hdr_init( pj_pool_t *pool,					     void *mem ){    pjsip_clen_hdr *hdr = mem;    PJ_UNUSED_ARG(pool);    init_hdr(hdr, PJSIP_H_CONTENT_LENGTH, &clen_hdr_vptr);    hdr->len = 0;    return hdr;}PJ_DEF(pjsip_clen_hdr*) pjsip_clen_hdr_create( pj_pool_t *pool ){    void *mem = pj_pool_alloc(pool, sizeof(pjsip_clen_hdr));    return pjsip_clen_hdr_init(pool, mem);}static int pjsip_clen_hdr_print( pjsip_clen_hdr *hdr, 				 char *buf, pj_size_t size){    char *p = buf;    int len;    if ((pj_ssize_t)size < hdr->name.slen + 14)	return -1;    pj_memcpy(p, hdr->name.ptr, hdr->name.slen);    p += hdr->name.slen;    *p++ = ':';    *p++ = ' ';    len = pj_utoa(hdr->len, p);    p += len;    *p = '\0';    return p-buf;}static pjsip_clen_hdr* pjsip_clen_hdr_clone( pj_pool_t *pool, const pjsip_clen_hdr *rhs){    pjsip_clen_hdr *hdr = pjsip_clen_hdr_create(pool);    hdr->len = rhs->len;    return hdr;}////////////////////////////////////////////////////////////////////////////////* * CSeq header. */static int pjsip_cseq_hdr_print( pjsip_cseq_hdr *hdr, char *buf, pj_size_t size);static pjsip_cseq_hdr* pjsip_cseq_hdr_clone( pj_pool_t *pool, const pjsip_cseq_hdr *hdr);static pjsip_cseq_hdr* pjsip_cseq_hdr_shallow_clone( pj_pool_t *pool, const pjsip_cseq_hdr *hdr );static pjsip_hdr_vptr cseq_hdr_vptr = {    (pjsip_hdr_clone_fptr) &pjsip_cseq_hdr_clone,    (pjsip_hdr_clone_fptr) &pjsip_cseq_hdr_shallow_clone,    (pjsip_hdr_print_fptr) &pjsip_cseq_hdr_print,};PJ_DEF(pjsip_cseq_hdr*) pjsip_cseq_hdr_init( pj_pool_t *pool,					     void *mem ){    pjsip_cseq_hdr *hdr = mem;    PJ_UNUSED_ARG(pool);    init_hdr(hdr, PJSIP_H_CSEQ, &cseq_hdr_vptr);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -