/[resiprocate]/main/resip/stack/TcpBaseTransport.cxx
ViewVC logotype

Log of /main/resip/stack/TcpBaseTransport.cxx

Parent Directory Parent Directory | Revision Log Revision Log


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

Revision 11235 - (view) (download) (annotate) - [select for diffs]
Modified Mon Sep 15 17:20:11 2014 UTC (5 years, 1 month ago) by dpocock
File length: 15337 byte(s)
Diff to previous 11225
resip/stack: TcpBaseTransport: generalize support for SO_NOSIGPIPE

Revision 11225 - (view) (download) (annotate) - [select for diffs]
Modified Fri Sep 5 20:21:59 2014 UTC (5 years, 2 months ago) by dpocock
File length: 15362 byte(s)
Diff to previous 11154
resip/stack: TcpBaseTransport: iOS: try to suppress SIGPIPE on outgoing connections

Revision 11154 - (view) (download) (annotate) - [select for diffs]
Modified Wed Apr 23 17:42:47 2014 UTC (5 years, 6 months ago) by dpetrie
File length: 15035 byte(s)
Diff to previous 10976
Set and preserve netns context as needed in stack.
Currently only tested for TCP.


Revision 10976 - (view) (download) (annotate) - [select for diffs]
Modified Mon Feb 17 17:29:19 2014 UTC (5 years, 8 months ago) by sgodin
File length: 14611 byte(s)
Diff to previous 10975
-adding Poll(WSAPoll) implementation for Event loop in resip - allows Windows to support 1000's of TCP connections
 instead of only ~60 (FD_SETSIZE).  
 -not backwards compatible with old/deprecated buildFdSet, processFdSet - must use FdPollGrp::waitAndProcess
  (EventStackThread)
-includes workaround for well known WSAPoll defect that Microsoft won't fix (see TcpBaseTransport.cxx)
-optimized windows specific SelectInterruptor implementation - don't bother sending to wakeup socket if
 data is already present - avoids waking up the process loop unnecessarily when multiple events are handled
 in a single waitAndProcess call 


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: 13255 byte(s)
Diff to previous 10968
-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 10968 - (view) (download) (annotate) - [select for diffs]
Modified Fri Feb 14 20:53:24 2014 UTC (5 years, 8 months ago) by sgodin
File length: 13334 byte(s)
Diff to previous 10794
-fix RegSyncClient so that it detects breaks in the socket connection to the server - by using keepalives
 -if we try to send on the socket periodically then we will detect connection errors
-made EGAIN and EWOULDBLOCK processing the same in a few additional spots 
-add WinLeakCheck header to some new Websocket class files to aid in leak detection on windows


Revision 10794 - (view) (download) (annotate) - [select for diffs]
Modified Tue Dec 31 01:04:54 2013 UTC (5 years, 10 months ago) by Dpocock
File length: 12917 byte(s)
Diff to previous 10716
resip: add support for more aggressive garbage collection, MinimumGcHeadroom

Revision 10716 - (view) (download) (annotate) - [select for diffs]
Modified Fri Dec 6 12:34:05 2013 UTC (5 years, 11 months ago) by dpocock
File length: 12848 byte(s)
Diff to previous 10715
resip/stack: TcpBaseTransport: safety check when using mTuple.length()

Revision 10715 - (view) (download) (annotate) - [select for diffs]
Modified Thu Dec 5 19:48:51 2013 UTC (5 years, 11 months ago) by sgodin
File length: 12793 byte(s)
Diff to previous 10714
-send correct size to bind fn

Revision 10714 - (view) (download) (annotate) - [select for diffs]
Modified Thu Dec 5 19:31:12 2013 UTC (5 years, 11 months ago) by dpocock
File length: 12801 byte(s)
Diff to previous 10711
resip/stack: TcpBaseTransport: use RESIP_MAX_SOCKADDR_SIZE when dealing with sockaddr

Revision 10711 - (view) (download) (annotate) - [select for diffs]
Modified Wed Dec 4 15:00:09 2013 UTC (5 years, 11 months ago) by dpocock
File length: 12797 byte(s)
Diff to previous 9485
resip/stack: TcpBaseTransport: ensure outgoing TCP-based connections originate from configured interface address

Revision 9485 - (view) (download) (annotate) - [select for diffs]
Modified Sat Apr 7 00:34:03 2012 UTC (7 years, 7 months ago) by dpocock
File length: 12429 byte(s)
Diff to previous 9367
Switch over to autotools build system from dpocock-autotools branch

Revision 9367 - (view) (download) (annotate) - [select for diffs]
Modified Wed Feb 1 16:12:20 2012 UTC (7 years, 9 months ago) by sgodin
File length: 12443 byte(s)
Diff to previous 9005
-merge work from resip-b-TKLC-perf_work branch

Merge Notes:

Various optimizations of Data
=============================

Made Data smaller, without sacrificing functionality. Data is 20 (56 vs 36) 
bytes smaller on 64-bit libs, and 4 (36 vs 32) bytes smaller on 32-bit libs. 
This was accomplished by making mSize, mCapacity, and mShareEnum 4-bytes on 
64-bit platforms (mShareEnum could be one byte, but it turns out this imposes a 
detectable performance penalty), and by having mShareEnum do double-duty as a 
null-terminator for mPreBuffer (Borrow==0), instead of requiring an extra byte 
at the end of mPreBuffer.

Several very simple functions have been inlined.

Functionality enhancements to a couple of functions:

- Data::md5() has been changed to Data::md5(Data::EncodingType type=HEX); this 
allows the output of md5() to be encoded as hex or Base64, or not encoded at all 
(binary).

- Data::replace(const Data& match, const Data& target) has been updated to 
Data::replace(const Data& match, const Data& target, int max=INT_MAX); this 
allows the maximum number of replacements to be specified.

Lastly, a few specialized hashing and comparison functions have been added:

