/[resiprocate]/main/repro/ReproRunner.cxx
ViewVC logotype

Log of /main/repro/ReproRunner.cxx

Parent Directory Parent Directory | Revision Log Revision Log


Links to HEAD: (view) (download) (annotate)
Sticky Revision:

Revision 11220 - (view) (download) (annotate) - [select for diffs]
Modified Sat Aug 30 14:15:39 2014 UTC (5 years, 2 months ago) by dpocock
File length: 68594 byte(s)
Diff to previous 11210
repro: Logging: configuring Syslog facility

Revision 11210 - (view) (download) (annotate) - [select for diffs]
Modified Fri Jun 6 14:28:28 2014 UTC (5 years, 5 months ago) by sgodin
File length: 68457 byte(s)
Diff to previous 11151
-added ability to callback to SipMessageLoggingHandler for retransmitted messages as well

Revision 11151 - (view) (download) (annotate) - [select for diffs]
Modified Tue Apr 22 16:27:35 2014 UTC (5 years, 6 months ago) by sgodin
File length: 68004 byte(s)
Diff to previous 11146
-added ability to install a SipMessageLoggingHandler that will get called for every inbound and outbound
 SIP Message on a particular transport - work started by Palladin
-added SipStack::setTransportSipMessageLoggingHandler to set logger on all added transports 
-added new Repro setting EnableSipMessageLogging to enable INFO level SipMessage logging
-ReproRunner: enasure we pass PrivateKeyPassPhrase when custom private key file is provided 
-ReproRunner: if transprot fails to create - don't bother processing it further



Revision 11146 - (view) (download) (annotate) - [select for diffs]
Modified Mon Apr 21 20:54:26 2014 UTC (5 years, 6 months ago) by sgodin
File length: 66481 byte(s)
Diff to previous 11078
-added ability to use Domain Private Key files that are encrypted with a pass phrase
-repro: disable auth-int authentication in repro by default - appears buggy
-repro: allow private key pass pharse to be configured as a global default or per advanced transport 
 -note:  storing this in clear text config is a really bad idea - we should improve this in the future, however
         this implementation shows how someone can use private key passwords in a more secured custom version 
         of repro 


Revision 11078 - (view) (download) (annotate) - [select for diffs]
Modified Tue Mar 25 13:26:54 2014 UTC (5 years, 7 months ago) by Dpocock
File length: 65892 byte(s)
Diff to previous 10991
rutil: ServerProcess: provide facility to check if process already running

Revision 10991 - (view) (download) (annotate) - [select for diffs]
Modified Thu Feb 20 14:09:03 2014 UTC (5 years, 8 months ago) by sgodin
File length: 65521 byte(s)
Diff to previous 10978
-fix coding style

Revision 10978 - (view) (download) (annotate) - [select for diffs]
Modified Thu Feb 20 11:16:54 2014 UTC (5 years, 8 months ago) by Dpocock
File length: 65507 byte(s)
Diff to previous 10975
repro: WebAdmin: catch and log exceptions when starting

Revision 10975 - (view) (download) (annotate) - [select for diffs]
Modified Sun Feb 16 20:04:10 2014 UTC (5 years, 8 months ago) by sgodin
File length: 65003 byte(s)
Diff to previous 10967
-removed use of raw transport pointers in Tuple and SipMessage (finally!!)
 -required repro record route logic to be modified - no longer store transport specific
  record routes in the Transport class - the Proxy class now tracks these
 -removed SipMessage::getReceivedTransport and added isFromWire method that can be used in
  it's place in various locations


Revision 10967 - (view) (download) (annotate) - [select for diffs]
Modified Fri Feb 14 19:11:46 2014 UTC (5 years, 8 months ago) by sgodin
File length: 64371 byte(s)
Diff to previous 10962
-fix issue with CommandServerList being deleted when not newed if startup fails due to transport exception
 -modified CommandServerList and WebAdminList to not be heap allocated to clean up implementation 
 -don't copy list in WebAdminThread and CommandServerThread - just use reference

Revision 10962 - (view) (download) (annotate) - [select for diffs]
Modified Wed Feb 12 21:53:53 2014 UTC (5 years, 9 months ago) by sgodin
File length: 64565 byte(s)
Diff to previous 10948
-fix potential leak removed by Coverity if CommandServer doesn't get created properly 

Revision 10948 - (view) (download) (annotate) - [select for diffs]
Modified Sat Feb 8 18:06:04 2014 UTC (5 years, 9 months ago) by sgodin
File length: 64477 byte(s)
Diff to previous 10925
-reprocmd/CommandServer -added new command to be able to add transports at runtime
-fixed up StackStatistics handling for when multiple command servers are running (ie: v4 and v6 CommandServers)
 -ReproRunner now receives the statistics and dispatches them to each running CommandServer 
-repro
 -ensure we use the ServerText config setting to set the server text headers in requests that traverse repro
 -fix potential memory leak when creating web admin objects fails




Revision 10925 - (view) (download) (annotate) - [select for diffs]
Modified Mon Jan 27 18:55:14 2014 UTC (5 years, 9 months ago) by Dpocock
File length: 63704 byte(s)
Diff to previous 10910
repro: CookieAuthenticator: checking extension header against cookie

