diff options
author | dimitri staessens <dimitri.staessens@ugent.be> | 2017-10-12 18:12:05 +0200 |
---|---|---|
committer | dimitri staessens <dimitri.staessens@ugent.be> | 2017-10-13 10:03:47 +0200 |
commit | 7a98128e053ccd59203757982f7332ed5e4568ea (patch) | |
tree | 8933b54692dabb4f8713d3e0f1689b49a1fae0ea /src | |
parent | 281eaf854247703ed36725ab9dbef3a11d860c5c (diff) | |
download | ouroboros-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.txt | 2 | ||||
-rw-r--r-- | src/lib/config.h.in | 1 | ||||
-rw-r--r-- | src/lib/dev.c | 2 | ||||
-rw-r--r-- | src/tools/cbr/cbr_client.c | 4 |
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; } |