- Data::caseInsensitiveTokenHash(); this is a case-insensitive hash that assumes 
that the Data is an RFC 3261 token (eg; branch params). This character set has 
the property that no character is equal to any other character when bit 6 is 
masked out, except for the alphabetical characters. (For alphabetical 
characters, bit 6 specifies whether the character is upper/lower case) This 
means that we can mask out bit 6, and then use a case-sensitive hash algorithm 
on the resulting characters, without hurting the collision properties of the 
hash, and get a case-insensitive hash as a result. This hash function is based 
on the Hsieh hash.

- bool Data::caseInsensitiveTokenCompare(const Data& rhs); this is an equality 
comparison that assumes that both Datas are RFC 3261 tokens (eg; branch 
parameters). This function takes advantage of the same properties of the RFC 
3261 token character set as caseInsensitiveTokenHash(), by using a bitmask 
instead of a true lowercase() operation. This ends up being faster than 
strncasecmp().

- Data& schemeLowercase(); this is a variant of lowercase() that assumes the 
Data is an RFC 3261 scheme. This character set has the property that setting bit 
6 is a no-op, except for alphabetical characters (0-9, '+', '-', and '.' all 
already have bit 6 set). Setting bit 6 on a alphabetical character is equivalent 
to lower-casing the character. Note: There is no corresponding schemeUppercase() 
function, because clearing bit 6 will convert 0-9, '+', '-', and '.' into 
unprintable characters (well, '-' is turned into a CR, but you get the point).



Performance improvements to ParseBuffer
=======================================

- Most functions that returned a Pointer now return a much more lightweight
   CurrentPosition object.
- Allow some of the simpler functions to be inlined
- Integer parsing code is more efficient, and overflow detection is better


Performance enhancements to DnsUtil
===================================

- DnsUtil::inet_ntop(): For some reason, the stock system inet_ntop 
  is dreadfully inefficient on OS X. A dirt-simple hand-rolled 
  implementation was 5-6 times as fast. This is shocking. The Linux 
  implementation is plenty efficient, though, so we're using 
  preprocessor to activate the hand-rolled code.

- DnsUtil::isIpV4Address(): The implementation uses 
  sscanf(), which is pretty expensive. Hand-rolled some code that 
  is much faster.


Reduced the memory footprint associated with storing URIs
=========================================================
- Removed the AOR cacheing stuff from Uri; it was horrifically inefficient. Checking
  for staleness of the cache was nearly as expensive as regenerating the AOR from 
  scratch. Not to mention that the AOR cacheing stuff took up a whopping 148 bytes
  of space on 64-bit platforms (4 Datas, and an int).

- Reworked the host canonicalization cache to take up less space, and be faster.
  Previously, the canonicalized host was put in a separate Data. We now canonicalize
  in-place, and use a bool to denote whether canonicalization has been performed yet.
  This saves us 32 bytes.

- Changed Data Uri::mEmbeddedHeadersText to an auto_ptr<>, since in most cases Uris don't
  use it. Also use auto_ptr for mEmbeddedHeaders (was already a pointer, for consistency).


Change how branch parameters are encoded.
=========================================

Old format: z9hG4bK-d8754z-<branch>-<transportseq>-<clientData>-<sigcompCompartment>-d8754z-

New Format: z9hG4bK-524287-<transportseq>-<clientData>-<sigcompComprtment>-<branch>

This format encodes faster, parses faster (with _much_ simpler code), and takes up
less space on the wire. We may decide to tweak the new resip cookie; I chose 
something that we can use memcmp instead of strncasecmp with, but the token character
set has a bunch of characters that aren't alphanumeric we could use.

Also, some other small optimizations; avoid copies associated with calling
Data::base64encode()/base64decode() on empty Datas, and reorder the SIP cookie
comparisons to be more efficient.


State shedding modifications to TransactionState
================================================
In a number of cases, we were preserving state (in the form of SipMessages
and DnsResults) in cases where we did not really need them any more. For
example, once we have transmitted a response, there is no need
to preserve the full SipMessage for this response (the raw retransmit buffer
is sufficient). Also, INVITE requests do not need to be maintained once
a final response comes in (since there is no possibility that we'll need to
send a simulated 408 or 503 to the TU, nor will we need to construct a CANCEL
request using the INVITE, nor will we need to retransmit). Similarly, once we
have received a final response for a NIT transaction, we no longer need to
maintain the original request or the retransmit buffer. Lastly, if we are
using a reliable transport, we do not need to maintain retransmit buffers
(although we may need to maintain full original requests for simulated
responses and such).

This change has basically no impact on reliable NIT performance, but a huge
impact on non-reliable and INVITE performance. Prior to this change, either
NIT UDP or INVITE TCP testStack would exhaust main memory on my laptop (with
4GB of main memory), bringing progress to a complete halt on runs longer than
15 seconds or so. I did not bother trying INVITE UDP, but that works now too.


Reduction in buffer reallocations while encoding a SipMessage
=============================================================
TransportSelector now keeps a moving average of the outgoing message size,
which is used to preallocate the buffers into which SipMessages are encoded.

This ends up making a small difference in testStack when linked against google
malloc, but a larger difference when linked against OS X's (horrible) standard
malloc.


Multiple Threads in the Stack
=============================
Allow transaction processing, transport processing, and DNS processing to be 
broken off into separate threads.

- SipStack::run() causes the creation and run of three threads; a 
TransactionControllerThread, and TransportSelectorThread, and a DnsThread. You 
continue to use stuff like StackThread and EventStackThread to give cycles to 
the rest of the stack (mainly processing app timers and statistics logging); the 
SipStack is smart enough to unhook these three things from the normal event loop 
API when they have their own threads. In other words, to use the new 
multi-threaded mode, all you have to do is throw in a call to SipStack::run() 
before you fire up your normal SipStack processing, and a 
SipStack::shutdownAndJoinThreads() when you're done.

- In the Connection read/write code, process reads/writes until EAGAIN, or we 
run out of stuff to send. Gives a healthy performance boost on connection-based 
transports.