Revision 10910 - (view) (download) (annotate) - [select for diffs]
Modified Tue Jan 21 18:29:43 2014 UTC (5 years, 9 months ago) by Dpocock
File length: 63566 byte(s)
Diff to previous 10899
repro: give plugins notification of HUP

Revision 10899 - (view) (download) (annotate) - [select for diffs]
Modified Tue Jan 21 15:04:08 2014 UTC (5 years, 9 months ago) by Dpocock
File length: 63366 byte(s)
Diff to previous 10879
repro: take HttpAdminPassword out of repro.config, use a htdigest file

Revision 10879 - (view) (download) (annotate) - [select for diffs]
Modified Sat Jan 18 19:15:53 2014 UTC (5 years, 9 months ago) by sgodin
File length: 63281 byte(s)
Diff to previous 10847
-fix crash when shutting down repro 
 -modified AuthenticatorFactory to return auto_ptr's for repro processors
  When Processors are added the ProcessorChain now owns the object and it will be 
  deleted when the chain is deleted.  We shouldn't be handing out SharedPtr's.  Looks
  like there was an attempt to a SharedPtr reset to try and get around this, but that would
  have only reset the returned SharedPtr and not the SharedPtr stored in the object.  


Revision 10847 - (view) (download) (annotate) - [select for diffs]
Modified Sun Jan 12 09:48:39 2014 UTC (5 years, 10 months ago) by dpocock
File length: 63489 byte(s)
Diff to previous 10816
repro: insert syslog message through format string

Revision 10816 - (view) (download) (annotate) - [select for diffs]
Modified Fri Jan 3 22:19:55 2014 UTC (5 years, 10 months ago) by sgodin
File length: 63483 byte(s)
Diff to previous 10795
-VS2010 / WIN32 build fixes

Revision 10795 - (view) (download) (annotate) - [select for diffs]
Modified Tue Dec 31 01:04:59 2013 UTC (5 years, 10 months ago) by Dpocock
File length: 63471 byte(s)
Diff to previous 10793
repro: add support for TCPMinimumGCHeadroom

Revision 10793 - (view) (download) (annotate) - [select for diffs]
Modified Tue Dec 31 01:04:49 2013 UTC (5 years, 10 months ago) by Dpocock
File length: 63364 byte(s)
Diff to previous 10792
repro: add TCPConnectionGCAge config option for garbage collection

Revision 10792 - (view) (download) (annotate) - [select for diffs]
Modified Tue Dec 31 01:04:44 2013 UTC (5 years, 10 months ago) by Dpocock
File length: 63069 byte(s)
Diff to previous 10791
repro: configure User-Agent header for registrar, set default value with PACKAGE_VERSION

Revision 10791 - (view) (download) (annotate) - [select for diffs]
Modified Sat Dec 28 07:27:50 2013 UTC (5 years, 10 months ago) by dpocock
File length: 62790 byte(s)
Diff to previous 10790
repro: ReproRunner: only try to use REPRO_DSO_PLUGIN_DIR_DEFAULT if plugins enabled

Revision 10790 - (view) (download) (annotate) - [select for diffs]
Modified Wed Dec 25 16:23:25 2013 UTC (5 years, 10 months ago) by Dpocock
File length: 62788 byte(s)
Diff to previous 10784
repro: send an alert to syslog when config parsing fails

Revision 10784 - (view) (download) (annotate) - [select for diffs]
Modified Wed Dec 25 16:23:04 2013 UTC (5 years, 10 months ago) by Dpocock
File length: 62658 byte(s)
Diff to previous 10780
repro: move authenticator creation code into a common factory class

Revision 10780 - (view) (download) (annotate) - [select for diffs]
Modified Tue Dec 24 01:26:26 2013 UTC (5 years, 10 months ago) by Dpocock
File length: 65744 byte(s)
Diff to previous 10772
resip: support WsCookieContext creation using factory pattern

Revision 10772 - (view) (download) (annotate) - [select for diffs]
Modified Sat Dec 21 00:46:11 2013 UTC (5 years, 10 months ago) by Dpocock
File length: 65145 byte(s)
Diff to previous 10753
repro: config: support non-consecutive transport numbering in advanced transport spec

Revision 10753 - (view) (download) (annotate) - [select for diffs]
Modified Wed Dec 18 17:31:18 2013 UTC (5 years, 10 months ago) by Dpocock
File length: 65137 byte(s)
Diff to previous 10749
repro: add RTLD_GLOBAL to dlopen for plugins

Revision 10749 - (view) (download) (annotate) - [select for diffs]
Modified Wed Dec 18 12:15:26 2013 UTC (5 years, 10 months ago) by Dpocock
File length: 65123 byte(s)
Diff to previous 10743
repro: load plugins after creating SipStack

Revision 10743 - (view) (download) (annotate) - [select for diffs]
Modified Tue Dec 17 21:32:40 2013 UTC (5 years, 10 months ago) by Dpocock
File length: 65077 byte(s)
Diff to previous 10735
repro: pyroute plugin: begin worker thread support

