summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordimitri staessens <dimitri.staessens@ugent.be>2017-10-12 18:12:05 +0200
committerdimitri staessens <dimitri.staessens@ugent.be>2017-10-13 10:03:47 +0200
commit7a98128e053ccd59203757982f7332ed5e4568ea (patch)
tree8933b54692dabb4f8713d3e0f1689b49a1fae0ea /src
parent281eaf854247703ed36725ab9dbef3a11d860c5c (diff)
downloadouroboros-7a98128e053ccd59203757982f7332ed5e4568ea.tar.gz
ouroboros-7a98128e053ccd59203757982f7332ed5e4568ea.zip
lib: Re-enable multi-block support
Multi-block support was forgotten during the update of the build system. This enables it again and fixes some bugs when it is disabled and larger SDUs are sent.
Diffstat (limited to 'src')
-rw-r--r--src/lib/CMakeLists.txt2
-rw-r--r--src/lib/config.h.in1
-rw-r--r--src/lib/dev.c2
-rw-r--r--src/tools/cbr/cbr_client.c4
4 files changed, 7 insertions, 2 deletions
diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt
index 6ab5ebc8..00670f65 100644
--- a/src/lib/CMakeLists.txt
+++ b/src/lib/CMakeLists.txt
@@ -165,6 +165,8 @@ set(SHM_RDRB_NAME "/${SHM_PREFIX}.rdrb" CACHE INTERNAL
"Name for the main POSIX shared memory buffer")
set(SHM_RDRB_BLOCK_SIZE "sysconf(_SC_PAGESIZE)" CACHE STRING
"SDU buffer block size, multiple of pagesize for performance")
+set(SHM_RDRB_MULTI_BLOCK true CACHE BOOL
+ "SDU buffer multiblock SDU support")
set(SHM_RBUFF_LOCKLESS 0 CACHE BOOL
"Enable shared memory lockless rbuff support")
diff --git a/src/lib/config.h.in b/src/lib/config.h.in
index a85ce7b4..40ac945d 100644
--- a/src/lib/config.h.in
+++ b/src/lib/config.h.in
@@ -27,6 +27,7 @@
#define SYS_MAX_FLOWS @SYS_MAX_FLOWS@
#cmakedefine SHM_RBUFF_LOCKLESS
+#cmakedefine SHM_RDRB_MULTI_BLOCK
#define SHM_RBUFF_PREFIX "@SHM_RBUFF_PREFIX@"
#define SHM_LOCKFILE_NAME "@SHM_LOCKFILE_NAME@"
diff --git a/src/lib/dev.c b/src/lib/dev.c
index 9cb6f2ed..e6e5b4d4 100644
--- a/src/lib/dev.c
+++ b/src/lib/dev.c
@@ -1095,6 +1095,8 @@ ssize_t flow_write(int fd,
DU_BUFF_TAILSPACE,
buf,
count);
+ if (idx < 0)
+ return idx;
pthread_rwlock_rdlock(&ai.lock);
}
diff --git a/src/tools/cbr/cbr_client.c b/src/tools/cbr/cbr_client.c
index decf6f96..79425ff2 100644
--- a/src/tools/cbr/cbr_client.c
+++ b/src/tools/cbr/cbr_client.c
@@ -102,7 +102,7 @@ int client_main(char * server,
ts_add(&end, &intv, &end);
memcpy(buf, &seqnr, sizeof(seqnr));
- if (flow_write(fd, buf, size) == -1) {
+ if (flow_write(fd, buf, size) < 0) {
stop = true;
continue;
}
@@ -120,7 +120,7 @@ int client_main(char * server,
} else { /* flood */
while (!stop) {
clock_gettime(CLOCK_REALTIME, &end);
- if (flow_write(fd, buf, (size_t) size) == -1) {
+ if (flow_write(fd, buf, (size_t) size) < 0) {
stop = true;
continue;
}