- In TransactionController, put transaction timers in their own fifo. This 
prevents timers from firing late when the state machine fifo gets congested. 
Also, process at most 16 TransactionMessages from the state machine fifo at a 
time, to prevent starving other parts of the system.

- Unhook the TransactionController's processing loop from that of the 
TransportSelector. This simplifies this API considerably, but required the 
addition of a new feature to Fifo. Fifo can now take an (optional) 
AsyncProcessHandler* that will be notified when the fifo goes from empty to 
non-empty. Actually pretty useful.

- Allow setPollGrp() to be called multiple times on the various classes that 
have this function. This allows the FdPollGrp to be re-set when the SipStack 
enters multithreaded mode.

- Added a "multithreadedstack" --thread-type option to testStack. Exercise this 
option in testStackStd.sh

- Added the ability to run any of the existing Transport objects in their own 
thread, by a combination of a new transport flag 
(RESIP_TRANSPORT_FLAG_OWNTHREAD), and a new TransportThread class. Added support 
for this mode to testStack using the --tf option. Also exercised this feature in 
testStackStd.sh.

- Installed SelectInterruptors at the TransportSelector, each Transport object, 
and the DnsStub (this last one required moving SelectInterruptor to rutil). This 
is critical to making multithreaded mode work in a performant manner, and 
imposes almost no performance penalty due to the way they are invoked.

- SipStack now creates its own SelectInterruptor if one is not supplied 
externally. This is because it is critical to be able to wake the 
TransactionController up when new work comes down from the TU, or from the 
transports.


New congestion-management framework
===================================
Notable features include:
* Allow testStack, tfm/repro/sanityTests, and repro to be run with a congestion 
   manager with the --use-congestion-manager flag.

* Efficient wait-time estimation in AbstractFifo; keeps track of how rapidly
   messages are consumed, allowing good estimates of how long a new message will
   take to be serviced. More efficient than the time-depth logic in 
   TimeLimitFifo, and a better predictor too.

* The ability to shed load at the transport level when the TransactionController
   is congested, in a very efficient manner, using new functionality in Helper
   and SipMessage (Helper::makeRawResponse() and 
   SipMessage::encodeSingleHeader())

* The ability to shed load coming from the TU when the TransactionController is 
   congested. This is crucial when congestion is being caused by a TU trying to 
   do too much.

* Changed the way load-shedding is handled for TransactionUsers to use the new
   API

* A flexible congestion-management API, allowing load-shedding decisions to be
   made in an arbitrary fashion.

* A generalized CongestionManager implementation that is powerful enough to be
   useful.

* The TransactionController will now defer retransmissions of requests if 
   sufficiently congested (ie; the response is probably stuck in mStateMacFifo)

* The TransactionController now determines its hostname with a single call to 
   DnsUtil::getLocalHostName() on construction, for use in 503s. Previously, it 
   would make this call every time a 503 was sent; this call blocks sometimes!

* Don't call DnsResult::blacklistLast() on a Retry-After: 0

* Several fixes the the processing loop in testStack that were causing 
   starvation of one type of work or another when congestion occurred.


Other Misc Enhancements
=======================
-Small efficiency improvement in Random::getCryptoRandom(int)
 Random::getCryptoRandom(unsigned int len) was implemented by calling 
 Random::getCryptoRandom() repeatedly, and collecting the return values 
 in a buffer. In the openssl case, we now use a single call to RAND_bytes().
-Use a priority_queue instead of a multiset for storing timers.
-Slight refactoring of Timer so that transaction timers and payload timers (ie; 
 timers that carry a Message*) are separate classes. Transaction timers no longer 
 have an unused Message* member, and payload timers no longer have the unused 
 transaction-id, Timer::Type, and duration. This saves a _lot_ of memory for apps 
 that use lots of app timers with long lifetimes.
-Less wasteful population of Call-IDs: 
 When generating Call-IDs, Helper was computing an md5 hash of the hostname and 
 some salt, hex-encoding it, and then Base64 encoding the hex data. We now Base64 
 encode the md5 hash directly. This is less computationally expensive, requires 
 less memory because the resulting string is half the size, and requires fewer 
 bytes on the wire.
-Make TransactionMap case-insensitive; Data::caseInsensitiveTokenHash() is fast
 enough that performance actually increases a little.
-std::bitset-based parsing in a number of places.
-Don't check whether the encoding tables are initted for every single
 character; check once before the encode operation begins. Also, checking
 the value of a static bool to determine whether an init has been carried
 out is pointless; that bool might not be initted yet, and it could have
 any value. The static init code now copes with both accesses to the encoding
 tables during static initialization, and from multiple threads during runtime.
-Don't bother generating a transaction identifier unless the parse fails
 to extract one.
-Some refactoring of the FdPollGrp stuff. Now is compatible with cares, using
 a bit of a hack. Also compatible with being driven with the old buildFdSet()/
 select()/process(FdSet&) call sequence, although this is now deprecated.
 Fixing these compatibility problems allowed us to switch over to using FdPollGrp
 in all cases, instead of having dual mode everywhere.
-Buffer classes for Fifo to reduce lock contention. Using them in a few places, will
 use them in more once we phase out TimeLimitFifo with the new congestion management
 code.
-Use the --ignore-case option for generation of ParameterHash.cxx, instead of the
 nasty sed rewriting we are using now. Should also be slightly faster, since gperf
 handles case-insensitive hashing more efficiently than our hack was.
-Adding a local memory pool to SipMessage, to cut down (dramatically) on
 heap allocation overhead. Some minor refactoring to free up wasted space
 in SipMessage as well (makes more room for the pool). Changing the way
 the start-line is stored to no longer use a full-blown ParserContainer+
 HeaderFieldValueList. Lots of opportunistic doxygen merging.
 Up to 20K NIT transactions per second on my machine, roughly a doubling
 in performance.