Revision 10735 - (view) (download) (annotate) - [select for diffs]
Modified Mon Dec 16 13:28:29 2013 UTC (5 years, 10 months ago) by Dpocock
File length: 65065 byte(s)
Diff to previous 10723
repro: allow auth even when not using registrar/dum (bugfix)

Revision 10723 - (view) (download) (annotate) - [select for diffs]
Modified Mon Dec 9 15:44:03 2013 UTC (5 years, 11 months ago) by dpocock
File length: 64816 byte(s)
Diff to previous 10721
repro: add plugin DSO support

Revision 10721 - (view) (download) (annotate) - [select for diffs]
Modified Fri Dec 6 14:26:42 2013 UTC (5 years, 11 months ago) by Dpocock
File length: 61358 byte(s)
Diff to previous 10718
resip/stack: DTLS support for certificate chains

Revision 10718 - (view) (download) (annotate) - [select for diffs]
Modified Fri Dec 6 12:34:17 2013 UTC (5 years, 11 months ago) by dpocock
File length: 61220 byte(s)
Diff to previous 10702
resip/stack: fix support for intermediate certificate chains

Revision 10702 - (view) (download) (annotate) - [select for diffs]
Modified Wed Nov 27 16:58:16 2013 UTC (5 years, 11 months ago) by Dpocock
File length: 61015 byte(s)
Diff to previous 10700
repro: rename config option MessageSizeLimit to StreamMessageSizeLimit

Revision 10700 - (view) (download) (annotate) - [select for diffs]
Modified Wed Nov 27 15:23:22 2013 UTC (5 years, 11 months ago) by Dpocock
File length: 60976 byte(s)
Diff to previous 10561
repro: add new repro.config option MessageSizeLimit

Revision 10561 - (view) (download) (annotate) - [select for diffs]
Modified Sat Sep 28 07:48:11 2013 UTC (6 years, 1 month ago) by dpocock
File length: 60706 byte(s)
Diff to previous 10535
merge: b-gsoc-2013: WebSocket handshake cookie parsing and validation

Revision 10535 - (view) (download) (annotate) - [select for diffs]
Modified Wed Sep 25 13:39:23 2013 UTC (6 years, 1 month ago) by sgodin
File length: 59247 byte(s)
Diff to previous 10529
-fix for non SSL builds 

Revision 10529 - (view) (download) (annotate) - [select for diffs]
Modified Sun Sep 22 14:59:15 2013 UTC (6 years, 1 month ago) by sgodin
File length: 59187 byte(s)
Diff to previous 10471
-fix bug that causes assert if you try to configure repro registrar and authentication disabled 

Revision 10471 - (view) (download) (annotate) - [select for diffs]
Modified Wed Sep 11 12:54:31 2013 UTC (6 years, 2 months ago) by dpocock
File length: 59190 byte(s)
Diff to previous 10470
repro: make the CertificatePath optional with no default

Revision 10470 - (view) (download) (annotate) - [select for diffs]
Modified Wed Sep 11 11:38:21 2013 UTC (6 years, 2 months ago) by dpocock
File length: 59216 byte(s)
Diff to previous 10270
repro: allow specification of arbitrary domain cert/key PEM files

Revision 10270 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jul 18 07:57:59 2013 UTC (6 years, 3 months ago) by dpocock
File length: 57030 byte(s)
Diff to previous 10268
repro: added support for WebAdmin and CommandServer binding to specific IP addresses

Revision 10268 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jul 18 07:48:00 2013 UTC (6 years, 3 months ago) by dpocock
File length: 54180 byte(s)
Diff to previous 10117
repro: fixed CommandServer being created even though listener bind failed

Revision 10117 - (view) (download) (annotate) - [select for diffs]
Modified Fri Apr 5 20:56:56 2013 UTC (6 years, 7 months ago) by sgodin
File length: 53848 byte(s)
Diff to previous 10094
-ConnectionBase: define RESIP_SIP_MSG_MAX_BYTES is not already defined
-ConnectionBase: fix bracketing style
-ConnectionBase: fix windows build when OpenSSL is not used - added
 #ifdef USE_SSL around SHA1Stream use
-Add new WebSocket source and header files to Visual Studio project files
-WsDecorator: fix bracketing style

Revision 10094 - (view) (download) (annotate) - [select for diffs]
Modified Thu Apr 4 22:02:03 2013 UTC (6 years, 7 months ago) by dpocock
File length: 53836 byte(s)
Diff to previous 10082
Merge b-webrtc into main

Revision 10082 - (view) (download) (annotate) - [select for diffs]
Modified Mon Mar 25 22:08:32 2013 UTC (6 years, 7 months ago) by dpocock
File length: 53138 byte(s)
Diff to previous 10053
repro: use isSecure() instead of hard-coded transport names

Revision 10053 - (view) (download) (annotate) - [select for diffs]
Modified Thu Mar 21 19:05:00 2013 UTC (6 years, 7 months ago) by dpocock
File length: 53113 byte(s)
Diff to previous 10042
repro: log an error if mappings file missing

