If a client performs a non-blocking poll while no tokens were
available, FUSE/CUSE passes a nullptr as the pollhandle argument
to steve_poll(). Steve would previously push this nullptr into the
waiters queue.
Later, when a token became available, the server would wake this
"ghost" waiter, permanently reserving a token for a client that was
not actually waiting for it. This effectively leaks the token until
the client process exited.
Fix this by only queuing a waiter request if the pollhandle is
non-null (representing an actual sleeping client).
Signed-off-by: Florian Schmaus flow@gentoo.org