Commit Graph

130 Commits (8f979c9928409ef62f84fd4ac7aec05d4357c4db)

Author SHA1 Message Date
Andri Yngvason 8f979c9928 Pass nvnc_client to cut-text callback 2022-11-20 22:42:01 +00:00
Andri Yngvason 79f26924ea Add functions for listing clients 2022-11-20 12:03:18 +00:00
Andri Yngvason 3647457f6d server: Properly handle stream write errors
This fixes leaked rcbufs when clients disconnect.
2022-11-05 13:22:14 +00:00
Andri Yngvason 935ce4e98d Remove push/pull encoder interface
Think of it as a failed experiment.
2022-11-05 10:15:56 +00:00
Jim Ramsay 036b549fd8 Record authenticated username for each connected client
Signed-off-by: Jim Ramsay <jramsay@redhat.com>
2022-11-04 09:41:14 +00:00
Jim Ramsay 86bd2ced85 Record hostname for each connected client
Signed-off-by: Jim Ramsay <jramsay@redhat.com>
2022-11-04 09:41:14 +00:00
Andri Yngvason 8f2d137046 server: Make encoder inert when closing client 2022-10-30 12:44:05 +00:00
Andri Yngvason baaf84eab9 Reference count encoders 2022-10-30 12:44:05 +00:00
Andri Yngvason 48b070af5a server: Free cursor buffers on close 2022-10-30 12:44:05 +00:00
Andri Yngvason efb5ab956c Add debug logging for tcp address binding 2022-10-24 20:55:38 +00:00
Andri Yngvason 3588670c81 server: Replace abort() with NVNC_LOG_PANIC 2022-10-24 09:16:59 +00:00
Jeroen Hofstee 5b2a062f0e don't resize an encoder if it is not set 2022-10-15 09:59:05 +00:00
Andri Yngvason 19538c9435 server: Fix encoding selection for sw frames
This fixes encoding selection when not using the --gpu option. Before this
change, raw encoding would always be selected.

Reported-by: Consolatis
Suggested-by: Consolatis
2022-08-23 22:34:56 +00:00
Philipp Zabel affd7f3f6d Allow to query client-side cursor support
Add a function nvnc_client_supports_cursor() to enable the API user to
make an informed decision whether nvnc_set_cursor() can be expected to
make the client draw the cursor, or whether it has to be rendered into
the framebuffer.
2022-07-29 08:37:29 +00:00
Andri Yngvason 528eac51a3 Fix jpeg quality setting
The encoding identifiers are supposed to be interpreted as a range. I
interpreted the upper and lower limits as two discrete quality settings
instead, which is wrong.
2022-07-10 12:41:20 +00:00
Jan Beich 4baeaa43fd server: add missing header after f20ffb5e1e
src/server.c:1119:17: error: use of undeclared identifier 'IPPROTO_TCP'
        setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one));
                       ^
2022-07-09 20:04:53 +00:00
Andri Yngvason 362918a8cf Integrate libav into logging framework 2022-07-09 17:15:35 +00:00
Andri Yngvason f20ffb5e1e server: Turn off Nagle's algorithm 2022-07-09 16:29:18 +00:00
Andri Yngvason d86af88573 server: Log encoder choices 2022-07-09 16:28:09 +00:00
Andri Yngvason b8122725e2 server: Reset encoder callback on frame done 2022-06-29 11:36:05 +00:00
Andri Yngvason 8bde568112 server: Add dtrace probes with pts 2022-06-26 13:57:32 +00:00
Andri Yngvason e6a12ffda7 server: Promote some log levels 2022-06-25 16:32:05 +00:00
Andri Yngvason ad4a834cfc Use new logging system 2022-06-25 16:15:32 +00:00
Jan Beich da290abc25 server: consistently use builtin byteswap after 53f88894d5
src/server.c:48:10: fatal error: 'byteswap.h' file not found
 #include <byteswap.h>
          ^~~~~~~~~~~~
