On 03/23/2016 06:46 PM, Mike Roberts wrote: > I want to copy the headers I receive in an INVITE (or other message) into a > key value store. Is there an easy way to iterate over the headers in a > message? Or at least the headers that can be represented as a > pjsip_generic_string_hdr? The best method I can find so far would be to > loop over the body of the message and manually parse the headers myself. > I didn't test it, but... In the on_incoming_call you can get the message object: void on_incoming_call( ..., ..., pjsip_rx_data *rdata ) { pjsip_msg* msg = rdata->msg_info.msg; char value[ 512 ] = { 0 }; const pjsip_hdr *hdr=(const pjsip_hdr*)msg->hdr.next, *end=&msg->hdr; for (; hdr!=end; hdr = hdr->next) { /* write header value to buffer */ hdr->vptr->print_on( hdr, value, 512 ); /* store header in database or whatever... */ store_header( hdr->name, value ); } } Like I said, I didn't test it but merely wrote this looking at the code in functions like pjsip_msg_find_hdr* If somebody else has a better way of doing this, please share it here. Regards, Andreas