summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2023-11-22try to understand where the wakeups came fromHEADloopFrediano Ziglio3-5/+76
2023-11-22stats: add statistics for queue timesFrediano Ziglio4-2/+89
2023-11-22syntax-check: Check ENABLE_EXTRA_CHECKS is not used incorrectlyFrediano Ziglio1-0/+8
Usually configuration macros are defined to 0 or undefined. For this reason these macros are sometimes checked using #if and sometimes with #ifndef/#ifdef. As this macro is always defined with 0 or 1 it makes no sense to check if defined or not so check the code to avoid this mistake. Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
2023-11-22test-listen: Use OpenSSL BIO instead of GIO libraryFrediano Ziglio4-91/+63
test-listen using GIO had issues running under CI for a while. GIO is reading some desktop configuration so it's not very CI friendly. So instead of using GIO use OpenSSL BIO. The code does not get much bigger or complicated. We are already using OpenSSL so we are not adding dependencies. This fixes CI for Fedora 39 (just released and available on docker). This allowed to remove an old workaround for GIO in .gitlab-ci.yml (cfr commit 89edf80821acaaf1a9287fdb682faa12e680de4f "ci: Workaround an issue with GLib on Fedora 30") Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2023-11-15red-stream: Fix typo in commentFrediano Ziglio1-1/+1
renogotiation -> renegotiation Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2023-11-15gstreamer-encoder: Use an env var to override converter formatVivek Kasireddy2-1/+41
If we use the x264enc encoder to encode a stream, then videoconvert would convert the BGRx data into Y444, which is the preferred format for x264enc. However, some decoders particularly the ones that are h/w based cannot work with Y444 if it was the format used by the encoder. Therefore, to address these situations, we need a way to override the format used during the encoding stage which can be accomplished by using the environment variable introduced in this patch: SPICE_CONVERTER_PREFERRED_FORMAT. For example, using NV12 as the output format for the videoconvert element would allow us to pair a s/w based encoder (such as x264enc) with a h/w based decoder (such as msdkh264dec) for decoding the stream as most h/w based decoders only work with NV12 format given its popularity. Note that choosing an encoder format such as NV12 over Y444 would probably result in decreased video quality although it would be compatible with more decoders. Ideally, the client and server need to negotiate a suitable format dynamically but the current capabilities do not allow for such exchange. Cc: Frediano Ziglio <freddy77@gmail.com> Cc: Dongwon Kim <dongwon.kim@intel.com> Based-on-patch-by: Hazwan Arif Mazlan <hazwan.arif.mazlan@intel.com> Signed-off-by: Jin Chung Teng <jin.chung.teng@intel.com> Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com> Acked-by: Frediano Ziglio <freddy77@gmail.com>
2023-09-17build: Remove support for GStreamer 0.10Frediano Ziglio8-190/+16
Deprecated since 2016. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2023-05-30ci: Do not deep clone spice-protocol repositoryFrediano Ziglio1-1/+1
Same some network traffic, we don't need to clone entire git repository history. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2023-05-30ci: Add "setup" subcommand to meson call to avoid warningFrediano Ziglio1-7/+7
Newer meson output a warning if "setup" is not provided. Remove that warning. Note that Windows build was not changed due to a bug in mingw-meson script causing duplication of arguments. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2023-05-30ci: Test some more flags for meson-optionsFrediano Ziglio1-1/+1
"lz4" and "tests" flags are by default "true", test we can build if they are "false". Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2023-05-30ci: Update makecheck-windows job to MesonFrediano Ziglio4-6/+9
Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2023-05-30ci: Update makecheck-centos jobFrediano Ziglio1-8/+8
Update to stream9 instead of stream8. Move to Meson instead of Autoconf as build system. Remove libcacard-devel, not available. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2023-05-30smartcard: Fix compiling for Windows platformBiswapriyo Nath2-0/+3
This fixes the following compiler error while targeting Windows platform. ../../server/smartcard.cpp:20:10: fatal error: arpa/inet.h: No such file or directory 20 | #include <arpa/inet.h> | ^~~~~~~~~~~~~ Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com> Acked-by: Frediano Ziglio <freddy77@gmail.com>
2023-05-26server: add SSL_OP_NO_RENEGOTIATION fallback pathorbea1-0/+4
With LibreSSL SSL_OP_NO_CLIENT_RENEGOTIATION is opaque which is not compatible with the OpenSSL 1.0.2 and earlier code path in red-stream.cpp while SSL_OP_NO_RENEGOTIATION is not yet defined for the newer OpenSSL code path in reds.cpp. So with OpenSSL 1.1.0 and later if SSL_OP_NO_RENEGOTIATION is undefined and SSL_OP_NO_CLIENT_RENEGOTIATION is defined then define the former as the latter. This will allow the build to succeed with LibreSSL 3.7.2 and in the future when newer LibreSSL versions add SSL_OP_NO_RENEGOTIATION that code path will then be used automatically. Signed-off-by: orbea <orbea@riseup.net> Acked-by: Frediano Ziglio <freddy77@gmail.com>
2023-05-11build: Prepare for 0.15.2 releaseFrediano Ziglio3-2/+9
Really minor release. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2023-05-11build: Add missing file to distributionFrediano Ziglio2-0/+10
Required to build using Meson. Also add a check to "distcheck" job to test you can build with Meson from distribution file. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2023-05-10ci: Remove broken OpenSSL configuration to fix makecheck-windows jobFrediano Ziglio1-0/+2
The configuration installed with mingw64-openssl cause OpenSSL to fail to initialize during execution with Wine. Delete it and use the compiled in options. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2023-05-10Update OpenSSL callFrediano Ziglio1-2/+1
SSLv23_method call was deprecated in favour of TLS_method. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2023-05-10ci: Fix compile error using new GStreamer libraryFrediano Ziglio1-0/+8
Using Fedora 38 the compilation fails due to this warning: In file included from /usr/include/gstreamer-1.0/gst/video/video.h:202, from ../../server/gstreamer-encoder.c:27: /usr/include/gstreamer-1.0/gst/video/video-sei.h:39:21: error: 'H265_MISP_NANOSECONDS' defined but not used [-Werror=unused-const-variable=] 39 | static const guint8 H265_MISP_NANOSECONDS[] = { | ^~~~~~~~~~~~~~~~~~~~~ Ignore the warning for Gstreamer includes. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2023-05-10ci: Fix check-valgrind jobFrediano Ziglio2-1/+12
Avoid downgrading gstreamer1-plugins-good, no longer necessary. Add suppression for pthread_create leak. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2023-05-10ci: Add missing packages for CentOS jobFrediano Ziglio1-1/+1
"cmp" and "diff" were not available. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2023-05-10ci: Fix websocket-autobahn jobFrediano Ziglio1-0/+1
Last wsaccel library fails to install on the container. This test has not been maintained for a while so libraries are getting pretty old anyway. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2023-05-10build: Update syntax for Autoconf scriptFrediano Ziglio1-11/+8
Used autoupdate and some manual changes. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2023-05-10syntax-check: Add missing contributor name to AUTHORSFrediano Ziglio1-0/+1
For previous commit a5d1d957d6c16e3fe213e10d0cab4bfe2504ba91 (cfr "sound: Fix pointer arithmetic in snd_record_handle_write()") Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2022-10-22sound: Fix pointer arithmetic in snd_record_handle_write()Volker Rümelin1-1/+1
The variable 'now' counts in audio sample frames, but the variable 'data' is of type uint8_t *. Multiply 'now' by the size of an audio sample frame to get the correct source pointer. This improves the quality of audio recordings in QEMU a little bit. Fixes: 5d5a7bd181 ("sound: Avoid cast that could cause alignment problems") Signed-off-by: Volker Rümelin <vr_qemu@t-online.de> Acked-by: Frediano Ziglio <freddy77@gmail.com>
2022-09-13build: Prepare for 0.15.1 releaseFrediano Ziglio3-2/+17
Lot of build and compatibility updates since 0.15. See CHANGELOG.md. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2022-08-03Temporary workaround issue with gstreamer1-plugins-good packageFrediano Ziglio1-0/+1
Downgrading this package seems to solve Valgrind tests. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2022-08-03test-leaks: Load DH parameters to test this part of codeFrediano Ziglio3-1/+17
Just loding the file is enough to test code in reds.cpp. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2022-08-03Adapt to new OpenSSL with less conditional codeFrediano Ziglio2-71/+57
Reduce conditional code using new OpenSSL interface and implement missing APIs. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2022-08-03Fix OpenSSL 3.0 API deprecationsMarc-André Lureau2-13/+91
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-07-19Generate a random connection ID with g_random_int()Marc-André Lureau1-1/+1
Spice uses rand() to generate the random id, but qemu (at least in the case of qemu-system-x86) fails to initialize the RNG seed (with e.g. srand()). The result is, that every SPICE session started (by e.g. libvirtd) has the same client_id. Usually, this is not a problem, but running something like a SPICE proxy, relying on the client_id to correctly route connections, this creates problems. Fixes: https://gitlab.com/qemu-project/qemu/-/issues/163 Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-07-19ci: Fix WindowsFrediano Ziglio1-1/+2
Provides LANG to avoid error detecting encoding. Install all Wine package, installing only core is not enough. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2022-07-19Fix C++ compatibility issueFrediano Ziglio1-1/+7
Remove deprecation warnings like In file included from ../../server/char-device.cpp:28: ../../server/safe-list.hpp:108:43: error: 'template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator' is deprecated [-Werror=deprecated-declarations] 108 | class safe_list<T>::iterator: public std::iterator<std::forward_iterator_tag, T> | ^~~~~~~~ Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2022-07-19Exclude a warning causing new compiler to failFrediano Ziglio2-0/+2
Due to 0-size array you can have warnings like c++ -Iserver/libspice-server.so.1.14.1.p -Iserver -I../server -I. -I.. -Isubprojects/spice-common -I../subprojects/spice-common -Isubprojects/spice-common/common -I/usr/include/spice-1 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/pixman-1 -I/usr/include/opus -I/usr/include/cacard -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/PCSC -I/usr/include/gstreamer-1.0 -I/usr/include/orc-0.4 -fvisibility=hidden -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -Werror -O3 -DSPICE_SERVER_INTERNAL '-DG_LOG_DOMAIN="Spice"' -Wno-sign-compare -Wno-unused-parameter -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_38 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_38 -fno-exceptions -Wno-suggest-final-methods -Wno-suggest-final-types -Wno-array-bounds -Wno-narrowing -Wno-missing-field-initializers -Wno-deprecated-declarations -Wshadow -fPIC -pthread -MD -MQ server/libspice-server.so.1.14.1.p/red-channel-client.cpp.o -MF server/libspice-server.so.1.14.1.p/red-channel-client.cpp.o.d -o server/libspice-server.so.1.14.1.p/red-channel-client.cpp.o -c ../server/red-channel-client.cpp In file included from /usr/include/c++/12/bits/shared_ptr_atomic.h:33, from /usr/include/c++/12/memory:78, from ../server/utils.hpp:24, from ../server/red-pipe-item.h:27, from ../server/red-channel-client.h:24, from ../server/red-channel-client.cpp:37: In member function 'std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::operator++() [with _ITp = int]', inlined from 'void red::shared_ptr_add_ref(shared_ptr_counted*)' at ../server/utils.hpp:280:5, inlined from 'red::shared_ptr<T>::shared_ptr(T*) [with T = RedChannelClient]' at ../server/utils.hpp:143:31, inlined from 'void RedChannelClient::receive()' at ../server/red-channel-client.cpp:1123:52, inlined from 'void red_channel_client_event(int, int, RedChannelClient*)' at ../server/red-channel-client.cpp:739:21: /usr/include/c++/12/bits/atomic_base.h:385:34: error: 'unsigned int __atomic_add_fetch_4(volatile void*, unsigned int, int)' writing 4 bytes into a region of size 0 overflows the destination [-Werror=stringop-overflow=] 385 | { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2022-07-19Update spice-common submoduleFrediano Ziglio1-0/+0
This brings in the following changes: Frediano Ziglio (4): Find Python3 installation correctly on MacOS build: Correctly check for Python modules ci: Set WINEPATH during Windows build Replace EVP_PKEY_cmp with EVP_PKEY_eq Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2022-07-19Fix std::array<> has initializer but incomplete typeMarc-André Lureau2-0/+3
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2022-03-24ci: Workaround a bug in Fedora 35 mingw64-make scriptFrediano Ziglio1-1/+1
mingw64-make is a bash script that wraps make command passing additional arguments and setup in order to cross compiler for MingW (to target Windows). In Fedora 35 the script passes the arguments we provide twice. So if we pass (like in this case) "LOG_COMPILE=wine -C server check" the final make command will receive "LOG_COMPILE=wine -C server check LOG_COMPILE=wine -C server check" arguments. This for some arguments it's not a problem but passing "-C <dir>" twice causes make to attempt to change directory twice. This causes a make: *** server: No such file or directory. Stop. error. Use cd command before invoking mingw64-make to avoid having to pass "-C" option. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2022-03-24ci: Set WINEPATH before executing tests for WindowsFrediano Ziglio1-0/+1
Without it on Fedora 35 Wine is not able to find DLLs installed on the system. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2022-03-23ci: Exclude a system leak in Fedora 35Frediano Ziglio1-0/+11
This leak causes a CI failure running test-listen test with Valgrind. Note that "check-valgrind" CI job will still fail but with less issues. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2022-03-23ci: centos: run on centos stream 8 image from quay.ioUri Lublin1-1/+1
The default centos:latest image can not install packages anymore. The makecheck-centos test fails with the following error: $ dnf install -y 'dnf-command(config-manager)' Error: Failed to download metadata for repo 'appstream' \ Cannot prepare internal mirrorlist: No URLs in mirrorlist Replace it with a centos stream 8 image from quay.io to make the makecheck-centos test pass Signed-off-by: Uri Lublin <uril@redhat.com>
2022-03-23Fix build with gstreamer 1.20.xAntonio Larrosa2-0/+5
gstreamer-plugins-base 1.20 includes a new member in the GstAppSinkCallbacks struct: gboolean (*new_event) (GstAppSink *appsink, gpointer user_data); So it has to be initialized in order to build test-gst.cpp successfully. (added in https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/0a657d6db5ba912b13092a907ea507638cd01cf9 ) Acked-by: Frediano Ziglio <freddy77@gmail.com>
2022-03-21Revert "reds: start QXL devices if VM is running" (fix race)Christian Ehrhardt1-3/+0
Due to reds->vm_running being initialized to TRUE (since c302e12c "spice.h: add entries for tracking vm state") the assumption in c23cbd6f "reds: start QXL devices if VM is running" was wrong and we can't check on vm_running until that initialization isn't on TRUE (it is that way for backward compatibility). Without this revert on qemu initializing spice we will have the display_init side of qemu not yet ready and therefore respond badly when spice sends an event as reaction to `red_qxl_start`: "qxl_send_events: spice-server bug: guest stopped, ignoring." At least with qemu > v2.0 as a spice consumer is not showing issues as `red_qxl_start` will be called just after the qemu side is ready `qemu_spice_display_start` -> `spice_server_vm_start` ... `red_qxl_start`. Therefore - for now to avoid the current regression - Revert c23cbd6f "reds: start QXL devices if VM is running" until that old (2012) initialization is updated (probably an ABI change and therefore taking some time). Fixes: https://gitlab.freedesktop.org/spice/spice/-/issues/64 This reverts commit c23cbd6fa821fea8ac4ed97ca679afebe2333c8c.
2022-01-29ci: Fix compile error using new GStreamer libraryFrediano Ziglio1-1/+1
Using Fedora 35 the compilation fails due to this warning: ../server/gstreamer-encoder.c: In function 'create_pipeline': ../server/gstreamer-encoder.c:994:5: error: braces around scalar initializer [-Werror] 994 | GstAppSinkCallbacks appsink_cbs = {NULL, NULL, &new_sample, {NULL}}; | ^~~~~~~~~~~~~~~~~~~ ../server/gstreamer-encoder.c:994:5: note: (near initialization for 'appsink_cbs.new_event') ../server/gstreamer-encoder.c:994:5: error: missing initializer for field '_gst_reserved' of 'GstAppSinkCallbacks' [-Werror=missing-field-initializers] In file included from ../server/gstreamer-encoder.c:26: /usr/include/gstreamer-1.0/gst/app/gstappsink.h:81:16: note: '_gst_reserved' declared here 81 | gpointer _gst_reserved[GST_PADDING - 1]; | ^~~~~~~~~~~~~ cc1: all warnings being treated as errors Change structure initialisation to avoid the warning. The same syntax is already used in server/tests/test-gst.cpp. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2022-01-04Report name/uuid and agent connected tokens support.Geoffrey McRae2-0/+3
A well behaved client implementing the SPICE protocol should check to see if the server supports the capabilities it needs. This implementation of the spice-server supports `SPICE_MAIN_CAP_NAME_AND_UUID` and ` SPICE_MAIN_CAP_AGENT_CONNECTED_TOKENS` so it should report this to the client. Acked-by: Frediano Ziglio <freddy77@gmail.com>
2021-11-11test-leaks: fix the test with OpenSSL3Simon Chopin2-0/+6
In OpenSSL3, the SSL_accept call now emits proper errors, which we dump *before* emitting the expected "SSL_accept failed" error message. The g_test_expect_message framework doesn't really allow us to discard messages AFAICT, so instead we add a new expectation with fairly loose criteria. Fixes #63 Signed-off-by: Simon Chopin <simon.chopin@canonical.com> Acked-by: Frediano Ziglio <freddy77@gmail.com>
2021-09-28clang-tidy: use C++ castingRosen Penev32-424/+453
Found with google-readability-casting Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-08-26Remove useless typedefsFrediano Ziglio7-46/+40
Just use forward declaration if needed. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2021-08-26Remove some constant usage, use size from arraysFrediano Ziglio3-7/+7
Makes more clear that we are scanning entire arrays or checking for some container boundaries. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2021-08-26reds: Use proper maximum constant for time_tFrediano Ziglio1-1/+2
Some systems use 32-bits, other 64-bits. Some systems use signed integers, other unsigned integers. Compute maximum constant based on time_t type. Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
2021-08-26clang-tidy: replace C headers with C++Rosen Penev16-55/+68
Found with modernize-deprecated-headers Signed-off-by: Rosen Penev <rosenp@gmail.com> Acked-by: Frediano Ziglio <freddy77@gmail.com>