>> The changes that Peter referenced below are not in the code yet.

In fact these changes were committed, but I updated the doc without
generating a new snapshot. It is done now.

Sorry for the inconvenience.

Olivier Boulkroune





Date: Wed, 7 Mar 2007 08:16:04 -0800 (PST)
From: "Scott E. Smith" <[EMAIL PROTECTED]>
Subject: Re: [Sipp-users] Route and Record-Route...
To: Olivier Jacques <[EMAIL PROTECTED]>
Cc: [EMAIL PROTECTED],
        [email protected]
Message-ID: <[EMAIL PROTECTED]>
Content-Type: text/plain; charset="iso-8859-1"

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=DEVDE
V_______________________________________________

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=DEVDE
V
_______________________________________________
Sipp-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sipp-users




-------------- next part --------------
An HTML attachment was scrubbed...

------------------------------

------------------------------------------------------------------------
-
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=DEVDE
V

------------------------------

_______________________________________________
Sipp-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sipp-users


End of Sipp-users Digest, Vol 10, Issue 10
******************************************

-------------------------------------------------------------------------
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

Reply via email to