diff options
author | David Robillard <d@drobilla.net> | 2012-05-09 16:06:59 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2012-05-09 16:06:59 +0000 |
commit | 6932da9169a38a5a8eafc63357b9ede00cb46117 (patch) | |
tree | f2a9d02d7c82c859db334dfcb3b6060cfc8bac07 /src/socket/SocketReader.cpp | |
parent | ed80c779a6085ce62b9f61a28263607983db93a1 (diff) | |
download | ingen-6932da9169a38a5a8eafc63357b9ede00cb46117.tar.gz ingen-6932da9169a38a5a8eafc63357b9ede00cb46117.tar.bz2 ingen-6932da9169a38a5a8eafc63357b9ede00cb46117.zip |
Support TCP sockets.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4328 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/socket/SocketReader.cpp')
-rw-r--r-- | src/socket/SocketReader.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/socket/SocketReader.cpp b/src/socket/SocketReader.cpp index 8b3ed7a1..2d1b5c14 100644 --- a/src/socket/SocketReader.cpp +++ b/src/socket/SocketReader.cpp @@ -142,9 +142,13 @@ SocketReader::_run() pfd.revents = 0; while (!_exit_flag) { + if (feof(f)) { + break; // Lost connection + } + // Wait for input to arrive at socket int ret = poll(&pfd, 1, -1); - if (ret == -1 || (pfd.revents & (POLLHUP | POLLNVAL))) { + if (ret == -1 || (pfd.revents & (POLLERR|POLLHUP|POLLNVAL))) { break; // Hangup } else if (!ret) { continue; // No data, shouldn't happen @@ -156,6 +160,10 @@ SocketReader::_run() continue; // Read nothing, e.g. just whitespace } else if (st) { fprintf(stderr, "Read error: %s\n", serd_strerror(st)); + continue; + } else if (!_msg_node) { + LOG(Raul::error) << "Received empty message" << std::endl; + continue; } // Build an LV2_Atom at chunk.buf from the message |