Made socket non-blocking mode in SocketCore::acceptConnection()

pull/36/head
Tatsuhiro Tsujikawa 2012-11-28 00:10:32 +09:00
parent e1c03e30dd
commit 438f95abae
6 changed files with 10 additions and 11 deletions

View File

@ -866,8 +866,7 @@ bool FtpNegotiationCommand::waitConnection()
{
disableReadCheckSocket();
setReadCheckSocket(getSocket());
dataSocket_.reset(serverSocket_->acceptConnection());
dataSocket_->setNonBlockingMode();
dataSocket_ = serverSocket_->acceptConnection();
sequence_ = SEQ_NEGOTIATION_COMPLETED;
return false;
}

View File

@ -73,7 +73,6 @@ bool HttpListenCommand::execute()
try {
if(serverSocket_->isReadable(0)) {
SharedHandle<SocketCore> socket(serverSocket_->acceptConnection());
socket->setNonBlockingMode();
std::pair<std::string, uint16_t> peerInfo;
socket->getPeerInfo(peerInfo);

View File

@ -110,12 +110,10 @@ bool PeerListenCommand::execute() {
for(int i = 0; i < 3 && socket_->isReadable(0); ++i) {
SharedHandle<SocketCore> peerSocket;
try {
peerSocket.reset(socket_->acceptConnection());
peerSocket = socket_->acceptConnection();
std::pair<std::string, uint16_t> peerInfo;
peerSocket->getPeerInfo(peerInfo);
peerSocket->setNonBlockingMode();
SharedHandle<Peer> peer(new Peer(peerInfo.first, peerInfo.second, true));
cuid_t cuid = e_->newCUID();
Command* command =

View File

@ -355,7 +355,7 @@ void SocketCore::beginListen()
}
}
SocketCore* SocketCore::acceptConnection() const
SharedHandle<SocketCore> SocketCore::acceptConnection() const
{
sockaddr_union sockaddr;
socklen_t len = sizeof(sockaddr);
@ -366,7 +366,9 @@ SocketCore* SocketCore::acceptConnection() const
if(fd == (sock_t) -1) {
throw DL_ABORT_EX(fmt(EX_SOCKET_ACCEPT, errorMsg(errNum).c_str()));
}
return new SocketCore(fd, sockType_);
SharedHandle<SocketCore> sock(new SocketCore(fd, sockType_));
sock->setNonBlockingMode();
return sock;
}
int SocketCore::getAddrInfo(std::pair<std::string, uint16_t>& addrinfo) const

View File

@ -195,9 +195,9 @@ public:
/**
* Accepts incoming connection on this socket.
* You must call beginListen() before calling this method.
* @return accepted socket. The caller must delete it after using it.
* @return accepted socket.
*/
SocketCore* acceptConnection() const;
SharedHandle<SocketCore> acceptConnection() const;
/**
* Connects to the server named host and the destination port is port.

View File

@ -64,7 +64,8 @@ public:
while(!clientSocket_->isWritable(0));
serverSocket_.reset(listenSocket->acceptConnection());
serverSocket_ = listenSocket->acceptConnection();
serverSocket_->setBlockingMode();
ftp_.reset(new FtpConnection(1, clientSocket_, req_,
authConfigFactory_->createAuthConfig
(req_, option_.get()),