diff options
| author | Dimitri Staessens <dimitri@ouroboros.rocks> | 2026-08-16 18:15:26 +0000 |
|---|---|---|
| committer | Sander Vrijders <sander@ouroboros.rocks> | 2026-08-31 08:31:45 +0200 |
| commit | 63fc20aee272482a337513786e83f82c2e0e4c99 (patch) | |
| tree | 97eb2037b97c146dee536f75f7c384424f389679 /src | |
| parent | c88151f46719816afed7fb08c2dafce696595bdd (diff) | |
| download | ouroboros-63fc20aee272482a337513786e83f82c2e0e4c99.tar.gz ouroboros-63fc20aee272482a337513786e83f82c2e0e4c99.zip | |
ipcpd: Don't drop DT flows on -EAGAIN
The scheduler was dropping DT flows when they were momentarily empty
(-EAGAIN). Now it will continue to the next flow and only drop on hard
errors.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'src')
| -rw-r--r-- | src/ipcpd/unicast/psched.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/ipcpd/unicast/psched.c b/src/ipcpd/unicast/psched.c index 01c4b066..dce85120 100644 --- a/src/ipcpd/unicast/psched.c +++ b/src/ipcpd/unicast/psched.c @@ -135,6 +135,7 @@ static uint64_t dsched_serve(struct dsched * d, uint64_t dmin = 0; size_t i; int fd; + int ret; time_t wait; bool served; @@ -151,7 +152,13 @@ static uint64_t dsched_serve(struct dsched * d, continue; } - if (sched->read(fd, &spb) < 0) { + ret = sched->read(fd, &spb); + if (ret == -EAGAIN) { /* empty now, keep it */ + ++i; + continue; + } + + if (ret < 0) { dsched_untrack(d, fd); continue; } |
