[reSIProcate] Does there have a common way to got RFC headers value and extension headers value ?
Byron Campen
bcampen at estacado.net
Tue Mar 25 09:57:47 CDT 2008
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"
> break
>
> case h_from:
> compare headerName with "to"
> break
>
> default:
> it's extension header.
> break
> 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());
>
> }
>
> But this is not pretty.
>
>
>
> 2008/3/25, Byron Campen <bcampen at estacado.net>:
> 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 at resiprocate.org
> > https://list.resiprocate.org/mailman/listinfo/resiprocate-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20080325/6a23fa83/attachment.htm>
More information about the resiprocate-devel
mailing list