diff options
author | David Robillard <d@drobilla.net> | 2020-02-26 21:13:44 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2020-02-26 21:13:44 +0100 |
commit | e8df60dc3647c9deac999a7d3ccf73354ab939c4 (patch) | |
tree | fdf2e4bc4c8c0179b5466174000264fcbe52ee31 /src/server/ControlBindings.cpp | |
parent | 96840d3fc46ec6531a3c5b53eee1c0713723f9a7 (diff) | |
download | ingen-e8df60dc3647c9deac999a7d3ccf73354ab939c4.tar.gz ingen-e8df60dc3647c9deac999a7d3ccf73354ab939c4.tar.bz2 ingen-e8df60dc3647c9deac999a7d3ccf73354ab939c4.zip |
Set up serd to read directly from socket without a FILE intermediary
This was problematic because using fdopen() conflicts with poll(). If the FILE
ends up reading more than is actually processed by serd, then poll will not
fire because the socket file descriptor has been fully read, even though there
is pending input in the FILE object (which is buffered).
Avoid this by using a custom read function and calling recv() directly. In
retrospect, this was stupid, but it seemed convenient to be able to use the
handy built-in support for reading from a FILE in serd.
Now, the client and server are using send() and recv() directly on the socket,
as things should be. I am not sure if MSG_WAITALL is the best idea here, or if
it's really important at all, but it seems like a good idea.
Diffstat (limited to 'src/server/ControlBindings.cpp')
0 files changed, 0 insertions, 0 deletions