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
Scott Moreau
6d29937e15
server: Add remaining support for simple copy/paste
...
- Add function to set callback for client_cut_text
- Add server_cut_text structure and function
This in conjunction with wayvnc #66 closes #4 .
2020-09-21 21:15:45 +00:00
Andri Yngvason
addcc50483
Bake version info into library
2020-07-26 11:43:29 +00:00
Andri Yngvason
b52f5cd6c9
Resize tight encoder on frame resize
2020-07-19 16:58:55 +00:00
Andri Yngvason
a0801f04e4
Implement server-side resizing
2020-07-19 11:54:39 +00:00
Andri Yngvason
eb4b9d71a4
Return failure if display buffer is not set in on_connect
2020-07-18 14:04:12 +00:00
Andri Yngvason
683776cdf0
server: Assert that a client has a stream open when processing a message
2020-07-16 18:14:52 +00:00
Andri Yngvason
33eda8c5d0
Always enable tight, encoding but allow disabling lossy tight encoding
2020-07-11 20:16:27 +00:00
Andri Yngvason
497f9adb29
tight: Re-implement with threads
2020-07-11 20:06:45 +00:00
Andri Yngvason
9b54f6d936
Clean up dispatch hander on exit
2020-07-06 16:43:53 +00:00
Andri Yngvason
7fb2215c0f
Use raw encoding by default if no encoding has been selected
...
This complies with the standard.
2020-05-31 22:56:27 +00:00
Andri Yngvason
569ad287c5
Fix version error handling
2020-05-29 20:18:05 +00:00
Stefan Agner
d2527e57f0
fix build warnings when building without tls
...
Fix trivial build warnings when building without TLS support.
2020-05-22 20:54:53 +00:00
Stefan Agner
8316994dfa
use static for functions not used outside this compile unit
...
Add static for all functions only used inside the individual compile
units. This helps the compiler to potentially inline these functions.
This allows to use neatvnc as a Meson subproject in Weston which has
-Wmissing-prototypes enabled by default.
2020-05-21 17:44:31 +00:00
Andri Yngvason
f3e09fd622
Prepare API for multi-display support
...
These changes are made now to make it possible to add multi-display
support in the future while keeping the public interface stable.
2020-04-12 18:16:19 +00:00
Andri Yngvason
737dd311a0
Remove nvnc_set_dimensions()
...
This information is now figured out based on the nvnc_fb passed into
nvnc_set_buffer()
2020-04-12 16:08:33 +00:00
Andri Yngvason
297e22b588
Don't render when a client is still encoding
2020-04-10 12:07:35 +00:00
Andri Yngvason
77b866096d
Redesign framebuffer update loop
...
Rendering may now only happen inside the rendering callback. The user is
also allowed to change out the entire buffer in the callback.
The callback is triggered by nvnc_damage_region(), nvnc_damage_whole()
and/or framebuffer update requests.
This fixes #26
2020-04-07 23:35:57 +00:00
Andri Yngvason
048b796ff5
Enable SO_REUSEADDR again
2020-04-06 18:29:17 +00:00
Andri Yngvason
1976221afe
Resolve host names in nvnc_open()
...
This fixes #23
2020-04-04 22:26:00 +00:00
Andri Yngvason
8fc5c18b28
Don't show partial frames to new clients
2020-04-04 14:00:03 +00:00
Andri Yngvason
f45f90ed9b
nvnc_fb: Add a mechanism for signaling that a frame is in use
2020-04-04 12:33:18 +00:00
Andri Yngvason
b0799f7490
server: Add dtrace probe for stream_send inside update_fb_done
2020-04-03 23:11:12 +00:00
Andri Yngvason
25626a9048
tight: Implement quality control
2020-04-03 20:09:26 +00:00
Andri Yngvason
17e0d6036f
tight: Implement bare minimum "basic" encoding
2020-04-03 00:18:54 +00:00
Andri Yngvason
cfb2abfc58
tight: Prepare for "basic" encoding method
2020-04-02 21:52:04 +00:00
Andri Yngvason
10a3fd6238
Add dtrace probes for framebuffer updates
2020-04-01 22:53:22 +00:00
Andri Yngvason
a77eb34fba
Spawn as many workers as there are CPU cores
2020-03-21 17:27:30 +00:00
Andri Yngvason
76e721c4cd
Replace libuv with aml
2020-03-21 16:59:10 +00:00
Andri Yngvason
7d2b295b4a
server: Read messages straight into message buffer
...
This avoids extra copying and removes a possible error condition that
would cause the connection to be closed
2020-01-25 16:42:10 +00:00
Andri Yngvason
547387f549
server: Close after sending VeNCrypt failure message
2020-01-25 16:04:04 +00:00
Andri Yngvason
b30a5516d3
server: Send the proper reason string on security handshake failure
2020-01-25 15:59:04 +00:00
Andri Yngvason
1687b8c701
server: Apply stream API change
2020-01-25 15:52:44 +00:00
Andri Yngvason
caf9fe0130
Remove unused code
2020-01-25 15:39:23 +00:00
Andri Yngvason
19e4e42036
Implement VeNCrypt with x509 plain authentication
2020-01-25 15:35:14 +00:00
Andri Yngvason
4ebd60b8cc
pixels: Delete useless code
2020-01-24 22:29:29 +00:00
Andri Yngvason
a80b314eea
server: Set the pixel format for the client if it hasn't specified one
2020-01-19 22:54:52 +00:00
Andri Yngvason
7fa074e60b
server: Close client if no frame encoding method is available
2020-01-19 21:27:17 +00:00
Andri Yngvason
ebfe4382ee
server: Use size_t for encoding indices
2020-01-19 19:17:15 +00:00
Scott Moreau
db6c063aea
Include sys/param.h for MIN definition
...
Fixes #11 .
2020-01-19 12:00:18 -07:00
Andri Yngvason
ad0ff6b27c
Make Tight encoding optional
2019-12-31 10:13:21 +00:00
Andri Yngvason
ee3f2fefff
server: Extract pixel format functions into pixels.c
2019-12-30 20:13:40 +00:00
Andri Yngvason
a0376f2fd4
Pass entire client structure to tight encoder
2019-12-30 17:48:22 +00:00
Andri Yngvason
d9f80ad196
server: Extract structure definitions into header
2019-12-30 17:22:19 +00:00
Andri Yngvason
8cd33d8a07
Add JPEG Tight encoding
2019-12-30 10:00:15 +00:00
Andri Yngvason
52f5510467
Send a correct reason string when disconnecting due to unsupported security type
2019-12-28 20:50:44 +00:00
Andri Yngvason
00450e0c9d
Clean up some memory leaks
2019-12-27 15:07:48 +00:00
Andri Yngvason
875cd5af7b
Stop reading from a client as soon as an error occurs on the socket
2019-12-27 13:57:40 +00:00
Andri Yngvason
bfb1cd9fc9
Don't buffer up multiple outgoing frames
...
It's pointless to send multiple frames in a single buffer. It just
overloads the client.
2019-12-23 12:11:00 +00:00
Andri Yngvason
4ebf4623cb
Fix read buffer and drop older outgoing frames
2019-12-23 09:33:29 +00:00
Andri Yngvason
80b1f3cb4c
Re-format using clang-format
2019-10-20 22:13:51 +00:00
Andri Yngvason
05ff0c1514
Don't send an update that hasn't been requested
2019-10-12 17:29:08 +00:00
Andri Yngvason
6dec7287f7
Tune deflate
2019-10-12 16:42:59 +00:00