Oliver-
The changes that Peter referenced below are not in the code yet. However, those
changes are reflected in the documentation on the website. It only took me a
*few* minutes to discover that the parameters I was trying to use, don't exist.
They are very useful changes - they should be put in when possible, to catch
the code up with the documentation (which is an uncommon problem!).
A small problem related to regexp - anything that isn't a valid parameter in
the regexp action, is ignored and the remainder of the regexp line is
processed. For example, the following is processed as if 'stuff="this"'
isn't present:
<ereg regexp=".*" stuff="this" search_in="hdr" header="To: "
check_it="true" assign_to="3" />
Wouldn't some kind of parse exception be the preferred behavior? I looked, but
I am not sure how to implement that, or I would suggest the details.
Regards,
Scott
----- Original Message ----
From: Peter Higginson <[EMAIL PROTECTED]>
To: Charles P Wright <[EMAIL PROTECTED]>; Olivier Jacques <[EMAIL PROTECTED]>
Cc: [EMAIL PROTECTED]; [email protected]; Thomas Rosenblatt
<[EMAIL PROTECTED]>
Sent: Wednesday, February 14, 2007 4:00:22 PM
Subject: Re: [Sipp-users] Route and Record-Route...
<!--
_filtered {font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
_filtered {font-family:sans-serif;
panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman";}
a:link, span.MsoHyperlink
{color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{color:blue;
text-decoration:underline;}
p
{
margin-right:0cm;
margin-left:0cm;
font-size:12.0pt;
font-family:"Times New Roman";}
tt
{font-family:"Courier New";}
span.EmailStyle19
{
font-family:Arial;
color:navy;}
_filtered {
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
{}
-->
Charles,
I took the view that I should not change
the current behaviour and I also found a very common sequence we had that relied
on matching any point in the line so it was best for me to leave the default
as it was. (We have many tests that pass values from CA to UA using a
User-Agent header with Parameter1=xxxxx, Parameter2=yyyyy, etc. So we match
header=Parameter1
etc. and I did not want to find them all and edit them.)
The current interpretation of hdr
is just to look in the rest of the line following the match (it is not even
limited to the header SDP is included).
If the consensus was to make start_line the
default, an easy way is to change != to == and && to || in this statement:
if ( 0 != ( ptr = xp_get_value((char
*)"start_line") ) &&
0 == strcmp(ptr,
"true")) tmpAction.setHeadersOnly(true);
else tmpAction.setHeadersOnly(false);
Regards,
Peter
Peter Higginson
Newport Networks Ltd,
Direct line 01494 470694
http://www.newport-networks.com/
From: Charles P Wright
[mailto:[EMAIL PROTECTED]
Sent: 14 February 2007 19:56
To: Olivier Jacques
Cc: Peter Higginson;
[email protected]; [EMAIL PROTECTED];
Thomas Rosenblatt
Subject: Re: [Sipp-users] Route
and Record-Route...
Peter/Olivier,
I
think instead of adding a start_line attribute, that behavior should be the
default (as most people probably expect it to work that way).
Charles
"Olivier Jacques"
<[EMAIL PROTECTED]>
Sent
by: [EMAIL PROTECTED]
02/14/2007 02:15 PM
To
"Peter Higginson"
<[EMAIL PROTECTED]>
cc
[email protected], Thomas Rosenblatt
<[EMAIL PROTECTED]>
Subject
Re: [Sipp-users] Route and Record-Route...
Peter,
thanks for the heads up, I'll have a look tonight.
Olivier.
On 2/13/07, Peter Higginson <
[EMAIL PROTECTED]> wrote:
I did submit these suggested changes a long time ago. Either occurrence or
start_line would do what you want. (I cannot remember why they did not get
put in the main version - there may have been a good reason.)
Peter
Peter Higginson
Newport Networks Ltd,
Direct line 01494 470694
http://www.newport-networks.com/
=========================================================================
From: Peter Higginson [mailto:
[EMAIL PROTECTED]
Sent: 26 August 2005 10:07
To: 'Siddharth Angrish'; '[email protected]'
Subject: RE: [Sipp-users] Query regarding sipp regexp
Some changes we have made in our local copy to meet this requirement are to
add the following functionality to regexp for the "hdr" matching case:
1) case_indep="true" to look for a header
ignoring case
2) occurrence="n" to find the nth occurrence of a
header
3) start_line="true" to look only at start of
line
The occurrence option will allow you to set different variables to each of
the headers you are looking for.
I have also fixed a bug which might crash SIPp for packets longer than 1024
bytes (this may be already incorporated). Note that the current hdr match
looks anywhere in the message and I have left this as the default (with
start of line as the option).
The code changes are below (I've done them based on the version we use, but
I think they match up with the current versions):
In scenario.cpp, change this section of code:
tmpAction.setVarType(CAction::E_VT_REGEXP);
tmpAction.setActionType(CAction::E_AT_ASSIGN_FROM_REGEXP);
if(ptr = xp_get_value((char
*)"search_in")){
if(!strcmp(ptr, (char
*)"msg")) {
tmpAction.setLookingPlace(CAction::E_LP_MSG);
tmpAction.setLookingChar(NULL);
} else if (!strcmp(ptr, (char
*)"hdr")) {
if(ptr =
xp_get_value((char *)"header")) {
if(strlen(ptr)
> 0) {
tmpAction.setLookingPlace(CAction::E_LP_HDR);
tmpAction.setLookingChar(ptr);
} else {
tmpAction.setLookingPlace(CAction::E_LP_MSG);
tmpAction.setLookingChar(NULL);
}
To:
tmpAction.setVarType(CAction::E_VT_REGEXP);
tmpAction.setActionType
(CAction::E_AT_ASSIGN_FROM_REGEXP);
// warning - although these are
detected for both msg and hdr
// they are only implemented for
search_in="hdr"
if ( 0 != ( ptr = xp_get_value((char
*)"case_indep") ) &&
0 == strcmp(ptr,
"true")) tmpAction.setCaseIndep(true);
else tmpAction.setCaseIndep(false);
if ( 0 != ( ptr = xp_get_value((char
*)"start_line") ) &&
0 == strcmp(ptr, "true"))
tmpAction.setHeadersOnly(true);
else tmpAction.setHeadersOnly(false);
if ( 0 != ( ptr = xp_get_value((char
*)"search_in") ) ) {
tmpAction.setOccurrence(1);
if ( 0 == strcmp(ptr, (char
*)"msg") ) {
tmpAction.setLookingPlace(CAction::E_LP_MSG);
tmpAction.setLookingChar
(NULL);
} else if (!strcmp(ptr, (char
*)"hdr")) {
if ( 0 != ( ptr =
xp_get_value((char *)"header") ) ) {
if ( 0 <
strlen(ptr) ) {
tmpAction.setLookingPlace(CAction::E_LP_HDR);
tmpAction.setLookingChar(ptr);
if (0 !=
(ptr = xp_get_value((char *)"occurrence"))) {
tmpAction.setOccurrence (atol(ptr));
}
} else {
tmpAction.setLookingPlace(CAction::E_LP_MSG);
tmpAction.setLookingChar(NULL);
}
In actions.hpp, after
char* getLookingChar();
Add:
bool getCaseIndep();
int getOccurrence();
bool getHeadersOnly();
After:
void setAction (CAction
P_action);
Add:
void setCaseIndep (bool
P_value);
void setOccurrence (int
P_value);
void setHeadersOnly (bool
P_value);
and after:
int M_varId;
Add:
bool M_caseIndep;
int M_occurrence;
bool M_headersOnly;
In actions.cpp, after:
char* CAction::getLookingChar() {
return(M_lookingChar); }
Add:
bool CAction::getCaseIndep() {
return(M_caseIndep); }
int CAction::getOccurrence() {
return(M_occurrence); }
bool CAction::getHeadersOnly() { return(M_headersOnly);
}
After:
void CAction::setVarId (int
P_value)
{ M_varId = P_value; }
Add:
void CAction::setCaseIndep (bool
P_value)
{ M_caseIndep = P_value; }
void CAction::setOccurrence (int
P_value)
{ M_occurrence = P_value; }
void CAction::setHeadersOnly (bool
P_value)
{ M_headersOnly = P_value; }
After:
setCheckIt ( P_action.getCheckIt()
);
Add:
setCaseIndep ( P_action.getCaseIndep() );
setOccurrence ( P_action.getOccurrence() );
setHeadersOnly ( P_action.getHeadersOnly() );
After:
M_lookingChar = NULL;
Add:
M_caseIndep = false;
M_occurrence = 1;
M_headersOnly = true;
After:
setCheckIt ( P_action.M_checkIt
);
Add:
setCaseIndep ( P_action.M_caseIndep );
setOccurrence ( P_action.M_occurrence );
setHeadersOnly ( P_action.M_headersOnly );
In call.hpp, change:
void extractSubMessage(char * msg, char * matchingString, char*
result);
To:
void extractSubMessage(char * msg, char * matchingString, char*
result,
bool case_indep, int occurrence, bool headers);
In call.cpp, change the call to extractSubMessage to become:
extractSubMessage
(msg,
currentAction->getLookingChar(),
msgPart,
currentAction->getCaseIndep(),
currentAction->getOccurrence(),
currentAction->getHeadersOnly());
and then replace the existing routine extractSubMessage with this:
void CallContext::extractSubMessage(char * msg, char * matchingString, char*
result,
bool case_indep, int
occurrence, bool headers) {
char *ptr, *ptr1;
int sizeOf;
int i = 0;
int len = strlen(matchingString);
char mat1 = tolower(*matchingString);
char mat2 = toupper(*matchingString);
ptr = msg;
while (*ptr) {
if (!case_indep) {
ptr = strstr(ptr, matchingString);
if (ptr == NULL) break;
if (headers == true && ptr != msg &&
*(ptr-1) != '\n') {
++ptr;
continue;
}
} else {
if (headers) {
if (ptr != msg) {
ptr = strchr(ptr, '\n');
if (ptr == NULL) break;
++ptr;
if (*ptr == 0) break;
}
} else {
ptr1 = strchr(ptr, mat1);
ptr = strchr(ptr, mat2);
if (ptr == NULL) {
if (ptr1 == NULL) break;
ptr = ptr1;
} else {
if (ptr1 != NULL && ptr1 < ptr)
ptr = ptr1;
}
}
if (strncasecmp(ptr, matchingString, len) != 0) {
++ptr;
continue;
}
}
// here with ptr pointing to a matching string
if (occurrence <= 1) break;
--occurrence;
++ptr;
}
if(ptr != NULL && *ptr != 0) {
strncpy(result, ptr+len, MAX_SUB_MESSAGE_LENGTH);
sizeOf = strlen(result);
if(sizeOf >= MAX_SUB_MESSAGE_LENGTH)
sizeOf = MAX_SUB_MESSAGE_LENGTH-1;
while((i<sizeOf) && (result[i] != '\n') &&
(result[i] != '\r'))
i++;
result[i] = '\0';
} else {
result[0] = '\0';
}
}
Hopefully Olivier will add this to the main version. Let me know of any
issues or problems.
Regards,
Peter
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]
On Behalf Of Thomas
Rosenblatt
Sent: 13 February 2007 09:40
To: [email protected]
Subject: [Sipp-users] Route and Record-Route...
Hi everyone,
In my sipp scenario, I need to parse Route and Record-Route using
header="Route" and header="Record-Route".
The problem is that record-route is inserted before route in my SIP
request, so when I use the header="Route", it retrieves the
Record-Route
field...
I've read the source file and it seems that the problem comes out from
xp_get_value and the strstr search.
This comment is added :
// FIXME: potential BUG in parser: we must retrieve full word,
// so the use of strstr as it is is not enough.
// we should check that the retrieved word is not a piece of another one.
Has somebody fixed it ?
Thank you,
Thomas Rosenblatt.
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job
easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Sipp-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sipp-users
---------------------------------------------------------------------------------------------
This e-mail may contain confidential and/or privileged information.
If you are not the intended recipient (or have received this e-mail in error)
please
notify the sender immediately and delete this e-mail. Any unauthorized copying,
disclosure or distribution of the contents in this e-mail is strictly
forbidden.
---------------------------------------------------------------------------------------------
Newport Networks Limited is registered in
England . Registration number
4067591.
Registered office: 6 St. Andrew
Street , London
EC4A 3LX
---------------------------------------------------------------------------------------------
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Sipp-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sipp-users
--
HP OpenCall Software
http://www.hp.com/go/opencall/
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of
IT
Join SourceForge.net's Techsay panel and you'll
get the chance to share your
opinions on IT & business topics through brief
surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV_______________________________________________
Sipp-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sipp-users
---------------------------------------------------------------------------------------------
This e-mail may contain confidential and/or privileged information.
If you are not the intended recipient (or have received this e-mail in error)
please
notify the sender immediately and delete this e-mail. Any unauthorized copying,
disclosure or distribution of the contents in this e-mail is strictly forbidden.
---------------------------------------------------------------------------------------------
Newport Networks Limited is registered in England. Registration number 4067591.
Registered office: 6 St. Andrew Street, London EC4A 3LX
---------------------------------------------------------------------------------------------
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Sipp-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sipp-users
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Sipp-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sipp-users