Bug Fixes
=========
-Use getaddrinfo() instead of the non-threadsafe gethostbyname().
-Remove unused (and non-threadsafe) Timer::mTimerCount/Timer::mId.
 Previously, all timers were assigned a "unique" (not really, more on that in a 
 moment) integer identifier. There is no place in the resip codebase that 
 actually uses this identifier in any way. For transaction timers, this 
 identifier is in principle unnecessary, since there is more than sufficient 
 identifier information present already (the transaction id and timer type). When 
 passing a Message* into the timer queue, a unique identifier already exists; the 
 Message* itself (if potential use of this Message* bugs you, you can always turn 
 it into a handle by applying some sort of transformation to it). This identifier 
 is unnecessary in every case I can think of. In addition, the values are 
 assigned simply by incrementing a global variable (Timer::mTimerCount), with no 
 threadsafety measures whatsoever, so it is not even guaranteed to be unique. 
 Because of all this, it has been removed. As a bonus, this saves some memory; 8 
 bytes per timer on 64-bit platforms, which adds up to around 3MB when testStack 
 steady state has close to 400000 timers in the timer queues at any given point. 
 This could be an even larger amount for TUs that schedule lots of long-lifetime 
 timers (Timer C, for instance).
-Get rid of a wasteful double-encode, in Message.cxx
-minor windows build fixes to avoid file in use errors when building dum test projects
-fix testDigestAuthentiation for recent lowercase nonce change
-fixed a nasty bug in NameAddr - where unknown parameters uri parameters on a 
 NameAddr/Uri with no angle brackets are treated as NameAddr parameters.  When this is
 done, the memory for these parameters was only a temporary Data object.
-fix bug in Data.  If Data is wrapping memory allocated externally (ie. Share mode = BORROW)
 and you start appending to it.  It is possible that the append method will write a NULL
 character off the end of the buffer.  Changed the resize condition to make the buffer
 larger 1 character sooner, to accommodate for this.

Revision 9005 - (view) (download) (annotate) - [select for diffs]
Modified Sun Feb 6 23:09:23 2011 UTC (8 years, 9 months ago) by sgodin
File length: 11718 byte(s)
Diff to previous 8952
-repro fix - don't added Supported: Path header if already present
-repro fix - look for outbound parameter in correct location (p_ob) 
  - it is a URI parameter, not a NameAddr parameter 
  - was causing incorrect 439 "first hop doesn't support outbound" errors
-Dum Keepalive Manager - improvements for TCP/TLS
  - We now track unique Network Associations per transport transport type, transport family, 
    target ip addr, target port, and source/transport flow key
    This means that if we have two different TCP connections to the same destination, 
    each originating from a different NIC, then we will send keepalives on each separately.
    For UDP, this is not currently the case, when the transport is bound to any interface
    (ie. 0.0.0.0), as the flow key will be same regardless of the source interface used to
    send the UDP message - fixing this for UDP remains an outstanding item.
-modified stack to return a 430 to the TU if connection is not found and onlyUseExistingConnection 
 is true

Revision 8952 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jan 6 19:57:50 2011 UTC (8 years, 10 months ago) by kwhite
File length: 11568 byte(s)
Diff to previous 8950
Augment Transport&Connection failure reporting

* Add new reason codes to TransportFailure and add new field mFailureSubCode.
* Extend Connect and Transport classes to declare more detailed errors
* when failing a transaction.  Errno is provided as the failureSubCode.
* TransactionState adds this more detailed error info to the Warning
* header. Currently justed added as numeric text -- this could be
  cannonicalize for specific error codes if needed.
* White space fixes.

Revision 8950 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jan 6 19:57:13 2011 UTC (8 years, 10 months ago) by kwhite
File length: 11082 byte(s)
Diff to previous 8949
doc & whitespace cleanup

fix typos in comments

Revision 8949 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jan 6 19:56:44 2011 UTC (8 years, 10 months ago) by kwhite
File length: 11511 byte(s)
Diff to previous 8948
Change FdPoll to use Handle interface

* Prep for libevent support
* Change EventStackThread to use Handle interface
* Use Handle interface of FdPoll (UDP&TCP)
* Modify EventStackThread to support multiple stacks
* Improve testStack to use EventStackThread

Revision 8948 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jan 6 19:56:20 2011 UTC (8 years, 10 months ago) by kwhite
File length: 11387 byte(s)
Diff to previous 8942
Optimize UdpTransport socket-io

- Add options for TXNOW, TXALL, RXALL and KEEP_BUFFER
- Remove 'justPosted' argument of checkTransmitQueue() everywhere
- Propagate transportFlags to UDP
- Add more options to testStack app to help optimize performance

Revision 8942 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jan 6 19:54:44 2011 UTC (8 years, 10 months ago) by kwhite
File length: 11402 byte(s)
Diff to previous 8929
Stack transmit queue optimization and synchronous connects

Summary:
* Handle messages posted to Transport fifo queue immediately
  (synchronous) rather than waiting for polling loop.
* Start new connections in TcpBaseTransport immediately (synchronous)
  when transmit message needs new connection.
* Net effect is to eliminate O(N) polling traversal thru all Transports.

