aboutsummaryrefslogtreecommitdiffstats
path: root/src/cli
diff options
context:
space:
mode:
authorJuraj Somorovsky <[email protected]>2016-11-19 21:58:18 +0100
committerJuraj Somorovsky <[email protected]>2016-11-19 21:58:18 +0100
commitacf1999cb85fc6bca83ac828b66593a6767174f7 (patch)
treefa41669cd94ffde178c3dbd0b838c377ea8ec2a4 /src/cli
parent1e21b64bb96815ebadfab892a73094c758db142d (diff)
TLS CBC functionality now exposed to the library developer. Useful for direct TLS CBC testing.
CLI TLS server now catches an exception if an invalid connection is received (Otherwise, the server always stopped working)
Diffstat (limited to 'src/cli')
-rw-r--r--src/cli/tls_server.cpp51
1 files changed, 31 insertions, 20 deletions
diff --git a/src/cli/tls_server.cpp b/src/cli/tls_server.cpp
index dd1c7f450..b1a5b0ec6 100644
--- a/src/cli/tls_server.cpp
+++ b/src/cli/tls_server.cpp
@@ -138,31 +138,42 @@ class TLS_Server final : public Command
{
while(!server.is_closed())
{
- uint8_t buf[4*1024] = { 0 };
- ssize_t got = ::read(fd, buf, sizeof(buf));
-
- if(got == -1)
+ try
{
- std::cout << "Error in socket read - " << strerror(errno) << std::endl;
- break;
- }
+ uint8_t buf[4*1024] = { 0 };
+ ssize_t got = ::read(fd, buf, sizeof(buf));
- if(got == 0)
- {
- std::cout << "EOF on socket" << std::endl;
- break;
- }
+ if(got == -1)
+ {
+ std::cout << "Error in socket read - " << strerror(errno) << std::endl;
+ break;
+ }
+
+ if(got == 0)
+ {
+ std::cout << "EOF on socket" << std::endl;
+ break;
+ }
- server.received_data(buf, got);
+ server.received_data(buf, got);
- while(server.is_active() && !pending_output.empty())
- {
- std::string output = pending_output.front();
- pending_output.pop_front();
- server.send(output);
+ while(server.is_active() && !pending_output.empty())
+ {
+ std::string output = pending_output.front();
+ pending_output.pop_front();
+ server.send(output);
- if(output == "quit\n")
- server.close();
+ if(output == "quit\n")
+ server.close();
+ }
+ }
+ catch(std::exception& e)
+ {
+ std::cout << "Connection1 problem: " << e.what() << std::endl;
+ if(is_tcp)
+ {
+ ::close(fd);
+ }
}
}
}