Revision 10042 - (view) (download) (annotate) - [select for diffs]
Modified Mon Mar 4 23:32:21 2013 UTC (6 years, 8 months ago) by dpocock
File length: 53025 byte(s)
Diff to previous 10022
-ensure that we can accept IPv6 addresses in the Transport settings in repro.config

Revision 10022 - (view) (download) (annotate) - [select for diffs]
Modified Tue Feb 26 18:49:36 2013 UTC (6 years, 8 months ago) by dpocock
File length: 52917 byte(s)
Diff to previous 10009
repro: Add supporting for starting as root and dropping privileges

Revision 10009 - (view) (download) (annotate) - [select for diffs]
Modified Fri Feb 22 19:27:44 2013 UTC (6 years, 8 months ago) by sgodin
File length: 52704 byte(s)
Diff to previous 10008
-ensure that we can accept IPv6 addresses in the Transport settings in repro.config

Revision 10008 - (view) (download) (annotate) - [select for diffs]
Modified Thu Feb 21 22:49:55 2013 UTC (6 years, 8 months ago) by dpocock
File length: 52596 byte(s)
Diff to previous 9863
repro: add LoggingInstanceName config option

Revision 9863 - (view) (download) (annotate) - [select for diffs]
Modified Wed Aug 8 12:21:45 2012 UTC (7 years, 3 months ago) by dpocock
File length: 52509 byte(s)
Diff to previous 9849
repro: complete change to new ConfigParse API from r9858

Revision 9849 - (view) (download) (annotate) - [select for diffs]
Modified Mon Aug 6 14:33:34 2012 UTC (7 years, 3 months ago) by dpocock
File length: 52473 byte(s)
Diff to previous 9841
repro: disable DIGEST challenge of third parties in DUM auth when mutual TLS in use

Revision 9841 - (view) (download) (annotate) - [select for diffs]
Modified Mon Aug 6 14:31:26 2012 UTC (7 years, 3 months ago) by dpocock
File length: 52223 byte(s)
Diff to previous 9828
repro: Undo change d840a98034c057 that put TLS client auth feature/monkey after DIGEST

Revision 9828 - (view) (download) (annotate) - [select for diffs]
Modified Sat Aug 4 12:26:51 2012 UTC (7 years, 3 months ago) by dpocock
File length: 52437 byte(s)
Diff to previous 9825
repro: CertificateAuthenticator: add CommonNameMappings config option to load CN mappings from a text file

Revision 9825 - (view) (download) (annotate) - [select for diffs]
Modified Sat Aug 4 00:21:39 2012 UTC (7 years, 3 months ago) by dpocock
File length: 50645 byte(s)
Diff to previous 9813
repro: move TLS client auth feature/monkey after DIGEST, so that TLS client auth can know if the peer passed DIGEST

Revision 9813 - (view) (download) (annotate) - [select for diffs]
Modified Thu Aug 2 17:38:19 2012 UTC (7 years, 3 months ago) by dpocock
File length: 50431 byte(s)
Diff to previous 9811
repro: add new EnumDomains config option for the corresponding SipStack property

Revision 9811 - (view) (download) (annotate) - [select for diffs]
Modified Thu Aug 2 17:37:47 2012 UTC (7 years, 3 months ago) by dpocock
File length: 50004 byte(s)
Diff to previous 9809
repro: tweak the fix for the addDomains() code

Revision 9809 - (view) (download) (annotate) - [select for diffs]
Modified Thu Aug 2 17:37:19 2012 UTC (7 years, 3 months ago) by dpocock
File length: 50003 byte(s)
Diff to previous 9770
repro: eliminate code that automatically adds localhost, machine name, etc to the Domains config variable

Revision 9770 - (view) (download) (annotate) - [select for diffs]
Modified Wed Jun 13 18:30:58 2012 UTC (7 years, 5 months ago) by sgodin
File length: 49784 byte(s)
Diff to previous 9740
Add registration and call/session accounting
--------------------------------------------
-configured/enabled via configuration file

-Session Accounting - When enabled resiprocate will push a JSON formatted 
 events for sip session related messaging that the proxy receives,
 to a persistent message queue that uses berkeleydb backed storage.
 The following call events are logged:
   SessionCreated - INVITE passing authentiation was received
   SessionRouted - received INVITE was forward to a target
   SessionRedirected - session was 3xx redirected or REFERed
   SessionEstablished - there was 2xx answer to an INVITE (only generate for first 2xx)
   SessionCancelled - CANCEL was received
   SessionEnded - BYE was received from either end
   SessionError - a 4xx, 5xx, or 6xx response was sent to invitor

-Registration Accounting - When enabled resiprocate will push a JSON formatted 
 events for every registration, re-registration, and unregistration message
 received to a persistent message queue that uses berkeleydb backed storage.
 The following registration events are logged:
   RegistrationAdded - initial registration received
   RegistrationRefreshed - registration refresh received / re-register
   RegistrationRemoved - registration removed by client / un-register
   RegistrationRemovedAll - all contacts registration remove / unregister received