Details
- Change TcpBaseTransport to immediately create new outgoing connections
  when posted to transmit fifo (uses checkTransmitQueue()). Avoids
  waiting for later process() call (which doesn't happen with epoll).
- Eliminate obsolete processTransmitQueue().
  Obsoleted by immedately reading transmit queue via
  checkTransmitQueue() method instead of waiting for poll.
- Refactor code from TcpBaseTransport::processAllWriteRequests() that
  creates, binds and connects socket into helper method makeOutgoingConnection()
- Move query to hasDataToSend() that drives select's timeout
  from TransactionController into TransportSelector. This avoids
  TransactionController needed to know about the polling mode.
- For epoll mode, don't iterate thru all Transports check transmit
  queue since now job of each Transport to arrange for its own callback.
- Eliminate processTransmitQueue() everywhere. Was only used in epoll
  mode, and replaced by immediately handling transmit data when queued.
  (Requesting writable-callback for socket)
- Move mPollGrp member down into InternalTransport
- Don't process transmit queue immediately when non-epoll
- Add justPosted argument to checkTransportQueue() of Transports,
  and then removed since not helpful.

Revision 8929 - (view) (download) (annotate) - [select for diffs]
Modified Tue Dec 28 20:11:33 2010 UTC (8 years, 10 months ago) by sgodin
File length: 11311 byte(s)
Diff to previous 8924
-code cleanup - no functionality changes

Revision 8924 - (view) (download) (annotate) - [select for diffs]
Modified Thu Dec 23 20:51:17 2010 UTC (8 years, 10 months ago) by kwhite
File length: 11234 byte(s)
Diff to previous 8902
resip/stack static code analysis fixes

* Memory allocation issues in error cases
* Unitialized member variables
* Bugs in error reporting
* Convert StatisticManager's payload into member variable (was stack)

Revision 8902 - (view) (download) (annotate) - [select for diffs]
Modified Mon Dec 6 21:06:53 2010 UTC (8 years, 11 months ago) by kwhite
File length: 11232 byte(s)
Diff to previous 8893
fix coding style (brace location)

Revision 8893 - (view) (download) (annotate) - [select for diffs]
Modified Mon Dec 6 16:58:33 2010 UTC (8 years, 11 months ago) by kwhite
File length: 11224 byte(s)
Diff to previous 8874
Basic epoll support for resip stack

- Implements "internal" epoll mode that work with existing select-based
  stack threads.
- Conditionally enabled on platforms with epoll (unix varients)

Revision 8874 - (view) (download) (annotate) - [select for diffs]
Modified Wed Dec 1 20:19:44 2010 UTC (8 years, 11 months ago) by kwhite
File length: 9869 byte(s)
Diff to previous 8845
Add NOBIND option for outbound-only transports

* Adds transportFlag argument to most transport-related constructors
* Only implemented for TCP and TLS

Revision 8845 - (view) (download) (annotate) - [select for diffs]
Modified Thu Nov 4 16:43:34 2010 UTC (9 years ago) by sgodin
File length: 9578 byte(s)
Diff to previous 8787
-remove compiler warnings when building 64-bit

Revision 8787 - (view) (download) (annotate) - [select for diffs]
Modified Wed Jul 21 20:29:34 2010 UTC (9 years, 3 months ago) by sgodin
File length: 9569 byte(s)
Diff to previous 8763
-added the ability for the afterSocketCreationFuncPtr to be called after an outbound TCP
 socket has been "connected".  Under Windows setting QOS via setsockopt (XP) or 
 QOSAddSocketToFlow (QWave/Win7) for an outbound TCP socket requires the API to be called 
 after the socket is connected.

Created documentation for the afterSocketCreationFuncPtr in SipStack.h:
SipStack constructor...
@param socketFunc A pointer to a function that will be called after a socket 
                  in the DNS or SIP transport layers of the stack has been 
                  created.  This callback can be used to control low level 
                  socket options, such as Quality-of-Service/DSCP.
                  Note:  For SIP TCP sockets there is one call for the listen
                  socket, and one (or two) calls for each connection created 
                  afterwards.  For each inbound TCP connection the first 
                  callback is called immediately before the socket is connected, 
                  and if configured it is called again after the connect call
                  has completed and before the first data is sent out.  
                  On some OS's you cannot set QOS until the socket is successfully 
                  connected.  To enable this behavior call:
                  Connection::setEnablePostConnectSocketFuncCall();


Revision 8763 - (view) (download) (annotate) - [select for diffs]
Modified Sat Mar 6 21:36:21 2010 UTC (9 years, 8 months ago) by sgodin
File length: 9493 byte(s)
Diff to previous 8493
-modified Dialog.cxx and setting of mLocalContact from profile getOverrideHostAndPort 
 so that parameters will be preserved; as it may be required to add the p_addTransport 
 to override host and port settings to direct the stack to stamp the contact header 
 with ;transport=XXX appropriately
-fixed the TCP connection garbage collector, so that it will not tear down all TCP
 connections when the OS runs out of TCP connections
-modified the STUN server support in UDP transport to use XorMappedAddress instead
 of MappedAddress if present in the STUN response

Revision 8493 - (view) (download) (annotate) - [select for diffs]
Modified Thu May 21 12:47:17 2009 UTC (10 years, 5 months ago) by sgodin
File length: 9490 byte(s)
Diff to previous 7590
-AfterSocketCreationFunc now called for DTLS, TCP and TLS transports
-For TCP based transports, this fn is called for both the listen socket, 
 and for the socket that is created for each TCP connection 
-thanks to Paul Kurmas for this patch

Revision 7590 - (view) (download) (annotate) - [select for diffs]
Modified Fri Mar 28 18:01:55 2008 UTC (11 years, 7 months ago) by bcampen
File length: 9175 byte(s)
Diff to previous 7463
Fixing an assert on reciprocal SYN.


Revision 7463 - (view) (download) (annotate) - [select for diffs]
Modified Tue Nov 27 23:16:08 2007 UTC (11 years, 11 months ago) by bcampen
File length: 8922 byte(s)
Diff to previous 7183
Merge work from b-Outbound (proxy/registrar outbound support). Includes Path
support. No client support for either of these.


Revision 7183 - (view) (download) (annotate) - [select for diffs]
Modified Fri Jun 29 14:28:35 2007 UTC (12 years, 4 months ago) by wensong
File length: 9087 byte(s)
Diff to previous 6728
change to handle tcp-based connections efficiently.


Revision 6728 - (view) (download) (annotate) - [select for diffs]
Modified Fri Oct 27 17:11:33 2006 UTC (13 years ago) by adam
File length: 11024 byte(s)
Diff to previous 6541
Merging sigcomp changes into main branch


Revision 6541 - (view) (download) (annotate) - [select for diffs]
Modified Mon Aug 28 23:25:16 2006 UTC (13 years, 2 months ago) by derek
File length: 10912 byte(s)
Diff to previous 6201
don't include winsock2 when uncessarily and use LEAN_AND_MEAN for windows.h
Windows is a mess wrt to winsopck vs wincock2...the end result is that Socket.hxx needs to be inlcuded beofre compat.hxx.  Since Socket includes comapt, don't include compat.hxx in the same file as socket.hxx

Revision 6201 - (view) (download) (annotate) - [select for diffs]
Modified Mon May 8 22:37:41 2006 UTC (13 years, 6 months ago) by derek
File length: 10940 byte(s)
Diff to previous 5948
took out log statement which could output freed memory

Revision 5948 - (view) (download) (annotate) - [select for diffs]
Modified Fri Feb 17 15:30:16 2006 UTC (13 years, 8 months ago) by dworley
File length: 10979 byte(s)
Diff to previous 5929
Setting more svn: properties, and adding EOLs to the ends of files
that need it.


Revision 5929 - (view) (download) (annotate) - [select for diffs]
Modified Thu Feb 16 22:36:43 2006 UTC (13 years, 8 months ago) by dworley
File length: 10979 byte(s)
Diff to previous 5777
Start cleaning up svn:eol-style and EOLs in files.
Note that text and program files that can be used on both Un*x and Windows
should have svn:eol-style=native so they check out correctly on both
platforms.


Revision 5777 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jan 5 01:36:53 2006 UTC (13 years, 10 months ago) by derek
File length: 10979 byte(s)
Diff to previous 5295
added support for wince Visual Studio 8; no strftime on wince, so this must be provided to link
scripts to run known good tests in resip/stack/test, rutil/test. added a check target to main/Makefile to run aformentioned scripts.



Revision 5295 - (view) (download) (annotate) - [select for diffs]
Modified Mon Aug 22 00:30:05 2005 UTC (14 years, 2 months ago) by jason
File length: 10973 byte(s)
Copied from: branches/b-directory-reorg/resip/stack/TcpBaseTransport.cxx revision 5294
Diff to previous 5283
merged 5270:HEAD from b-directory-reorg

Revision 5283 - (view) (download) (annotate) - [select for diffs]
Modified Fri Aug 19 01:27:14 2005 UTC (14 years, 2 months ago) by derek
Original Path: branches/b-directory-reorg/resip/stack/TcpBaseTransport.cxx
File length: 10973 byte(s)
Diff to previous 5281
finished resip/sip -> resip/stack rename

Revision 5281 - (view) (download) (annotate) - [select for diffs]
Modified Fri Aug 19 00:59:13 2005 UTC (14 years, 2 months ago) by derek
Original Path: branches/b-directory-reorg/resip/stack/TcpBaseTransport.cxx
File length: 10969 byte(s)
Diff to previous 5276
moved sip to stack

Revision 5276 - (view) (download) (annotate) - [select for diffs]
Modified Fri Aug 19 00:23:17 2005 UTC (14 years, 2 months ago) by jason
Original Path: branches/b-directory-reorg/resip/sip/TcpBaseTransport.cxx
File length: 10969 byte(s)
Diff to previous 5274
compiles now

Revision 5274 - (view) (download) (annotate) - [select for diffs]
Modified Thu Aug 18 23:53:59 2005 UTC (14 years, 2 months ago) by jason
Original Path: branches/b-directory-reorg/resip/sip/TcpBaseTransport.cxx
File length: 11018 byte(s)
Copied from: branches/b-directory-reorg/resip/resiprocate/TcpBaseTransport.cxx revision 5273
Diff to previous 5272
initial reorg - more to come

Revision 5272 - (view) (download) (annotate) - [select for diffs]
Modified Thu Aug 18 23:49:50 2005 UTC (14 years, 2 months ago) by jason
Original Path: branches/b-directory-reorg/resip/resiprocate/TcpBaseTransport.cxx
File length: 11018 byte(s)
Diff to previous 5271
initial reorg - more to come

Revision 5271 - (view) (download) (annotate) - [select for diffs]
Modified Thu Aug 18 23:43:07 2005 UTC (14 years, 2 months ago) by jason
Original Path: branches/b-directory-reorg/sip/resiprocate/TcpBaseTransport.cxx
File length: 11018 byte(s)
Diff to previous 5057
new directory reorg proposal

Revision 5057 - (view) (download) (annotate) - [select for diffs]
Modified Wed Jul 13 18:19:57 2005 UTC (14 years, 4 months ago) by sgodin
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 11018 byte(s)
Diff to previous 4931
- fixed SO_REUSEADDR for WIN32 systems


Revision 4931 - (view) (download) (annotate) - [select for diffs]
Modified Mon Jun 20 18:46:24 2005 UTC (14 years, 4 months ago) by derek
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10926 byte(s)
Diff to previous 4897
david Butcher's comment from doc

Revision 4897 - (view) (download) (annotate) - [select for diffs]
Modified Wed Jun 15 01:12:09 2005 UTC (14 years, 5 months ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10925 byte(s)
Diff to previous 4891
removed ThreadIf from transports


Revision 4891 - (view) (download) (annotate) - [select for diffs]
Modified Wed Jun 15 00:10:35 2005 UTC (14 years, 5 months ago) by derek
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10963 byte(s)
Diff to previous 4838
comments/todos/minor fixes

Revision 4838 - (view) (download) (annotate) - [select for diffs]
Modified Tue Jun 7 23:42:06 2005 UTC (14 years, 5 months ago) by derek
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10924 byte(s)
Diff to previous 4599
don't craete new connection if Tuple::onlyUseExistingConnection is set

Revision 4599 - (view) (download) (annotate) - [select for diffs]
Modified Wed May 11 23:10:19 2005 UTC (14 years, 6 months ago) by derek
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10876 byte(s)
Diff to previous 4445
set svn:eol-style to LF

Revision 4445 - (view) (download) (annotate) - [select for diffs]
Modified Mon Apr 25 15:14:45 2005 UTC (14 years, 6 months ago) by sgodin
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10876 byte(s)
Diff to previous 4416
Some TCP-Connection optimizations if there are no ready FD's in fdset.

Revision 4416 - (view) (download) (annotate) - [select for diffs]
Modified Fri Apr 22 20:19:47 2005 UTC (14 years, 6 months ago) by sgodin
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10831 byte(s)
Diff to previous 3999
Modified ConnectionManager.getNextRead so that it will only return a connection that has data waiting (ie. is signalled by the select).

Revision 3999 - (view) (download) (annotate) - [select for diffs]
Modified Wed Mar 16 19:41:28 2005 UTC (14 years, 8 months ago) by derek
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10826 byte(s)
Diff to previous 3877
Merged in of async branch:

Major changes:

Alternative "async/external" Processing Model

The SipStack & DUM can now run w/out being in a build/select/process
loop.  This is accomplished witht ransports that provide their own cycles, as well
as an external timer api.  The SipStack is constructed w/ an
AsyncProcessHandler which gets notified when a message is put into the
StateMacFifo, or when SipStack::postMs or SipStack::post is called.  This can be
optimized a bit more; in some cases only a timer adjustment may be required, but
the stack might not require cycles.  DumProcessHandler, located in the Dum
directory, is a example of how to use this.  Note that it provides ares w/ a 50
ms timer when there is an active query.  DnsInterface now has a requiresProcess
method to facilitate this; it should possibly become another
getTimeTillNextProcess method.

Transport Refactoring/Cleanup

TransportSelector now only understands objects that derive from Transport.  The
SipStack is responsible for the Transport Factory behaviour of addTransport.  A
lot of the Transport has moved into InternalTransport, to keep the Transport
abstraction clean.  Also, the tcp transports have been cleaned up; most of dlb's
rant in ConnectionBase.hxx has been answered. 

IpVersion vs Bool IpV4

bool is no longer used to represnt IpVersion, the enum is used in tuple and
anywhere else I spotted it.

The result of this merge/cleanup has been regressed; I still need to re-write
testTransportSelector.cxx.  The async model has not been used yet with the
esult of this merge, but it was sued extensively in the branch.


Revision 3877 - (view) (download) (annotate) - [select for diffs]
Modified Tue Feb 8 14:01:35 2005 UTC (14 years, 9 months ago) by sgodin
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 11371 byte(s)
Diff to previous 3548
fix for shutting down transport threads

Revision 3548 - (view) (download) (annotate) - [select for diffs]
Modified Mon Nov 22 23:11:20 2004 UTC (14 years, 11 months ago) by fluffy
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 11361 byte(s)
Diff to previous 3190
Change API to Transport consturctors

Revision 3190 - (view) (download) (annotate) - [select for diffs]
Modified Sat Jul 31 18:50:09 2004 UTC (15 years, 3 months ago) by dlb
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 11344 byte(s)
Diff to previous 3177
added StackThread
added StatisticsManager
refactored Message


Revision 3177 - (view) (download) (annotate) - [select for diffs]
Modified Fri Jul 30 22:57:34 2004 UTC (15 years, 3 months ago) by alan
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 11334 byte(s)
Diff to previous 3175
exceptions support for fd sets -- addresses windows streaming transport connection error issues

Revision 3175 - (view) (download) (annotate) - [select for diffs]
Modified Fri Jul 30 01:13:28 2004 UTC (15 years, 3 months ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10515 byte(s)
Diff to previous 3118
fix a memory leak (shouldn't happen very often)


Revision 3118 - (view) (download) (annotate) - [select for diffs]
Modified Sat Jul 17 04:47:28 2004 UTC (15 years, 4 months ago) by alan
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10403 byte(s)
Diff to previous 3084
Security and TLS updates

Revision 3084 - (view) (download) (annotate) - [select for diffs]
Modified Fri Jul 9 16:05:16 2004 UTC (15 years, 4 months ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10387 byte(s)
Diff to previous 2972
use Transport::error in all cases where strerror was used


Revision 2972 - (view) (download) (annotate) - [select for diffs]
Modified Fri Jun 11 16:46:57 2004 UTC (15 years, 5 months ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10253 byte(s)
Diff to previous 2964
fix contributed by Frederik Bayart

"If I test fdset.readyToRead(conn->getSocket()) immediately after
TcpBaseTransport.cxx:236, this test returns true, although the socket didn't
exist at the time of the select (I'm using solaris 2.8 and gcc 3.2.2). This
has as consequence that on TcpBaseTransport.cxx:133, the test
fdset.readyToRead(currConnection->getSocket()) succeeds and the stack tries
to read even if the connection setup is not yet completed. I didn't verify
whether select sets a bit in the fdset for non-existing sockets, but I
solved the problem by clearing the flag for the socket immediately after
socket creation :"


Revision 2964 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jun 10 22:22:21 2004 UTC (15 years, 5 months ago) by alan
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10225 byte(s)
Diff to previous 2456
formatting

Revision 2456 - (view) (download) (annotate) - [select for diffs]
Modified Fri Mar 5 18:32:18 2004 UTC (15 years, 8 months ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10214 byte(s)
Diff to previous 2367
remove debug


Revision 2367 - (view) (download) (annotate) - [select for diffs]
Modified Sat Feb 14 19:00:28 2004 UTC (15 years, 9 months ago) by rohan
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10247 byte(s)
Diff to previous 2252
Fixed sizeof assumption problem affecting IPv6 on the Mac in TcpBaseTransport.cxx


Revision 2252 - (view) (download) (annotate) - [select for diffs]
Modified Tue Dec 23 06:26:03 2003 UTC (15 years, 10 months ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10237 byte(s)
Diff to previous 2236
hasDataToRead always returns false! this is wrong but necessary to resolve a bug
in TcpBaseTransport for now


Revision 2236 - (view) (download) (annotate) - [select for diffs]
Modified Fri Dec 12 06:26:39 2003 UTC (15 years, 11 months ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10239 byte(s)
Diff to previous 2212
fix bug with changing the supposedly immutable mTuple on Transports


Revision 2212 - (view) (download) (annotate) - [select for diffs]
Modified Fri Dec 5 21:26:55 2003 UTC (15 years, 11 months ago) by fluffy
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10217 byte(s)
Diff to previous 2209
fixed issus with TCP and TLS where there was confusiong between getting 0 bytes
on a read and getting a transport error


Revision 2209 - (view) (download) (annotate) - [select for diffs]
Modified Fri Dec 5 19:30:58 2003 UTC (15 years, 11 months ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10080 byte(s)
Diff to previous 2196
fix several ipv6 bugs in sending and receiving - using wrong sockaddr
also fixed problem with deleting connection on tls when returned bytesRead=0


Revision 2196 - (view) (download) (annotate) - [select for diffs]
Modified Fri Dec 5 01:32:52 2003 UTC (15 years, 11 months ago) by fluffy
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10082 byte(s)
Diff to previous 2195
no change after merge conflict


Revision 2195 - (view) (download) (annotate) - [select for diffs]
Modified Fri Dec 5 00:26:44 2003 UTC (15 years, 11 months ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 10081 byte(s)
Diff to previous 2180
tentative fix to problem when 0 bytes read (means far end closed connection)


Revision 2180 - (view) (download) (annotate) - [select for diffs]
Modified Thu Dec 4 02:02:57 2003 UTC (15 years, 11 months ago) by fluffy
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 9965 byte(s)
Diff to previous 1981
Updated a few asserts to track donw unitialzed transport


Revision 1981 - (view) (download) (annotate) - [select for diffs]
Modified Sun Oct 19 17:19:26 2003 UTC (16 years ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 9672 byte(s)
Diff to previous 1929
remove DnsResolver


Revision 1929 - (view) (download) (annotate) - [select for diffs]
Modified Tue Oct 7 23:35:00 2003 UTC (16 years, 1 month ago) by alan
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 9653 byte(s)
Diff to previous 1913
Completed via-less malformed message recovery.
Framework for other recoveries in Transport::basicCheck()
 Modified Files:
 	configure.ac resiprocate/Connection.cxx
 	resiprocate/Connection.hxx resiprocate/SipMessage.cxx
 	resiprocate/TcpBaseTransport.cxx
  Tag: b-dev-ah-20031006-viafix
 	resiprocate/Transport.cxx
  No tag
 	resiprocate/os/Tuple.hxx resiprocate/test/Makefile.am
 	resiprocate/test/testData.cxx resiprocate/test/testUdp.cxx
 Added Files:
 	resiprocate/test/testResponses.cxx
VS: ----------------------------------------------------------------------


Revision 1913 - (view) (download) (annotate) - [select for diffs]
Modified Sun Oct 5 02:33:12 2003 UTC (16 years, 1 month ago) by fluffy
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 9500 byte(s)
Diff to previous 1902
don't print error for EWOULDBLOCK


Revision 1902 - (view) (download) (annotate) - [select for diffs]
Modified Sat Oct 4 17:51:47 2003 UTC (16 years, 1 month ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 9438 byte(s)
Diff to previous 1883
fix shutdown of transports in multithreaded case


Revision 1883 - (view) (download) (annotate) - [select for diffs]
Modified Thu Oct 2 23:28:39 2003 UTC (16 years, 1 month ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 9423 byte(s)
Diff to previous 1876
reorganize ipv6 stuff in TransportSelector, Transports and Tuple
change datastructure for storing the Transports in the TransportSelector to be
more efficient


Revision 1876 - (view) (download) (annotate) - [select for diffs]
Modified Wed Oct 1 17:53:33 2003 UTC (16 years, 1 month ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 9416 byte(s)
Diff to previous 1873
fix the cullen whirlwind


Revision 1873 - (view) (download) (annotate) - [select for diffs]
Modified Wed Oct 1 15:35:19 2003 UTC (16 years, 1 month ago) by fluffy
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 9416 byte(s)
Diff to previous 1848
fix errno stuff


Revision 1848 - (view) (download) (annotate) - [select for diffs]
Modified Sun Sep 28 00:21:20 2003 UTC (16 years, 1 month ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 9202 byte(s)
Diff to previous 1846
fix bug when read returns 0 bytes - means far side closed


Revision 1846 - (view) (download) (annotate) - [select for diffs]
Modified Sat Sep 27 21:50:52 2003 UTC (16 years, 1 month ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 9025 byte(s)
Diff to previous 1839
change some debug levels


Revision 1839 - (view) (download) (annotate) - [select for diffs]
Modified Sat Sep 27 01:49:38 2003 UTC (16 years, 1 month ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 8869 byte(s)
Diff to previous 1837
refactored the Tuple
required interface changes to the Tuple
store network address in a sockaddr structure to be generic for v4 and v6
fixed a bug in Tuple::operator<


Revision 1837 - (view) (download) (annotate) - [select for diffs]
Modified Fri Sep 26 16:47:31 2003 UTC (16 years, 1 month ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 8905 byte(s)
Diff to previous 1813
added a method Transport::bind to replace the static so we can store the bound
sockaddr in the Transport for use by TransportSelector


Revision 1813 - (view) (download) (annotate) - [select for diffs]
Modified Tue Sep 23 20:25:09 2003 UTC (16 years, 1 month ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 8946 byte(s)
Diff to previous 1812
*** empty log message ***


Revision 1812 - (view) (download) (annotate) - [select for diffs]
Modified Mon Sep 22 07:05:18 2003 UTC (16 years, 1 month ago) by jason
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 8807 byte(s)
Diff to previous 1800
fix some problems with cleanup when delete TcpTransport and/or Connection


Revision 1800 - (view) (download) (annotate) - [select for diffs]
Added Thu Sep 18 17:16:03 2003 UTC (16 years, 1 month ago) by davidb
Original Path: main/sip/resiprocate/TcpBaseTransport.cxx
File length: 8803 byte(s)
refactored tcp code
refactored tls code
full support for tcpv6 with more general use
support for binding to specific interfaces
added many new DnsUtil and utilities in Tuple class


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