[reSIProcate] [reSIProcate-users] Bug report

Robert Sparks rjsparks at estacado.net
Thu Jul 24 10:24:47 CDT 2008


For anyone that's trying to wrap their heads around this and having  
trouble:

Accept:

(That is an Accept: header with no values) in a message means  
something fundamentally different than a message with no Accept header  
field at all. It explicitly says this UA will Accept no MIME-types  
where the absence of the field means the UA is not telling what it  
will accept or not.

To answer Byron's question, though, I did a quick skim of the header  
fields defined in 3261 and don't see any where it makes sense for them  
to be present with no value. I can't, off the top of my head, think of  
any already defined elsewhere that would allow no value. And (with the  
caveat that I haven't thought about it very long) can't think of any  
really good reason anyone would _want_ to define a single valued  
header where no value meant something. The only thing I can come up  
with is if the header field is intended to carry some literal and the  
empty string is a valid literal in its context, but I would hope  
whoever defined it would put some delineators (or use some encoding)  
to reduce the potential ambiguity.

(If I ever get to influence some future protocol, I will argue against  
the form we're allowing for header fields like Accept and ask for  
explicit bits that can be put there to semantically signal "none").

RjS


On Jul 24, 2008, at 10:04 AM, Byron Campen wrote:

> 	Moving this to resip-devel:
>
> 	Hmm, it looks like we're tripping over the code that is meant to  
> distinguish "Accept: " from the absence of an Accept header (or  
> other headers of that type; Allow, Allow-Events, etc). These are all  
> multi-value headers.
>
> 	Should we really be doing this for single-value headers? I don't  
> think we should. If we get a single value header that is empty, we  
> should not be representing it as an empty list. Can anyone think of  
> a counter-example where an empty single-value header needs to be  
> fundamentally conceptually different than a normal single-value  
> header?
>
> Best regards,
> Byron Campen
>
>> Thank you Byron, but same problem, this is my code:
>>
>>         Data subject;
>>
>>         if (sub.exists(h_Subject)==true &&  
>> sub.header(h_Subject).isWellFormed()==true)
>>         {
>>             subject = sub.header(h_Subject).value();
>>         }
>>
>>
>> On Thu, Jul 24, 2008 at 10:42 PM, Byron Campen  
>> <bcampen at estacado.net> wrote:
>> 	You need to throw in a sub.header(h_Subject).isWellFormed() in  
>> that check, ie:
>>
>>>         Data subject;
>>>
>>>         if (sub.exists(h_Subject)==true &&  
>>> sub.header(h_Subject).isWellFormed() &&  
>>> sub.header(h_Subject).value().empty()==false)
>>>
>>>         {
>>>             subject = sub.header(h_Subject).value();
>>>         }
>>
>>
>> Best regards,
>> Byron Campen
>>
>>> Hi all, I think I found a bug:
>>>
>>> 1: I using the counterpath Bria to send a presence SUBSCRIBE to my  
>>> UA.
>>> 2: I use wireshark to capture the SUBSCRIBE message, saw it has  
>>> Subject header, but this header value is empty.
>>>
>>> 3: onNewSubscription(ServerSubscriptionHandle h, const SipMessage&  
>>> sub)  call back is fired, then I use this code to access the  
>>> Subject header:
>>>
>>>         Data subject;
>>>
>>>         if (sub.exists(h_Subject)==true &&  
>>> sub.header(h_Subject).value().empty()==false)
>>>         {
>>>             subject = sub.header(h_Subject).value();
>>>         }
>>>
>>> When running to sub.header(h_Subject).value().empty()==false, the  
>>> VC2005 debuger go to dialogusagemanager.cxx line 1778:
>>>
>>>             catch (BaseException& e)
>>>             {
>>>                SipMessage failure;   <----------- it's go to here
>>>                makeResponse(failure, request, 400, e.getMessage());
>>>                failure.header(h_AcceptLanguages) =  
>>> getMasterProfile()->getSupportedLanguages();
>>>                sendResponse(failure);
>>>             }
>>>
>>>
>>> If  the subject header value is not empty, then all are ok.
>>>
>>> thanks
>>> _______________________________________________
>>> resiprocate-users mailing list
>>> resiprocate-users at resiprocate.org
>>> List Archive: http://list.resiprocate.org/archive/resiprocate-users/
>>
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20080724/de1873b7/attachment.htm>


More information about the resiprocate-devel mailing list