-Consuming Accounting Events:
 Users must ensure that the message queues are consumed, or they will grow without
 bound.  A queuetostream consumer process is provided, that will consume the 
 events from the message queue and stream them to stdout.  This output stream can
 be consumed by linux scripting tools and converted to database records or some
 other relevant representation of the data.  
 For example: 
 ./queuetostream ./sessioneventqueue > sessionstreamconsumer.py
 ./queuetostream ./regeventqueue > regstreamconsumer.py
 In the future a MySQL consumer may also be provided in order to update
 session accounting records in a MySQL database table.

Revision 9740 - (view) (download) (annotate) - [select for diffs]
Modified Thu May 31 16:33:12 2012 UTC (7 years, 5 months ago) by sgodin
File length: 49716 byte(s)
Diff to previous 9736
-added an ability to configure a different database instance for some of the repro database tables
 New configuration file settings, RuntimeMySQLServer and subsetting, were added to facilitate this.

 The Users and MessageSilo database tables are different from the other repro configuration
 database tables, in that they are accessed at runtime as SIP requests arrive.  It may be
 desirable to use BerkeleyDb for the other repro tables (which are read at starup time, then 
 cached in memory), and MySQL for the runtime accessed tables; or two separate MySQL instances 
 for these different table sets.  The new configuration settings allow you to achieve this.



Revision 9736 - (view) (download) (annotate) - [select for diffs]
Modified Fri May 25 18:59:05 2012 UTC (7 years, 5 months ago) by sgodin
File length: 48769 byte(s)
Diff to previous 9688
-added new virtual method to repro runner to make inserting custom processors between existing ones possible

Revision 9688 - (view) (download) (annotate) - [select for diffs]
Modified Fri May 18 19:16:03 2012 UTC (7 years, 5 months ago) by sgodin
File length: 48609 byte(s)
Diff to previous 9665
-simplify AsyncProcessorMessage by removing requirement to implement clone() and copy constructor - messages are never copied
-optimize pcre use in MessageSilo - we don't use replacement patterns to set REG_NOSUB flag properly
-added new repro setting to assume that first hop supports outbound

There are cases where the first hop in a particular network supports the concept of outbound
and ensures all messaging for a client is delivered over the same connection used for
registration.  This could be a SBC or other NAT traversal aid router that uses the Path 
header.  However such endpoints may not be 100% compliant with outbound RFC and may not 
include a ;ob parameter in the path header.  This parameter is required in order for repro
to have knowledge that the first hop does support outbound, and it will reject registrations
that appear to be using outboud (ie. instanceId and regId) with a 439 (First Hop Lacks Outbound
Support).  In this case it can be desirable when using repro as the registrar to not reject
REGISTRATION requests that contain an instanceId and regId with a 439.
If this setting is enabled, then repro will assume the first hop supports outbound 
and not return this error.

Revision 9665 - (view) (download) (annotate) - [select for diffs]
Modified Sun May 6 11:58:05 2012 UTC (7 years, 6 months ago) by dpocock
File length: 48482 byte(s)
Diff to previous 9636
resip, repro: add support for a whitelist of trusted TLS peers

Revision 9636 - (view) (download) (annotate) - [select for diffs]
Modified Thu May 3 13:23:52 2012 UTC (7 years, 6 months ago) by sgodin
File length: 47889 byte(s)
Diff to previous 9633
-added back missing change from manual merge of repro.cxx changes -> ReproRunner.cxx
 for new root certificate settings

Revision 9633 - (view) (download) (annotate) - [select for diffs]
Modified Wed May 2 19:27:38 2012 UTC (7 years, 6 months ago) by sgodin
File length: 47601 byte(s)
Copied from: branches/b-repro-enh-20120205/repro/ReproRunner.cxx revision 9444
Diff to previous 9437
-merge work from branches/b-repro-enh-20120205

-up repro version number 0.9
-added new Settings page to repro web interface to show current command line / files settings in use
 - will also display some some low level stack info and congestion stats (if enabled)
-added new config setting StatisticsLogInterval to specify how often statistics are dumped to 
 the log files
-cleaned up the WebAdmin constructor to take a Proxy object
-added new KeyValueStore class for highly efficient generic storage
 - keys are simple integer indexes into a vector and must be allocated 
   before they are used
 - currently supports storage and retrieval of the following types:
   Data, bool, short, unsigned short, int, unsigned int, and UInt64
-Converted ConfigParse storage from std::multimap to HashMultiMap
-removed print in TcpConnection that could end up printing garbage at the end of 
 messages that are not null terminated
-added KeyValueStore to three strategic locations in repro, allowing custom Processors 
 (Monkeys, Lemurs and Baboons) to store state scoped as follows:
     -Global Proxy Scope - Proxy::getKeyValueStore
     -Request Scope - RequestContext::getKeyValueStore
     -Target Scope - Target::getKeyValueStore
 Before this storage can be used you must statically allocate a storage key.
 See mFromTrustedNodeKey use in the IsTrustedNode class for an example.
-major changes to how repro is started up, to allow easier additions of
 custom startup logic, such as adding custom Processors (Monkeys, Lemurs and 
 Baboons) to the default Processor chains
  - almost all logic that was in repro.cxx has been moved out to a new class
    (ReproRunner), and split into smaller virtual methods that can be overridden
  - see comments at the top of repro.cxx for an example of how to add custom
    processors
