mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-04-27 11:17:49 +02:00
commit
0df68872ab
7 changed files with 140 additions and 161 deletions
|
@ -96,7 +96,7 @@ namespace http {
|
|||
pos_c = url.find('@', pos_p); /* find end of 'user' or 'user:pass' part */
|
||||
if (pos_c != std::string::npos && (pos_s == std::string::npos || pos_s > pos_c)) {
|
||||
std::size_t delim = url.find(':', pos_p);
|
||||
if (delim != std::string::npos && delim < pos_c) {
|
||||
if (delim && delim != std::string::npos && delim < pos_c) {
|
||||
user = url.substr(pos_p, delim - pos_p);
|
||||
delim += 1;
|
||||
pass = url.substr(delim, pos_c - delim);
|
||||
|
|
|
@ -578,9 +578,7 @@ namespace stream
|
|||
if (m_SentPackets.empty () && m_SendBuffer.IsEmpty ()) // nothing to send
|
||||
{
|
||||
m_Status = eStreamStatusClosed;
|
||||
// close could be called from another thread so do SendClose from the destination thread
|
||||
// this is so m_LocalDestination.NewPacket () does not trigger a race condition
|
||||
m_Service.post(std::bind(&Stream::SendClose, shared_from_this()));
|
||||
SendClose();
|
||||
}
|
||||
break;
|
||||
case eStreamStatusClosed:
|
||||
|
|
|
@ -165,6 +165,9 @@ namespace stream
|
|||
void AsyncReceive (const Buffer& buffer, ReceiveHandler handler, int timeout = 0);
|
||||
size_t ReadSome (uint8_t * buf, size_t len) { return ConcatenatePackets (buf, len); };
|
||||
|
||||
void AsyncClose() { m_Service.post(std::bind(&Stream::Close, shared_from_this())); };
|
||||
|
||||
/** only call close from destination thread, use Stream::AsyncClose for other threads */
|
||||
void Close ();
|
||||
void Cancel () { m_ReceiveTimer.cancel (); };
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue