Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-07-02 19:18:44 +0000
committerStijn Buys <ingar@osirion.org>2008-07-02 19:18:44 +0000
commit89de2efebc22b3754c18ede10dc07bfc397fc2d0 (patch)
tree1d005c4b0ad66333235ecfbea03089bb31015b48 /src/core/netserver.cc
parentfd6f22924fd0d85ee20fb1d5e4588ac441675ea9 (diff)
initial server ncurses console
Diffstat (limited to 'src/core/netserver.cc')
-rw-r--r--src/core/netserver.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/core/netserver.cc b/src/core/netserver.cc
index b604f47..2859006 100644
--- a/src/core/netserver.cc
+++ b/src/core/netserver.cc
@@ -126,6 +126,10 @@ NetServer::~NetServer()
}
}
+void NetServer::abort() {
+ netserver_error = true;
+}
+
// remove disconnected clients
void NetServer::reap()
{
@@ -185,9 +189,14 @@ void NetServer::receive()
int nb = select(fd()+1, &readset, NULL, NULL, &timeout);
if (nb == -1) {
+#ifndef _WIN32
+ // ncurses needs SIGWINCH catched
+ if (errno == EINTR) {
+ return;
+ }
+#endif
con_error << "Network error on select()" << std::endl;
- //perror("select");
- abort();
+ this->abort();
return;
}
@@ -200,7 +209,7 @@ void NetServer::receive()
ssize_t bytes_received = ::recvfrom(fd(), recbuf, FRAMESIZE-1, 0, (struct sockaddr *)&client_addr, &client_addr_len);
if (bytes_received == -1) {
con_error << "Network error on recvfrom()!" << std::endl;
- abort();
+ this->abort();
return;
} else {
//con_debug << "Incoming data '" << recbuf << "'"<< bytes_received << " bytes" << std::endl;