diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2021-01-18 21:46:03 +0100 | 
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2021-01-19 21:44:22 +0100 | 
| commit | ec8ec7eb2a0b677f80f89834d955d1f0aa614538 (patch) | |
| tree | 0c2a987f07bf89b2366e21b7fb081c110bd62cd2 /src | |
| parent | 2abd6593c8b047d3fd579aa6cc0058bbebe266f8 (diff) | |
Shutdown server socket to terminate listener
Diffstat (limited to 'src')
| -rw-r--r-- | src/network.cpp | 5 | 
1 files changed, 5 insertions, 0 deletions
| diff --git a/src/network.cpp b/src/network.cpp index bd64e07..eab0f67 100644 --- a/src/network.cpp +++ b/src/network.cpp @@ -189,6 +189,9 @@ Server::Priv::~Priv()  		finish = true;  	} +	if (sock >= 0) +		shutdown(sock, SHUT_RDWR); +  	announceCondvar.notify_all();  	threadListen.join();  	threadAnnounce.join(); @@ -212,6 +215,8 @@ void Server::Priv::doListen()  				(sockaddr *) &paddr, &addrlen);  		if (ret < 0)  			throw std::system_error(errno, std::generic_category()); +		if (ret == 0) +			break;  		buf.resize(ret);  		auto & peer = getPeer(paddr); |