diff --git a/src/utils/channel.c b/src/utils/channel.c
index 8e55ae564872f1052494f78ddd62658b40d48394..a45247a71060503b55589655e2cd6711dd1bcd7f 100644 (file)
--- a/src/utils/channel.c
+++ b/src/utils/channel.c
size_t head;
size_t tail;
_Bool full;
+
+ _Bool shutdown;
};
/*
{
assert(chan);
- if (chan->full)
+ if (chan->full || chan->shutdown)
return -1;
else if (! data)
return 0;
break;
}
+ if (chan->shutdown) {
+ if (read_status)
+ status = EBADF;
+ break;
+ }
+
if (timeout) {
struct timespec abstime;
return status;
} /* sdb_channel_read */
+int
+sdb_channel_shutdown(sdb_channel_t *chan)
+{
+ if (! chan)
+ return -1;
+ chan->shutdown = 1;
+ return 0;
+} /* sdb_channel_shutdown */
+
/* vim: set tw=78 sw=4 ts=4 noexpandtab : */