2022-04-24 17:56:03 +00:00
Andri Yngvason 53f88894d5 Add presentation timestamps 2022-04-14 18:10:09 +00:00
Andri Yngvason 3ea068b90c server: Decrement n_pending_requests after dispathing encoding job
The request is as good as handled at that point. We don't want to squeeze
in another frame that the client didn't request before the encoding job
finishes. That would cause a negative pending count and the client would
stop getting updates.
2022-04-03 20:52:24 +00:00
Andri Yngvason aca09358ea Add back damage argument to nvnc_set_cursor
It's better to keep feeding buffers to keep buffers in rotation for damage
tracking purposes.
2022-02-21 21:43:41 +00:00
Andri Yngvason 9c02e6afaf Implement hiding cursors 2022-02-20 14:48:24 +00:00
Andri Yngvason 1553c88f5e Add width and height arguments to nvnc_set_cursor 2022-02-19 23:06:15 +00:00
Andri Yngvason 48baf74560 Implement client side cursor rendering 2022-02-06 16:33:46 +00:00
Andri Yngvason c5a5437a9e server: Keep a count of clients that use damage 2021-12-26 13:10:41 +00:00
Andri Yngvason 90f61f03c6 Plug open h264 2021-12-26 13:10:41 +00:00
Andri Yngvason 65c0e91c37 Move update header out of encoders 2021-12-12 16:05:29 +00:00
Andri Yngvason a7241658b0 Create encoder abstraction 2021-12-11 21:03:18 +00:00
Andri Yngvason 1b7b51af44 Add a cleanup callback to nvnc_set_userdata 2021-09-04 21:21:23 +00:00
Andri Yngvason 41c9ebe960 server: process fb update requests in fb update request message handler
Otherwise, the client won't get the initial frame
2021-09-04 21:21:23 +00:00
Andri Yngvason f566105ab5 Remove nvnc_set_render_fn 2021-09-04 21:21:23 +00:00
Andri Yngvason d63feadeab Notify the user when an fb is released 2021-09-04 21:21:23 +00:00
Ryan Farley b320723049 Support UNIX sockets
Adds support for UNIX domain sockets with `nvnc_open_unix()` function.
Closes #1.
2021-04-04 20:24:33 +00:00
Andri Yngvason 1359b987a3 Translate XT keycodes to linux keycodes 2020-11-29 20:48:31 +00:00
Andri Yngvason f547ed72f9 Decrement pending requests when sending pseudo frames 2020-11-29 18:36:48 +00:00
Andri Yngvason ea98af75de Notify client about qemu key capability 2020-11-29 18:36:48 +00:00
Andri Yngvason dbe35bc3ad Add qemu extended key events 2020-11-29 18:36:48 +00:00
Andri Yngvason e69006fc48 tight: Hold fb and client refs while encoding 2020-09-27 17:17:22 +00:00
Andri Yngvason af38a643d9 tight: Don't block 1 worker while encoding tiles 2020-09-27 12:37:00 +00:00
Andri Yngvason 9e84000e0a server: Extract finish_fb_update() from on_client_update_fb_done() 2020-09-26 22:29:02 +00:00
Andri Yngvason add8d8e8db server: Move pixel format conversion out of do_client_update_fb 2020-09-26 22:17:02 +00:00
Andri Yngvason 7e2b4fef8c server: Refactor schedule_client_update_fb 2020-09-26 22:00:53 +00:00
Scott Moreau 81a8ba9d0e server: Handle cut text messages of up to 10MB 2020-09-25 21:47:59 +00:00
Scott Moreau 783807c0b9 server: Fix possible crash on fragmented packet messages
The packets sent from the client especially for client cut text,
are typically sent in two packets, one for the message containing
the type and length and the other for the actual data. Sometimes
the first message is read but we still don't have the data yet.
We need to continue reading data to use the structure but this
revealed a bug. The client event handler was calling memmove()
with buffer_index as the size argument. This meant that it was
copying the wrong amount of data, resulting in garbage at the
end of the expected data. This patch fixes the problem by first
subtracting buffer_index from buffer_len and then moving buffer_len
worth of data, which is what was read into msg_buffer. The problem
possibly manifested itself with random crashes, after reading
random data.
2020-09-21 21:15:45 +00:00