-added option to enable some basic P-Asserted-Identity header handling
 - After auth is successful 
   - if P-Perferred-Identity header is present remove it
   - if no P-Asserted-Identity header is present, then add one
 - Removal of P-Asserted-Identity if Privacy header is set to "id"
   Note: Since we have no better mechanism to determine if destination is 
         trusted or not we assume that all destinations outside our domain 
         are not-trusted and will remove the P-Asserted-Identity header
-modified how ;lr param on routes are processed - moved logic from StaticRoute 
 to ResponseContext - this slightly changes the behaviour
 - previous implementation used to stop the processing chain as soon
   as the first matching route with a ;lr is found, new implementation
   does not stop Target processing if a ;lr is present
 - Multiple targets can now have a ;lr on them and be processed
   properly.  The ;lr parameter is now examined in 
   ResponseContext::beginClientTransaction, and if present the RequestUri
   is not altered and a Route header is added instead
-fixed a duplicate removeContact call in OutboundTargetHandler (a merge conflict
 victim)
-avoid unnecessary iteration through target list in StaticRoute when try to determine
 if auth is required
-added two new constructors to QValueTarget to make is easier to form targets from 
 a NameAddr or Uri only
-removed some unused code in ResponseContext:  addOutboundBatch and mOutboundMap
-renamed Target::targetPtrCompare to Target::priorityMetricCompare to be more descriptive
-implement proper q-value processing of contacts in a redirect response

-fix for a long standing issue in repro that started in rev6794, where
 repro can be over protective and issue 403 responses for legitimate 
 mid-dialog requests.  The issue occurs when a repro domain user forms
 a dialog with a user in another external domain.  Any mid-dialog
 requests coming from the external domain would get 403'd.  This 
 was due to the logic in the AmIResponsible monkey, and the fact that 
 such requests have the repro endpoints contact address in the 
 RequestUri (typically the endpoints IP address), so not belonging
 to repro's domain, and the From user is not being from repro's domain.

 The original code to only do these checks for out of dialog requests
 was reintroduced with the following comments:

         // only perform relay check for out-of-dialog requests
         // !bwc! Um, then all anyone has to do to get us to be their relay
         //       is throw in a spurious to-tag...
         //       This smells funny. I am commenting it out.
         // .slg. Putting code back in and clarifying the funny smell.....
         //       We only want to do this check for out of dialog requests, since 
         //       mid-dialog requests could be 403'd otherwise.  Consider
         //       an INVITE request from a repro domain user to a user in 
         //       another domain.  The resulting ACK/200, BYE or any other
         //       mid-dialog request coming from the remote domain, will contain
         //       the repro users contact address in the RequestUri and a 
         //       foreign domain in the from header.  We want to ensure these
         //       requests are not 403'd.  Byron's comment about an endpoint getting
         //       us to relay by placing a spurious to tag in the request still 
         //       stands. Perhaps we ought to be checking the To header domain in 
         //       this case - however that is also weak, since the To header is not
         //       used in routing and easily be set to a URI in our domain to trick
         //       repro into forwarding.  Note:  From header domain checking is
         //       stronger than To header domain checking, since if the domain is 
         //       ours, then it must pass Digest Authentication (at least for non 
         //       ACK and BYE requests).

-add ability for a repro admin to add manual / permanent registrations - such
 manually added registrations are persisted to the database, and loaded at startup
 - Manual registrations can be added on the Registration Web Page
-add display of registered contact's QValue on registrations web page
-added ability to specify a Path on new static registration feature
-cleanup some old hacks now that we have the ability to manually add registrations
  - ParallelForkStaticRoutes no longer combines StaticRoutes Targets and LocationServer
    Targets
  - Static Routes are no longer added as QValueTargets, they are now added as simple Targets.
    So they are no longer susceptible to the various QValue Settings - ie. QValueMsBeforeCancel.
  - Added new ContinueProcessingAfterRoutesFound setting:
    By default (false) we will stop looking for more Targets if we have found
    matching routes.  Setting this value to true will allow the LocationServer Monkey
    to run after StaticRoutes have been found.  In this case the matching
    StaticRoutes become fallback targets, processed only after all location server 
    Targets fail.

-added new Helper method:  Tuple getClientPublicAddress(const SipMessage& request)
  - look at Via headers, and finds the first public IP address closest to the sending
    client.
-added loopback address checking to Tuple::isPrivateAddress
-modified ServerRegistration:
 - Ensure that ContactInstanceRecord::mReceivedFrom is always populated - not just 
   in outbound use cases - added a new flag to indicate when flow routing is required
 - Added a new mPublicAddress flag member to ContactInstanceRecord - this will assist
   with an upcoming feature to do geo proximity routing
