[reSIProcate] [resiprocate] New headers and parameters from RFC 3455 and UUI drafts (#6)
John Gregg
jgregg at aylus.com
Thu Oct 2 14:37:07 CDT 2014
Dario-
WRT P-Charging-Vector, here is what we do. We are a B2BUA, so we just
pass the PCV through when we receive it. That is, on the outbound side,
we just copy whatever we got on the inbound side:
if (src->exists(h_PChargingVector))
{
dest.header(h_PChargingVector) =
src->header(h_PChargingVector);
}
On the inbound side, for various accounting reasons, we do parse PCV out
into our own internal objects (pChargingVecor_):
if (msg.exists(h_PChargingVector))
{
// HACK: if the header starts out with a parameter, resiprocate
// regards it as the value. We must parse it out here by hand.
std::string val(msg.header(h_PChargingVector).value().c_str());
if (val.find("icid-value=") == 0)
{
pChargingVector_.icidValue(val.substr(11).c_str());
}
if (msg.header(h_PChargingVector).exists(p_icidValue))
{
pChargingVector_.icidValue(msg.header(h_PChargingVector).param(p_icidValue).c_str());
}
if (msg.header(h_PChargingVector).exists(p_icidGeneratedAt))
{
pChargingVector_.icidGen(msg.header(h_PChargingVector).param(p_icidGeneratedAt).c_str());
}
if (msg.header(h_PChargingVector).exists(p_origIoi))
{
pChargingVector_.origIoi(msg.header(h_PChargingVector).param(p_origIoi).c_str());
}
...
}
So yes, it is a pain that RFC 3455 specifies a syntax for PCV where
everything is a parameter, and there is no "value". We manage to avoid
dealing with generating it on the outbound side, and use the above
parsing hack to derive the value on the inbound side.
I hope this helps,
-John Gregg
On 10/02/2014 09:43 AM, Dario Bozzali wrote:
> Hi all,
> I'm executing some additional tests on new headers. I have a couple of doubts, but I don't know if there is a bug in the pull request or in my test scenarios.
>
> Scenario 1 related to User-to-User header.
> How to parse the following header?
> User-to-User: "the quick silver fox jumped over the lazy brown dog";encoding=hex
> When I try to get the value of the header I obtain the string ""the" because Token::parse() method skip till first whitespace or semicolon.
>
> Scenario 2 related to P-Charging-Vector header.
> P-Charging-Value has icid-value mandatory parameter and other optional parameters. I understood that it should be modelled as a Token with empty value, but in this way one ";" is inserted before icid-value.
> Example:
> P-Charging-Vector: ;icid-value=B6012049-0080-42D3-982E-473B24816316;icid-generated-at=192.168.56.1;orig-ioi=myserver
>
> What is the right way to set header value?
> Should I use a icid-value parameter to set P-Charging-Vector value?
>
> Something like this:
>
> Token chargingVectorToken;
> DataParameter icidValueParam(ParameterTypes::icidValue);
> icidValueParam.value() = Data("B6012049-0080-42D3-982E-473B24816316");
> Data icidData;
> DataStream icidDataStream(icidData);
> icidValueParam.encode(icidDataStream);
> chargingVectorToken.value() = icidData;
> chargingVectorToken.param(p_icidGeneratedAt) = Data("192.168.56.1");
> chargingVectorToken.param(p_origIoi) = Data("myserver");
>
> Maybe John Gregg could help me on this.
>
> Thank you in advance and kind regards.
>
> Dario
>
> -----Original Message-----
> From: resiprocate-devel [mailto:resiprocate-devel-bounces at resiprocate.org] On Behalf Of Dario Bozzali
> Sent: martedì 23 settembre 2014 18.34
> To: 'Daniel Pocock'
> Cc: resiprocate-devel at resiprocate.org
> Subject: Re: [reSIProcate] [resiprocate] New headers and parameters from RFC 3455 and UUI drafts (#6)
>
> Hi Daniel,
> Excluding DayOfWeekHash and MonthHash from build I was able to compile without changing DateCategory.cxx.
> DayOfWeekHash and MonthHash are built because tool configured in project is "C/C++ Compiler Tool" instead of "Custom Build Tool" as per other header files.
>
> Regards,
> Dario.
>
> -----Original Message-----
> From: Daniel Pocock [mailto:daniel at pocock.pro]
> Sent: martedì 23 settembre 2014 18.24
> To: Dario Bozzali
> Cc: resiprocate-devel at resiprocate.org
> Subject: Re: [resiprocate] New headers and parameters from RFC 3455 and UUI drafts (#6)
>
>
> Hi Dario,
>
> I notice that MethodHash is including string.h and ctype.h so I've added those same includes to DateCategory.cxx so they will be included before DayOfWeekHash and MonthHash
>
> Can you just confirm, Visual Studio is not trying to compile these cxx files into separate objects? It should only be including them when it compiles DateCategory.cxx so they should all become part of the object file DateCategory.o
>
> Regards,
>
> Daniel
>
> On 23/09/14 18:08, Dario Bozzali wrote:
>> Hi Daniel,
>> Below I reported the output obtained using Visual Studio 2005 to build master.
>> Dario.
>>
>> 1>DayOfWeekHash.cxx
>> 1>dayofweek.gperf(5) : error C2146: syntax error : missing ';' before identifier 'type'
>> 1>dayofweek.gperf(5) : error C4430: missing type specifier - int
>> 1>assumed. Note: C++ does not support default-int
>> 1>dayofweek.gperf(5) : error C4430: missing type specifier - int
>> 1>assumed. Note: C++ does not support default-int
>> 1>dayofweek.gperf(13) : error C2065: 'Sat' : undeclared identifier
>> 1>dayofweek.gperf(13) : error C2078: too many initializers
>> 1>dayofweek.gperf(8) : error C2065: 'Mon' : undeclared identifier
>> 1>dayofweek.gperf(7) : error C2065: 'Sun' : undeclared identifier
>> 1>dayofweek.gperf(10) : error C2065: 'Wed' : undeclared identifier
>> 1>dayofweek.gperf(11) : error C2065: 'Thu' : undeclared identifier
>> 1>dayofweek.gperf(12) : error C2065: 'Fri' : undeclared identifier
>> 1>dayofweek.gperf(9) : error C2065: 'Tue' : undeclared identifier
>> 1>dayofweek.gperf(20) : error C3861: 'strncmp': identifier not found
>> 1>MonthHash.cxx
>> 1>month.gperf(5) : error C2146: syntax error : missing ';' before identifier 'type'
>> 1>month.gperf(5) : error C4430: missing type specifier - int assumed.
>> 1>Note: C++ does not support default-int
>> 1>month.gperf(5) : error C4430: missing type specifier - int assumed.
>> 1>Note: C++ does not support default-int
>> 1>month.gperf(12) : error C2065: 'Jun' : undeclared identifier
>> 1>month.gperf(12) : error C2078: too many initializers
>> 1>month.gperf(13) : error C2065: 'Jul' : undeclared identifier
>> 1>month.gperf(7) : error C2065: 'Jan' : undeclared identifier
>> 1>month.gperf(11) : error C2065: 'May' : undeclared identifier
>> 1>month.gperf(8) : error C2065: 'Feb' : undeclared identifier
>> 1>month.gperf(9) : error C2065: 'Mar' : undeclared identifier
>> 1>month.gperf(10) : error C2065: 'Apr' : undeclared identifier
>> 1>month.gperf(18) : error C2065: 'Dec' : undeclared identifier
>> 1>month.gperf(14) : error C2065: 'Aug' : undeclared identifier
>> 1>month.gperf(15) : error C2065: 'Sep' : undeclared identifier
>> 1>month.gperf(16) : error C2065: 'Oct' : undeclared identifier
>> 1>month.gperf(17) : error C2065: 'Nov' : undeclared identifier
>> 1>month.gperf(28) : error C3861: 'strncmp': identifier not found
>>
>> -----Original Message-----
>> From: Daniel Pocock [mailto:daniel at pocock.pro]
>> Sent: martedì 23 settembre 2014 17.48
>> To: Dario Bozzali
>> Cc: resiprocate-devel at resiprocate.org
>> Subject: Re: [resiprocate] New headers and parameters from RFC 3455
>> and UUI drafts (#6)
>>
>>
>>
>> On 23/09/14 17:42, Dario Bozzali wrote:
>>> Hi Daniel,
>>> I solved the compiling issue changing Visual Studio project settings to exclude DayOfWeekHash.cxx and MonthHash.cxx from build. I commit this change for every VS version.
>>> Now I will take a look at conflict issue.
>>
>> That sounds odd. If you checkout the master branch, without any of your changes, does it build with those files included?
>>
>> If it doesn't build on master, can you tell me what error it gives?
>>
> _______________________________________________
> resiprocate-devel mailing list
> resiprocate-devel at resiprocate.org
> https://list.resiprocate.org/mailman/listinfo/resiprocate-devel
>
> _______________________________________________
> resiprocate-devel mailing list
> resiprocate-devel at resiprocate.org
> https://list.resiprocate.org/mailman/listinfo/resiprocate-devel
More information about the resiprocate-devel
mailing list