| | |
| | | mpool->conns[i].fd = -1; |
| | | |
| | | } |
| | | else if(n == -1) { |
| | | else if(n == EBUS_NET) { |
| | | // 网络错误 |
| | | mpool->closeConn( connfd); |
| | | // mpool->conns[i].fd = -1; |
| | | } else { |
| | | // 对方key是关闭的 |
| | | // 代理服务没有转发成功 |
| | | mpool->conns[i].fd = -1; |
| | | } |
| | | |
| | |
| | | // printf("poll POLLERR %d\n", connfd); |
| | | mpool->nready--; |
| | | mpool->closeConn( connfd); |
| | | // mpool->conns[i].fd = -1; |
| | | } |
| | | } |
| | | } |
| | |
| | | if ( (connfd = mpool->conns[i].fd) > 0 ) { |
| | | // 关闭并清除写入或读取失败的连接 |
| | | mpool->closeConn( connfd); |
| | | // mpool->conns[i].fd = -1; |
| | | } |
| | | } |
| | | |
| | |
| | | mpool->conns[i].fd = -1; |
| | | n_pub_suc++; |
| | | } |
| | | else if(ret == -1) { |
| | | else if(ret == EBUS_NET) { |
| | | // 网络连接错误 |
| | | mpool->closeConn( connfd); |
| | | } else { |
| | | // 对方的key是关闭的 |
| | | // 代理服务没有转发成功 |
| | | mpool->conns[i].fd = -1; |
| | | } |
| | | n_resp++; |
| | |
| | | } |
| | | |
| | | /** |
| | | * @return 0 成功, 1 对方没有对应的key, -1 网络错误 |
| | | * @return 0 成功, EBUS_NET 网络错误, 其他值 代理服务没有转发成功。 |
| | | * |
| | | */ |
| | | int NetModSocket::read_response(int connfd, net_mod_recv_msg_t *recv_msg) { |
| | |
| | | // printf(">>>> read_response %s\n", response_head.host); |
| | | if(response_head.code != 0) { |
| | | // 代理服务没能成功发送给对应的key |
| | | return 1; |
| | | return response_head.code; |
| | | } |
| | | |
| | | recv_buf = malloc(response_head.content_length); |
| | |
| | | } |
| | | if ( (recv_size = rio_readn(connfd, recv_buf, response_head.content_length) ) != response_head.content_length) { |
| | | LoggerFactory::getLogger()->error(errno, "NetModSocket::read_response rio_readnb recv_buf"); |
| | | |
| | | return -1; |
| | | //网络错误 |
| | | return EBUS_NET; |
| | | } |
| | | |
| | | strcpy( recv_msg->host, response_head.host); |