diff options
| author | 2019-09-23 00:37:33 +0100 | |
|---|---|---|
| committer | 2019-09-23 00:37:33 +0100 | |
| commit | 8848169e8b42b5ed85837efd3b3f9e36ffbada1b (patch) | |
| tree | 04babb46ea381f254589b12288f121d53338cb67 /src/modules/m_haproxy.cpp | |
| parent | Install libc++abi-dev on Travis. (diff) | |
| parent | Lower the acceptable drift for clocks on link. (diff) | |
Merge branch 'insp3' into master.
Diffstat (limited to 'src/modules/m_haproxy.cpp')
| -rw-r--r-- | src/modules/m_haproxy.cpp | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/src/modules/m_haproxy.cpp b/src/modules/m_haproxy.cpp index 4f2d6cdbf..fcdb3ce9f 100644 --- a/src/modules/m_haproxy.cpp +++ b/src/modules/m_haproxy.cpp @@ -219,7 +219,16 @@ class HAProxyHook : public IOHookMiddle return true; } - int ReadProxyAddress(StreamSocket* sock) + int ReadData(std::string& destrecvq) + { + // Once connected we handle no special data. + std::string& recvq = GetRecvQ(); + destrecvq.append(recvq); + recvq.clear(); + return 1; + } + + int ReadProxyAddress(StreamSocket* sock, std::string& destrecvq) { // Block until we have the entire address. std::string& recvq = GetRecvQ(); @@ -276,14 +285,15 @@ class HAProxyHook : public IOHookMiddle // Erase the processed proxy information from the receive queue. recvq.erase(0, address_length); + break; } // We're done! state = HPS_CONNECTED; - return 1; + return ReadData(destrecvq); } - int ReadProxyHeader(StreamSocket* sock) + int ReadProxyHeader(StreamSocket* sock, std::string& destrecvq) { // Block until we have a header. std::string& recvq = GetRecvQ(); @@ -359,7 +369,7 @@ class HAProxyHook : public IOHookMiddle } state = HPS_WAITING_FOR_ADDRESS; - return ReadProxyAddress(sock); + return ReadProxyAddress(sock, destrecvq); } public: @@ -384,16 +394,13 @@ class HAProxyHook : public IOHookMiddle switch (state) { case HPS_WAITING_FOR_HEADER: - return ReadProxyHeader(sock); + return ReadProxyHeader(sock, destrecvq); case HPS_WAITING_FOR_ADDRESS: - return ReadProxyAddress(sock); + return ReadProxyAddress(sock, destrecvq); case HPS_CONNECTED: - std::string& recvq = GetRecvQ(); - destrecvq.append(recvq); - recvq.clear(); - return 1; + return ReadData(destrecvq); } // We should never reach this point. |
