summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Staessens <[email protected]>2018-03-15 21:14:41 +0100
committerSander Vrijders <[email protected]>2018-03-16 12:05:40 +0100
commit4e775400564cc02b51978dc2671c126ff8da5e9d (patch)
treeda32085328ab436bfc74ce11b7cde17e745e2c84
parent7602d165397aae3fc83e3a7b1efe1c0df2044572 (diff)
downloadouroboros-4e775400564cc02b51978dc2671c126ff8da5e9d.tar.gz
ouroboros-4e775400564cc02b51978dc2671c126ff8da5e9d.zip
tools: Use non-blocking read in servers
The oping and ocbr servers were using non-blocking read/writes. This caused writes to fail on high-performance tests if the buffer got full, instead of waiting for a slot in the buffer. The write failure caused the server to quit. This fixes the tools by setting the I/O to blocking write and non-blocking read. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
-rw-r--r--src/tools/ocbr/ocbr_server.c2
-rw-r--r--src/tools/oping/oping_server.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/tools/ocbr/ocbr_server.c b/src/tools/ocbr/ocbr_server.c
index 874155ed..3004d77c 100644
--- a/src/tools/ocbr/ocbr_server.c
+++ b/src/tools/ocbr/ocbr_server.c
@@ -100,7 +100,7 @@ static void handle_flow(int fd)
alive = iv_start;
ts_add(&iv_start, &intv, &iv_end);
- fccntl(fd, FLOWSFLAGS, FLOWFNONBLOCK);
+ fccntl(fd, FLOWSFLAGS, FLOWFRNOBLOCK | FLOWFRDWR);
while (!stop) {
clock_gettime(CLOCK_REALTIME, &now);
diff --git a/src/tools/oping/oping_server.c b/src/tools/oping/oping_server.c
index e91b6f10..391da197 100644
--- a/src/tools/oping/oping_server.c
+++ b/src/tools/oping/oping_server.c
@@ -142,7 +142,7 @@ void * accept_thread(void * o)
server.times[fd] = now;
pthread_mutex_unlock(&server.lock);
- fccntl(fd, FLOWSFLAGS, FLOWFNONBLOCK | FLOWFRDWR);
+ fccntl(fd, FLOWSFLAGS, FLOWFRNOBLOCK | FLOWFRDWR);
}
return (void *) 0;