未验证 提交 aa9b3e31 编写于 作者: S Shengliang Guan 提交者: GitHub

Merge pull request #2009 from taosdata/hotfix/td-364

Hotfix/td 364
...@@ -867,9 +867,8 @@ static void *rpcProcessMsgFromPeer(SRecvInfo *pRecv) { ...@@ -867,9 +867,8 @@ static void *rpcProcessMsgFromPeer(SRecvInfo *pRecv) {
// underlying UDP layer does not know it is server or client // underlying UDP layer does not know it is server or client
pRecv->connType = pRecv->connType | pRpc->connType; pRecv->connType = pRecv->connType | pRpc->connType;
if (pRecv->ip==0 && pConn) { if (pRecv->ip == 0 && pConn) {
rpcProcessBrokenLink(pConn); rpcProcessBrokenLink(pConn);
rpcFreeMsg(pRecv->msg);
return NULL; return NULL;
} }
......
...@@ -215,7 +215,6 @@ static void* taosAcceptTcpConnection(void *arg) { ...@@ -215,7 +215,6 @@ static void* taosAcceptTcpConnection(void *arg) {
continue; continue;
} }
tTrace("%s TCP connection from ip:%s:%hu", pServerObj->label, inet_ntoa(caddr.sin_addr), caddr.sin_port);
taosKeepTcpAlive(connFd); taosKeepTcpAlive(connFd);
// pick up the thread to handle this connection // pick up the thread to handle this connection
...@@ -229,7 +228,8 @@ static void* taosAcceptTcpConnection(void *arg) { ...@@ -229,7 +228,8 @@ static void* taosAcceptTcpConnection(void *arg) {
inet_ntoa(caddr.sin_addr), pFdObj->port, pFdObj, pThreadObj->numOfFds); inet_ntoa(caddr.sin_addr), pFdObj->port, pFdObj, pThreadObj->numOfFds);
} else { } else {
close(connFd); close(connFd);
tError("%s failed to malloc FdObj(%s)", pServerObj->label, strerror(errno)); tError("%s failed to malloc FdObj(%s) for connection from:%s:%hu", pServerObj->label, strerror(errno),
inet_ntoa(caddr.sin_addr), caddr.sin_port);
} }
// pick up next thread for next connection // pick up next thread for next connection
...@@ -341,7 +341,9 @@ static void taosReportBrokenLink(SFdObj *pFdObj) { ...@@ -341,7 +341,9 @@ static void taosReportBrokenLink(SFdObj *pFdObj) {
recvInfo.chandle = NULL; recvInfo.chandle = NULL;
recvInfo.connType = RPC_CONN_TCP; recvInfo.connType = RPC_CONN_TCP;
(*(pThreadObj->processData))(&recvInfo); (*(pThreadObj->processData))(&recvInfo);
} } else {
taosFreeFdObj(pFdObj);
}
} }
#define maxEvents 10 #define maxEvents 10
...@@ -352,7 +354,7 @@ static void *taosProcessTcpData(void *param) { ...@@ -352,7 +354,7 @@ static void *taosProcessTcpData(void *param) {
struct epoll_event events[maxEvents]; struct epoll_event events[maxEvents];
SRecvInfo recvInfo; SRecvInfo recvInfo;
SRpcHead rpcHead; SRpcHead rpcHead;
while (1) { while (1) {
int fdNum = epoll_wait(pThreadObj->pollFd, events, maxEvents, -1); int fdNum = epoll_wait(pThreadObj->pollFd, events, maxEvents, -1);
if (pThreadObj->stop) { if (pThreadObj->stop) {
...@@ -466,7 +468,7 @@ static void taosFreeFdObj(SFdObj *pFdObj) { ...@@ -466,7 +468,7 @@ static void taosFreeFdObj(SFdObj *pFdObj) {
pFdObj->signature = NULL; pFdObj->signature = NULL;
epoll_ctl(pThreadObj->pollFd, EPOLL_CTL_DEL, pFdObj->fd, NULL); epoll_ctl(pThreadObj->pollFd, EPOLL_CTL_DEL, pFdObj->fd, NULL);
close(pFdObj->fd); taosCloseTcpSocket(pFdObj->fd);
pThreadObj->numOfFds--; pThreadObj->numOfFds--;
......
...@@ -127,6 +127,8 @@ int main(int argc, char *argv[]) { ...@@ -127,6 +127,8 @@ int main(int argc, char *argv[]) {
SRpcInit rpcInit; SRpcInit rpcInit;
char dataName[20] = "server.data"; char dataName[20] = "server.data";
taosBlockSIGPIPE();
memset(&rpcInit, 0, sizeof(rpcInit)); memset(&rpcInit, 0, sizeof(rpcInit));
rpcInit.localPort = 7000; rpcInit.localPort = 7000;
rpcInit.label = "SER"; rpcInit.label = "SER";
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册