< Previous by Date | Date Index | Next by Date > |
< Previous in Thread | Thread Index |
Doing this would be tricky. It would probably involve leaning on HeaderHash::in_word_set() (this will map a string to a header-type) and a very large switch statement on the header-type. This would be time-consuming to say the least, and prone to breakage if new header-types are added.
Best regards,Byron Campen
Thank you Byron, but as my function, the user call this function and passed the headerName as parameter,I do not know the header is built-in header or is extension header, so I want to found common way.I just think a stupid idea, use the case to mapping headerName parameter with the buit-in headers.void GetHeaderValue(Data buff, string headerName){SipMessage * message = SipMessage::make(buff);
if (!message)
{
return ;
}case h_to:compare headerName with "to"breakcase h_from:compare headerName with "to"breakdefault:it's extension header.breakExtensionHeader h_Extension(headerName.c_str());
if (message->exists(h_Extension) == false)
{
return ;
}
if (message->header(h_Extension).empty() == true)
{
return ;
}
if (message->header(h_Extension).front().isWellFormed() == false)
{
return ;
}Data temp(message->header(h_Extension).front().value());
}But this is not pretty.
2008/3/25, Byron Campen <bcampen@xxxxxxxxxxxx>:You don't access the headers with built-in support with
ExtensionHeader. You need to use the already-defined header access
tokens. (see http://www.resiprocate.org/Use_Overview#Headers)
Best regards,
Byron Campen
> Hi, I want to write a function to got the headers value. it's
> working fine with Extension header, but for the
> RFC header, likes contact, to, from. I got assert error,.
> How to mofify this function then it can be working with
> RFC headers and extension headers both?
>
> Thank you in advance.
>
>
> void GetHeaderValue(Data buff, string headerName)
> {
> SipMessage * message = SipMessage::make(buff);
> if (!message)
> {
> return ;
> }
> ExtensionHeader h_Extension(headerName.c_str());
> if (message->exists(h_Extension) == false)
> {
> return ;
> }
>
>
> if (message->header(h_Extension).empty() == true)
> {
> return ;
> }
>
>
> if (message->header(h_Extension).front().isWellFormed() == false)
> {
> return ;
> }
>
> Data temp(message->header(h_Extension).front().value());
>
>
>
> }
> _______________________________________________
> resiprocate-devel mailing list
> resiprocate-devel@xxxxxxxxxxxxxxx
> https://list.resiprocate.org/mailman/listinfo/resiprocate-devel