Re: [reSIProcate] [resiprocate] New headers and parameters from RFC 3455 and UUI drafts (#6)
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@xxxxxxxxxxxxxxx] On
Behalf Of Dario Bozzali
Sent: martedì 23 settembre 2014 18.34
To: 'Daniel Pocock'
Cc: resiprocate-devel@xxxxxxxxxxxxxxx
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@xxxxxxxxxx]
Sent: martedì 23 settembre 2014 18.24
To: Dario Bozzali
Cc: resiprocate-devel@xxxxxxxxxxxxxxx
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@xxxxxxxxxx]
Sent: martedì 23 settembre 2014 17.48
To: Dario Bozzali
Cc: resiprocate-devel@xxxxxxxxxxxxxxx
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@xxxxxxxxxxxxxxx
https://list.resiprocate.org/mailman/listinfo/resiprocate-devel
_______________________________________________
resiprocate-devel mailing list
resiprocate-devel@xxxxxxxxxxxxxxx
https://list.resiprocate.org/mailman/listinfo/resiprocate-devel