summaryrefslogtreecommitdiffstats
path: root/src/shared/HTTPSender.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/HTTPSender.cpp')
-rw-r--r--src/shared/HTTPSender.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/shared/HTTPSender.cpp b/src/shared/HTTPSender.cpp
index 7f760786..1b38f97f 100644
--- a/src/shared/HTTPSender.cpp
+++ b/src/shared/HTTPSender.cpp
@@ -109,8 +109,9 @@ HTTPSender::_run()
_signal.wait(_mutex);
write(_client_sock, _transfer.c_str(), _transfer.length());
- write(_client_sock, "\n\n", 2);
+ write(_client_sock, "\n\n\n", 2);
+ _signal.broadcast();
_mutex.unlock();
}
@@ -125,16 +126,15 @@ HTTPSender::bundle_begin()
_mutex.lock();
_send_state = SendingBundle;
_transfer = "";
- _mutex.unlock();
}
void
HTTPSender::bundle_end()
{
- _mutex.lock();
assert(_send_state == SendingBundle);
_signal.broadcast();
+ _signal.wait(_mutex);
_send_state = Immediate;
_mutex.unlock();
}
@@ -143,16 +143,15 @@ HTTPSender::bundle_end()
void
HTTPSender::send_chunk(const std::string& buf)
{
- _mutex.lock();
-
if (_send_state == Immediate) {
- _transfer = "";
+ _mutex.lock();
+ _transfer = buf;
_signal.broadcast();
+ _signal.wait(_mutex);
+ _mutex.unlock();
} else {
_transfer.append(buf);
}
-
- _mutex.unlock();
}