📄 sip_msg.c
字号:
*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 + -