diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2016-09-21 19:37:38 +0200 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2016-09-21 19:37:38 +0200 |
commit | 7a66d48f815b475d98e56a99a5125ba3b8592e8d (patch) | |
tree | 6555c5e3ab2cf0664e2174b89c146edaff7b8257 /src/InputTcpReader.cpp | |
parent | 0b36f44c7bf0d8fc0a230c9acdc480cbd3965e5e (diff) | |
download | dabmod-7a66d48f815b475d98e56a99a5125ba3b8592e8d.tar.gz dabmod-7a66d48f815b475d98e56a99a5125ba3b8592e8d.tar.bz2 dabmod-7a66d48f815b475d98e56a99a5125ba3b8592e8d.zip |
Add TCP input recv timeout of 30s
Diffstat (limited to 'src/InputTcpReader.cpp')
-rw-r--r-- | src/InputTcpReader.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/InputTcpReader.cpp b/src/InputTcpReader.cpp index 34ccb2e..94ec0ad 100644 --- a/src/InputTcpReader.cpp +++ b/src/InputTcpReader.cpp @@ -32,6 +32,9 @@ #include "InputReader.h" #include "PcDebug.h" #include "Utils.h" +#include <sys/socket.h> +#include <unistd.h> +#include <errno.h> InputTcpReader::InputTcpReader() { @@ -88,6 +91,15 @@ void InputTcpReader::Open(const std::string& endpoint) throw std::runtime_error(ss.str()); } + /* Set recv timeout of 30s, see socket(7) for details */ + struct timeval tv = {0}; + tv.tv_sec = 30; + if (setsockopt(m_sock, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(struct timeval)) == -1) { + std::stringstream ss; + ss << "Could not set socket recv timeout: " << strerror(errno); + throw std::runtime_error(ss.str()); + } + if (connect(m_sock, (struct sockaddr*)&addr, sizeof(addr)) == -1) { std::stringstream ss; ss << "Could not connect to " << hostname << ":" << port << " :" << strerror(errno); |