-added new ContactInstanceRecord::mPublicAddress to regsync process
-removed a chatty log line in DialogSetId
-used Symbols::COMMA in a few spots it wasn't being used in
-removed unimplemented targetCount method on ResponseContext
-renamed Helper::isSenderBehindNAT to isClientBehindNAT for consistency
-ensure we only skip the Monkey chain in StaticRoute if we actual found routes
-added missing license block to ForkControlMessage
-adding new Baboon:  GeoProximityTargetSorter
 If enabled, then this baboon can post-process the target list.  
 This includes targets from the StaticRoute monkey and/or targets
 from the LocationServer monkey.  Requests that meet the filter 
 criteria will have their Target list, flatened (serialized) and
 ordered based on the proximity of the target to the client sending
 the request.  Proximity is determined by looking for a 
 x-repro-geolocation="<latitude>,<longitude>" parameter on the Contact
 header of a received request, or the Contact headers of Registration
 requests.  If this parameter is not found, then this processor will
 attempt to determine the public IP address closest to the client or
 target and use the MaxMind Geo IP library to lookup the geo location.
-requires floating point support for geo proximity calculations
-resip TCP transports can crash repro on uncaught exception - if garbage is received
 on the socket, and there is no Content-Length header, then SipMessage::Exception can
 throw, and it was not caught with the existing ParseException catch handler.  Changed
 to catch BaseException instead.
-removed unsafe logging statement in DumTimeout - if DUM and stack are in different threads, then
 crash could occur
-enable Inserter functionality for collections that store pointers
 to items.  Use InsertP instead of Inserter for such collections.
 For example:  
 std::vector<std::string*> v;
 ... populate vector ...
 std::cout << InserterP(v) << std::endl;
-statictize strings in Inserter/InserterP
-add InserterP test cases to rutil/test/testInserter.cxx
-cleaned up Processor and ProcessorChain classes
 - added mName property in anticipation of a future capability to define processor 
   chains in the configuration file
 - simplified operator<< for processors, to use Name
-modified some Inserter uses to use new InserterP function
-allow custom repro implementations to add themselves to the RegistrarHandler so that
 registration messages can be processed and reacted to
-added a singleResultQuery API to MySqlDb
-series of interfaces to make is easier to implement new Asynchronous Monkey's / Processors that utilize a common thread pool
-removed getTransactionId from ForkControlMessage - method exists on base class, so it's not needed
-removed getTransactionId and tid() from UserInfoMessage - getTransactionId method exists on base class, so they are not needed
-made Worker and abstract base class
-modified ConfigParser to throw a resip style exception when failing to open configuration file
-minor cleanups to ConfigParser configuration file parsing routine

-added new RequestFilter monkey
 - allows user to configure conditions under which an inbound request should be rejected or not
 - allows two regular expression conditions that can be applied to any SIP message header:
   this includes the request-line, standard SIP headers and custom SIP headers.  If a header
   that can appear multiple time is specified, then each instance of the header is checked.
 - When conditions are met, allows the action carried out to be defined:
   - Accept - accepts this request and stops further processing in Request Filter monkey 
   - Reject - rejects this request with the provided SIP status code and reason text
   - SQL query - only available when MySQL support is compiled in - runs an arbitrary stored
     procedure or query, using replacement strings from the 2 condition regular expressions
     - query must return an empty string or "0" to instruct repro to Accept the request, or a 
       string containing "<SIP Reject Status Code>[, <SIP Reject Reason>]" to Reject the request
     - using the repro configuration file the SQL Query can be configured to operate on a
       completely different my SQL instance/server than the repro configuration
   - Filters are defined in the HTTP web interface via new Add Filter, Edit Filter and Show
     Filters web pages.  There is an ability to test the condition regular expressions from 
     the web page as well.
   - other Monkey settings are configured in the repro configuration file or via command line:
     DisableRequestFilterProcessor, RequestFilterDefaultNoMatchBehavior, 
     RequestFilterDefaultDBErrorBehavior, RequestFilterMySQLServer (and other mySQL related settings) 
   - can be used to implement a User Blocking functionality - ie. calls and instant messages 
     from user X to user Y should always be blocked, because user X is in user Y's block list
   - introduced new FilterStore configuration database table to store the Filters configured
     on the web pages

-added AsyncProcessorDispatcher / thread pool to repro that be shared by all AsyncProcessors
 - currently only used by new RequestFilter monkey
-cleaned up some implementation in AbstractDb to remove some code duplication
-catch config file parse, and missing file errors (exceptions) at repro startup
-RouteStore 
  - stop webpage from being able to add two routes with the same Key
  - optimized data fetch for displaying routes on web page
-Repro Web Interface
 - added new Add Filter, Edit Filter and Show Filters pages
 - made use of HTML tables consistent across all pages
 - made table backgrounds white to improved appearance
 - added title to right hand side pane
 - cleaned up formatting on many pages
 - ordered methods in source to match ordering on web page 
 - added warning to Domains page, that repro must be restarted

-added version information to startup logs and to display on web interface
-added bottom footer on web interface with link to www.resiprocate.org
-added new RequestFilter files to all Visual Studio projects and linux Makefile
-upped repro version to 0.9

-fix a bug in repro web interface, where fragmented HTTP messages were not being handled correctly
-fixed possible assert if a transport error is seen after trying to send an ACK message

