Show
Ignore:
Timestamp:
07/05/08 08:13:12 (4 years ago)
Author:
rakshasa
Message:

* Fix a slight memory leak in peer exchanges. Patch by Josef Drexler.

* Fixed mix-up in version numbers causing an incompatibility for .so
libraries. Patch by Josef Drexler for ticket #1333.

* Fix excessive HAVE messages being sent after handshake when download
has been active for a while. Patch by Josef Drexler for ticket #1372.

* Make --enable-ipv6 not break DHT on Mac OS X. Patch by Josef Drexler
for ticket #1359.

* Fix crash when contacting tracker. Patch by Josef Drexler for ticket
#1272.

* Fix stopping downloads not working properly. Patch by Josef Drexler
for ticket #1335.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/libtorrent/src/net/data_buffer.h

    r980 r1062  
    4545// Recipient must call clear() when done with the buffer. 
    4646struct DataBuffer { 
    47   DataBuffer()                        : m_data(NULL), m_end(NULL), m_copied(false) {} 
    48   DataBuffer(char* data, char* end)   : m_data(data), m_end(end),  m_copied(false) {} 
     47  DataBuffer()                        : m_data(NULL), m_end(NULL), m_owned(true) {} 
     48  DataBuffer(char* data, char* end)   : m_data(data), m_end(end),  m_owned(true) {} 
     49 
     50  DataBuffer          clone() const        { DataBuffer d = *this; d.m_owned = false; return d; } 
    4951 
    5052  char*               data() const         { return m_data; } 
    5153  char*               end() const          { return m_end; } 
    5254 
    53   bool                copied() const       { return m_copied; } 
     55  bool                owned() const        { return m_owned; } 
    5456  bool                empty() const        { return m_data == NULL; } 
    5557  size_t              length() const       { return m_end - m_data; } 
    5658 
    5759  void                clear(); 
    58   void                set(char* data, char* end, bool copied); 
     60  void                set(char* data, char* end, bool owned); 
    5961 
    6062private: 
     
    6264  char*               m_end; 
    6365 
    64   // Used to indicate if buffer held by PCB is copied and needs to be 
    65   // deleted after transmission. 
    66   bool                m_copied; 
     66  // Used to indicate if buffer held by PCB is its own and needs to be 
     67  // deleted after transmission (false if shared with other connections). 
     68  bool                m_owned; 
    6769}; 
    6870 
     
    7375 
    7476  m_data = m_end = NULL; 
    75   m_copied = false; 
     77  m_owned = false; 
    7678} 
    7779 
    7880inline void 
    79 DataBuffer::set(char* data, char* end, bool copied) { 
     81DataBuffer::set(char* data, char* end, bool owned) { 
    8082  m_data = data; 
    8183  m_end = end; 
    82   m_copied = copied; 
     84  m_owned = owned; 
    8385} 
    8486