Quellcode durchsuchen

Fix: tc_clientsocket unix local socket bug

ruanshudong vor 1 Jahr
Ursprung
Commit
5e3652fec2
3 geänderte Dateien mit 5 neuen und 111 gelöschten Zeilen
  1. 1 1
      servant/protocol
  2. 4 4
      util/src/tc_clientsocket.cpp
  3. 0 106
      util/src/tc_docker.cpp

+ 1 - 1
servant/protocol

@@ -1 +1 @@
-Subproject commit c642f73f48e949be835d7fcc47e1c82554d02b45
+Subproject commit 59568e5e4a3ea2e3eaf25d84365d73d7e1cbe40a

+ 4 - 4
util/src/tc_clientsocket.cpp

@@ -507,7 +507,7 @@ int TC_TCPClient::recv(char *sRecvBuffer, size_t &iRecvLen)
 	}
 
 	const epoll_event &ev  = _epoller->get(0);
-	if(TC_Epoller::errorEvent(ev))
+	if(!TC_Epoller::readEvent(ev) && TC_Epoller::errorEvent(ev))
 	{
 		_socket.close();
 		return EM_CLOSE;
@@ -566,7 +566,7 @@ int TC_TCPClient::recvBySep(string &sRecvBuffer, const string &sSep)
 		}
 
 		const epoll_event &ev  = _epoller->get(0);
-		if(TC_Epoller::errorEvent(ev))
+		if(!TC_Epoller::readEvent(ev) && TC_Epoller::errorEvent(ev))
 		{
 			_socket.close();
 			return EM_CLOSE;
@@ -633,7 +633,7 @@ int TC_TCPClient::recvAll(string &sRecvBuffer)
 		}
 
 		const epoll_event &ev  = _epoller->get(0);
-		if(TC_Epoller::errorEvent(ev))
+		if(!TC_Epoller::readEvent(ev) && TC_Epoller::errorEvent(ev))
 		{
 			_socket.close();
 			return EM_CLOSE;
@@ -693,7 +693,7 @@ int TC_TCPClient::recvLength(char *sRecvBuffer, size_t iRecvLen)
 		}
 
 		const epoll_event &ev  = _epoller->get(0);
-		if(TC_Epoller::errorEvent(ev))
+		if(!TC_Epoller::readEvent(ev) && TC_Epoller::errorEvent(ev))
 		{
 			_socket.close();
 			return EM_CLOSE;

+ 0 - 106
util/src/tc_docker.cpp

@@ -7,112 +7,6 @@
 
 namespace tars
 {
-//
-//class AsyncHttpCallback : public TC_HttpAsync::RequestCallback
-//{
-//public:
-//	AsyncHttpCallback()//std::mutex &m, std::condition_variable &cond ): _m(m), _cond(cond)
-//	{
-//	}
-//
-//	virtual void onSucc(TC_HttpResponse& stHttpResponse)
-//	{
-////		LOG_CONSOLE_DEBUG << stHttpResponse.getContent() << endl;
-//		_succ = true;
-//		_rsp = stHttpResponse;
-//	}
-//
-//	virtual void onFailed(FAILED_CODE ret, const string& info)
-//	{
-////		LOG_CONSOLE_DEBUG << ret << ":" << info << endl;
-//
-//		_errMessage = info;
-//		std::unique_lock<std::mutex> lock(_m);
-//		_terminate = true;
-//		_cond.notify_one();
-//	}
-//
-//	virtual void onClose()
-//	{
-////		LOG_CONSOLE_DEBUG << _rsp.getContent() << endl;
-//
-//		std::unique_lock<std::mutex> lock(_m);
-//		_terminate = true;
-//		_cond.notify_one();
-//	}
-//
-//	void wait()
-//	{
-//		std::unique_lock<std::mutex> lock(_m);
-//
-//		if (_terminate)
-//		{
-//			return;
-//		}
-//		_cond.wait(lock);
-//	}
-//
-//public:
-//	std::mutex _m;
-//	std::condition_variable _cond;
-//
-//	bool _succ = false;
-//	bool _terminate = false;
-//	string _errMessage;
-//	TC_HttpResponse _rsp;
-//};
-
-//
-//	bool TC_Docker::createHttpRequest(TC_HttpRequest &request)
-//	{
-//		TC_HttpAsync ast;
-//		ast.setTimeout(_requestTimeout);
-//		ast.start();
-//
-//		AsyncHttpCallback* callback = new AsyncHttpCallback();
-//
-//		TC_HttpAsync::RequestCallbackPtr p(callback);
-//
-//		request.setHeader("X-Registry-Auth", this->_authenticationStr);
-//		if (!request.hasHeader("Content-Type"))
-//		{
-//			request.setHeader("Content-Type", "application/tar");
-//		}
-//
-//		request.setHost("localhost");
-////		LOG_CONSOLE_DEBUG << request.encode() << endl;
-//
-//		ast.doAsyncRequest(request, p);
-//
-//		callback->wait();
-//		ast.waitForAllDone();
-//
-////		LOG_CONSOLE_DEBUG << callback->_rsp.encode() << endl;
-//
-//		_responseMessage = TC_Common::trimright(callback->_rsp.getContent());
-//
-//		if (callback->_succ && (callback->_rsp.getStatus() >= 200 && callback->_rsp.getStatus() < 300))
-//		{
-//			return true;
-//		}
-//		else
-//		{
-//			if (!callback->_rsp.getContent().empty())
-//			{
-//				_errMessage = TC_Common::trimright(callback->_rsp.getContent());
-//			}
-//			else if(!callback->_errMessage.empty())
-//			{
-//				_errMessage = "{ \"message\": \"" + callback->_errMessage + "\"}";
-//			}
-//			else
-//			{
-//				_errMessage = "{ \"message\": \"" + callback->_rsp.getAbout() + "\"}";
-//			}
-//
-//			return false;
-//		}
-//	}
 
 void TC_Docker::setDockerUnixLocal(const string& unixSocket)
 {