-added optional MessageSilo support to repro
 - stores IM's (ie. SIP MESSAGE requests) for offline users
 - replays messages to users when they register (ie. come back online)
 - records are persisted to a database table, so they survive shutdowns
 - configurable filters exist for DestUri, MimeType, MessageBody size

-moved CommandServer from repro to reprolib
-added restart command to reprocmd - allows restarting repro to apply configuration changes while leaving 
 the in memory registration database in tact
-propagate db insert/update failures to callers - web interface now shows errors if record fails to update in db
-remove unused AbstractDb API's: writeRoute and writeFilter
-added ability for tables to have non-unique keys (ie. duplicate records)
-modified WorkerThread to support work that does not require a response to be queued back to the stack
-added database transaction support to BerekelyDb and MySQL implementations
-reorganized repro runner startup ordering so that DUM TU is started before Proxy and added new 
 virtual createDatastore method - in order to facility new Silo Monkey startup that requires access to 
 the Registrar object
-make RequestFilter monkey options - use config flag
-allow a DateCategory to be created from time_t

-build fixes for linux, add --with-geoip option to autotools configure
-added --with-popt to configure so that test projects can be build easily with popt support
-added autodetection of epoll support on unix and automatic addition of HAVE_EPOLL define

-added ability for repro to report a 404 error when attempting to reach a user that does not exist
 - previously repro would always send a 480 response when attempting to reach an AOR that wasn't
   registered
-removed unused SipStack parameter to DigestAuthenticator monkey

-allow reprocmd to run defaulting to 127.0.0.1:5081 for server connection

-added secondary database support to BerkeleyDb - allows tables with a secondary index
 - my sql implementation of AVPs with two indexes was added as well
-message silo records can now be deleted by referencing a unique key (ie. timestamp+tid)
 - transaction support is no longer required
-optimized data copies when reading records from BerkeleyDb
-increase MySQL AVP table size for value field from 1024 to 4096
-implemented logic to periodically cleanup Silo records that have expired


Revision 9437 - (view) (download) (annotate) - [select for diffs]
Modified Sat Mar 17 18:59:42 2012 UTC (7 years, 7 months ago) by sgodin
Original Path: branches/b-repro-enh-20120205/repro/ReproRunner.cxx
File length: 40968 byte(s)
Diff to previous 9427
-adding new Baboon:  GeoProximityTargetSorter
 If enabled, then this baboon can post-process the target list.  
 This includes targets from the StaticRoute monkey and/or targets
 from the LocationServer monkey.  Requests that meet the filter 
 criteria will have their Target list, flatened (serialized) and
 ordered based on the proximity of the target to the client sending
 the request.  Proximity is determined by looking for a 
 x-repro-geolocation="<latitude>,<longitude>" parameter on the Contact
 header of a received request, or the Contact headers of Registration
 requests.  If this parameter is not found, then this processor will
 attempt to determine the public IP address closest to the client or
 target and use the MaxMind Geo IP library to lookup the geo location.
-requires floating point support for geo proximity calculations


Revision 9427 - (view) (download) (annotate) - [select for diffs]
Modified Thu Mar 8 19:57:55 2012 UTC (7 years, 8 months ago) by sgodin
Original Path: branches/b-repro-enh-20120205/repro/ReproRunner.cxx
File length: 40694 byte(s)
Diff to previous 9426
-added ability to specify a Path on new static registration feature
-added new StaticRegStore to Makefile and other VS project files

Revision 9426 - (view) (download) (annotate) - [select for diffs]
Modified Thu Mar 8 18:23:46 2012 UTC (7 years, 8 months ago) by sgodin
Original Path: branches/b-repro-enh-20120205/repro/ReproRunner.cxx
File length: 40640 byte(s)
Diff to previous 9424
-add ability for a repro admin to add manual / permanent registrations - such
 manually added registrations are persisted to the database, and loaded at startup
 - Manual registrations can be added on the Registration Web Page
-add display of registered contact's QValue on registrations web page


Revision 9424 - (view) (download) (annotate) - [select for diffs]
Modified Sat Mar 3 15:13:10 2012 UTC (7 years, 8 months ago) by sgodin
Original Path: branches/b-repro-enh-20120205/repro/ReproRunner.cxx
File length: 39270 byte(s)
Diff to previous 9417
-modified some formatting in repro.config, added better commenting
 and selected some better default settings

Revision 9417 - (view) (download) (annotate) - [select for diffs]
Modified Sat Feb 25 19:25:38 2012 UTC (7 years, 8 months ago) by sgodin
Original Path: branches/b-repro-enh-20120205/repro/ReproRunner.cxx
File length: 39271 byte(s)
Diff to previous 9412
-fix for builds without SSL

Revision 9412 - (view) (download) (annotate) - [select for diffs]
Added Sat Feb 25 17:43:52 2012 UTC (7 years, 8 months ago) by sgodin
Original Path: branches/b-repro-enh-20120205/repro/ReproRunner.cxx
File length: 39241 byte(s)
-removed print in TcpConnection that could end up printing garbage at the end of messages that are not null terminated


This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.

  Diffs between and
  Type of Diff should be a

webmaster AT resiprocate DOT org
ViewVC Help
Powered by ViewVC 1.1.27