Commit Graph

3433 Commits

Author SHA1 Message Date
Frediano Ziglio
dfe9fe9ebe test: Add vp9 support to GStreamer test
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2017-04-07 16:45:54 +01:00
Frediano Ziglio
e9035e5239 Attempt to create bitmap debug directory
The DUMP_BITMAP compile option enable some debugging code to
output image bitmaps in a subdirectory of /tmp.
However if this directory does not exists the server will crash
as not able to create a file in it.
Try to create directory before creating the file.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2017-04-07 16:45:54 +01:00
Frediano Ziglio
4725ec03b1 gstreamer: Remove some leaks if pipeline cannot be created
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2017-04-07 16:45:49 +01:00
Pavel Grunt
11e04a100d manual: Remove outdated GL acceleration info
No need to reference a copr. Everything has been merged and relevant
component versions are mentioned.

Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2017-04-07 08:55:03 +02:00
Pavel Grunt
609b03e45d manual: Update folder sharing instruction
Link to the folder with latest releases and remove outdate info about
the service registration.

Acked-by: Victor Toso <victortoso@redhat.com>
2017-04-07 08:54:04 +02:00
Christophe Fergeau
78c3dd4c18 Make various functions static
- glz_enc_dictionary_reset
- monitors_config_new
- red_channel_any_blocked
- red_channel_no_item_being_sent
- red_client_get_channel

are only used in the file where they are defined, so they can as well be
static.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-04-05 12:39:20 +02:00
Christophe Fergeau
27a9450d07 build-sys: Add configure check for TCP_KEEPIDLE
This is only available in newer FreeBSD releases (9.1 and later), and
will cause build errors or older versions

This fixes https://bugs.freedesktop.org/show_bug.cgi?id=99213

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-31 12:22:52 +02:00
Christophe Fergeau
eb9f69ed9a reds-stream: Introduce reds_stream_get_no_delay() helper
This new function removes one place outside of RedsStream which needs to
access RedsStream::socket

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-31 12:22:52 +02:00
Christophe Fergeau
5ca3d6ca50 net: Introduce red_socket_set_keepalive() helper
This allows to move some low-level code out of reds.c

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-31 12:22:52 +02:00
Christophe Fergeau
b85ca4b8a9 net: Introduce red_socket_set_non_blocking() helper
This allows to move some low-level code out of reds.c

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-31 12:22:52 +02:00
Christophe Fergeau
ecf05ed6be reds-stream: Introduce reds_stream_set_no_delay() helper
The code to enable/disable on a TCP socket is duplicated in multiple
places in the code base, this commit replaces this duplicated code with
a helper in RedsStream.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-31 12:22:36 +02:00
Christophe Fergeau
fa44ecb5b6 common: Update spice-common submodule
This brings in these changes:

Christophe Fergeau (1):
      log: Add missing stdio.h include

Frediano Ziglio (2):
      protocol: Add support for VP9 video codec
      region: Avoid possible memory corruption

Jonathon Jongsma (1):
      Document REGION_TEST_* bitmasks

Marc-André Lureau (1):
      build-sys: don't dist spice-protocol.html

Sebastian Andrzej Siewior (1):
      ssl: Use ASN1_STRING_get0_data instead of ASN1_STRING_data

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-31 12:20:24 +02:00
Frediano Ziglio
5d046d9b2d red-channel: Initialize statistic node correctly
Doing a memset(0) on a SpiceStatNode does not create an empty/unattached
node, but instead creates a node '0'. This node could be non-existing,
or totally unrelated.
This patch creates a default '0' node as soon as the file is created.
This will make the behaviour of 0-filled nodes more in line with what
one would expect.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2017-03-31 11:02:02 +01:00
Christophe Fergeau
bc5326b1ce Unify header guards
This changes the header guards in all .h files to follow this format:

/*
 * Licensing block
 */

/* ... */

Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2017-03-30 18:17:20 +01:00
Christophe Fergeau
6a6d0fa339 Remove unused red_channel_client_new()
Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-30 18:17:17 +01:00
Christophe Fergeau
b8bc1fe715 Don't set RedChannelClient::monitor-latency to FALSE
This is the default value, and the property is marked as
_CONSTRUCT_ONLY, so we don't need to explicitly force the default when
instantiating a RedChannelClient.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-30 18:17:13 +01:00
Christophe Fergeau
db9dcd944a Remove unused "monitor_latency" arguments
InputsChannelClient::new and SmartcardChannelClient::new both accept a
"monitor_latency" argument, which is always FALSE. It can be removed.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-30 18:17:05 +01:00
Frediano Ziglio
3377feef5a Initialize earlier GLib type system if necessary
Before GLib 2.36 you should call g_type_init before attempting
any GLib type usage.
As constructor function are called before even main we need
to call g_type_init much before do_spice_init.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2017-03-30 18:05:30 +01:00
Frediano Ziglio
7d86223e21 Fix minor incompatibilities with RHEL6
Include missing pthread header.
Avoid undeclared functions in test-glib-compat.c including
proper/correct header.
Define missing g_assert_true and g_assert_false.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2017-03-30 10:50:09 +01:00
Christophe Fergeau
0457d00f75 build-sys: Alphabetically order source file list
The list of source files to build was in a random order, this commit
orders them alphabetically.
2017-03-27 10:37:31 +02:00
Frediano Ziglio
3c78882884 test-leaks: Document test program
This test needs some additional setup to do its job.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2017-03-24 11:58:16 +00:00
Frediano Ziglio
9eae44856f ci: Make possible to execute additional expensive checks on GitLab
Install missing GStreamer plugins and enable these checks.
Currently the checks are enabled if valgrind is used.
This as the main "makecheck" job uses address sanitizer which
detects some leaks due to some Glib usage. Valgrind checks uses
some suppression for some Glib leaks so they will work correctly.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2017-03-23 12:52:58 +00:00
Frediano Ziglio
76b7f943e4 Some automatic check on video encoders
Stress a bit video encoders.
This check different combination of
- encoder type;
- image formats;
- image clipping (encoding partial frames);
- handling frames split into chunks.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2017-03-23 12:52:58 +00:00
Frediano Ziglio
c9df62d89f build-sys: Add option to enable additional checks
This to enable extra test.
This option is used also in different projects.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2017-03-23 12:52:52 +00:00
Frediano Ziglio
186b8439ae reds-stream: Small syscall optimisation
Handle single chunk writev as normal write.
From some test more than 60% of the times writev is called with 1 as
counter. We can easily and very cheaply turn this call to a simpler
write avoiding the need to pass the array to the kernel.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2017-03-23 12:04:35 +00:00
Christophe Fergeau
7b5e294a36 tests/pki: Use CA/certificate valid until 2048
As pointed out by danpb, tests/pki/server-cert.pem is only valid until
Fri Nov 29 15:51:44 UTC 2019

This changes tests/pki/server-cert.pem and tests/pki/ca-cert.pem to be
valid until 2048. These certificates were generated using the
instructions on https://www.spice-space.org/page/SSLConnection
The -subj args were omitted, and the defaults suggested by openssl used.
The -days parameter was changed to -days 10950.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-23 12:02:47 +01:00
Christophe Fergeau
759fdfc6d1 build-sys: Add tests/pki to EXTRA_DIST
This fixes make distcheck

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-23 12:02:47 +01:00
Pavel Grunt
7ac9949925 ci: Add valgrind check
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-22 16:23:01 +00:00
Frediano Ziglio
9bad8c306c Fix GStreamer encoding if stride is not 4 bytes aligned
This is required by GStreamer.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2017-03-22 15:52:15 +00:00
Christophe Fergeau
68bc284b52 build-sys: Update to latest ax_valgrind_check.m4
This allows to remove a small hack in server/Makefile.am where we were
using make check-valgrind-memcheck rather than make check-valgrind to
make sure we get a non-0 exit code on failures.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-22 09:34:40 +00:00
Christophe Fergeau
844544f8be build-sys: Add make check-valgrind target
This allows to run automatically our test-suite with valgrind to test
for memory leaks.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-21 16:34:56 +01:00
Christophe Fergeau
02d42d4f00 tests: Port test-qxl-parsing to GTest
test-qxl-parsing is really a series of several tests. Porting it to
GTest makes this more obvious. This also has the side-effect of making
it more friendly to 'make check-valgrind' (which would fail on SIGALRM,
and on unexpected g_warning()).

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-21 16:34:56 +01:00
Christophe Fergeau
8be1120904 reds-stream: Don't use sendmsg with uninitialized memory
On my 64 bit Fedora 25, CMSG_SPACE() adds 4 bytes of padding after the
file descriptor in the control data. This causes warnings when ran under
valgrind as we set msg_controllen to CMSG_SPACE().

This commit fills the control data to 0 to avoid these warnings.

==30301== Syscall param sendmsg(msg.msg_control) points to uninitialised byte(s)
==30301==    at 0x8127367: sendmsg (sendmsg.c:28)
==30301==    by 0x41880B: reds_stream_send_msgfd (reds-stream.c:295)
==30301==    by 0x40953F: main (test-stream.c:121)
==30301==  Address 0xffefff1b4 is on thread 1's stack
==30301==  in frame #1, created by reds_stream_send_msgfd (reds-stream.c:263)

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2017-03-21 16:34:56 +01:00
Frediano Ziglio
a0c32918a2 build: Fix some indentation issue on Makefile.am
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2017-03-17 10:53:08 +00:00
Frediano Ziglio
e3e2cbcb3a Revert "gstreamer: Avoid memory copy if strides are different"
This reverts commit c3d237075b.

When you call gst_buffer_add_video_meta_full GStreamer assumes that
buffer is contiguous. Specifically GStreamer assumes that the first
chunk is big enough to hold a whole frame. This results usually in
some pixel shifts in the video. The pixel shifts you can see are
artifacts due to how the guest sends the frames.

Assuming you allocate the 2 chunks with 2 malloc:

   p1 = malloc(size);
   ...
   p2 = malloc(size);

Usually the memory allocator tend to allocate linearly if there are
space adding a prefix to describe next block leading to a memory
arrangement as:

   +-------------------+
   | p1 prefix         |
   +-------------------+
   | p1 buffer         |
   +-------------------+
   | p2 prefix         |
   +-------------------+
   | p2 buffer         |
   +-------------------+

now if you take p1 pointer and you assume it points to a 2 * size
buffer you will get p2 prefix in the middle, this prefix is the pixel
shifts.

Problems happens specifically in gst_video_frame_map_id.
This bug is reported in https://bugzilla.gnome.org/show_bug.cgi?id=779524.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2017-03-16 13:19:01 +00:00
Christophe Fergeau
4b1c95beee Add missing chainups to parent class
A few dispose/finalize implementations were not chaining up to their
parent classes, causing memory leaks.

This fixes leaks like the following:

==16240== Memcheck, a memory error detector
==16240== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==16240== Using Valgrind-3.12.0 and LibVEX; rerun with -h for copyright info
==16240== Command: ./test-leaks
==16240==
==16240==
==16240== HEAP SUMMARY:
==16240==     in use at exit: 245,490 bytes in 3,638 blocks
==16240==   total heap usage: 5,418 allocs, 1,780 frees, 17,676,968 bytes allocated
==16240==
==16240== 16 bytes in 1 blocks are definitely lost in loss record 203 of 771
==16240==    at 0x4C2DADE: malloc (vg_replace_malloc.c:298)
==16240==    by 0x4C2FC91: realloc (vg_replace_malloc.c:785)
==16240==    by 0x52864E: dispatcher_register_handler (dispatcher.c:374)
==16240==    by 0x5293E0: main_dispatcher_constructed (main-dispatcher.c:315)
==16240==    by 0x7F873DB: g_object_new_internal (gobject.c:1823)
==16240==    by 0x7F87EE4: g_object_new_valist (gobject.c:2042)
==16240==    by 0x7F86E90: g_object_new (gobject.c:1626)
==16240==    by 0x5292A5: main_dispatcher_new (main-dispatcher.c:295)
==16240==    by 0x429A0A: do_spice_init (reds.c:3416)
==16240==    by 0x42A3F5: spice_server_init (reds.c:3663)
==16240==    by 0x4095B1: server_leaks (test-leaks.c:45)
==16240==    by 0x844C60A: test_case_run (gtestutils.c:2161)
==16240==    by 0x844C9CA: g_test_run_suite_internal (gtestutils.c:2244)
==16240==    by 0x844CA73: g_test_run_suite_internal (gtestutils.c:2256)
==16240==    by 0x844CC8A: g_test_run_suite (gtestutils.c:2332)
==16240==    by 0x844B92C: g_test_run (gtestutils.c:1599)
==16240==    by 0x409A0B: main (test-leaks.c:126)
==16240==
==16240== 16 bytes in 1 blocks are definitely lost in loss record 204 of 771
==16240==    at 0x4C2DADE: malloc (vg_replace_malloc.c:298)
==16240==    by 0x4C2FC91: realloc (vg_replace_malloc.c:785)
==16240==    by 0x52864E: dispatcher_register_handler (dispatcher.c:374)
==16240==    by 0x5293E0: main_dispatcher_constructed (main-dispatcher.c:315)
==16240==    by 0x7F873DB: g_object_new_internal (gobject.c:1823)
==16240==    by 0x7F87EE4: g_object_new_valist (gobject.c:2042)
==16240==    by 0x7F86E90: g_object_new (gobject.c:1626)
==16240==    by 0x5292A5: main_dispatcher_new (main-dispatcher.c:295)
==16240==    by 0x429A0A: do_spice_init (reds.c:3416)
==16240==    by 0x42A3F5: spice_server_init (reds.c:3663)
==16240==    by 0x40BFD4: test_new (test-display-base.c:902)
==16240==    by 0x40979D: vmc_leaks (test-leaks.c:92)
==16240==    by 0x844C60A: test_case_run (gtestutils.c:2161)
==16240==    by 0x844C9CA: g_test_run_suite_internal (gtestutils.c:2244)
==16240==    by 0x844CA73: g_test_run_suite_internal (gtestutils.c:2256)
==16240==    by 0x844CC8A: g_test_run_suite (gtestutils.c:2332)
==16240==    by 0x844B92C: g_test_run (gtestutils.c:1599)
==16240==    by 0x409A0B: main (test-leaks.c:126)
==16240==
==16240== 96 bytes in 1 blocks are definitely lost in loss record 638 of 771
==16240==    at 0x4C2FA50: calloc (vg_replace_malloc.c:711)
==16240==    by 0x8427D3C: g_malloc0 (gmem.c:124)
==16240==    by 0x842801F: g_malloc0_n (gmem.c:355)
==16240==    by 0x527B44: dispatcher_constructed (dispatcher.c:141)
==16240==    by 0x529321: main_dispatcher_constructed (main-dispatcher.c:307)
==16240==    by 0x7F873DB: g_object_new_internal (gobject.c:1823)
==16240==    by 0x7F87EE4: g_object_new_valist (gobject.c:2042)
==16240==    by 0x7F86E90: g_object_new (gobject.c:1626)
==16240==    by 0x5292A5: main_dispatcher_new (main-dispatcher.c:295)
==16240==    by 0x429A0A: do_spice_init (reds.c:3416)
==16240==    by 0x42A3F5: spice_server_init (reds.c:3663)
==16240==    by 0x4095B1: server_leaks (test-leaks.c:45)
==16240==    by 0x844C60A: test_case_run (gtestutils.c:2161)
==16240==    by 0x844C9CA: g_test_run_suite_internal (gtestutils.c:2244)
==16240==    by 0x844CA73: g_test_run_suite_internal (gtestutils.c:2256)
==16240==    by 0x844CC8A: g_test_run_suite (gtestutils.c:2332)
==16240==    by 0x844B92C: g_test_run (gtestutils.c:1599)
==16240==    by 0x409A0B: main (test-leaks.c:126)
==16240==
==16240== 96 bytes in 1 blocks are definitely lost in loss record 639 of 771
==16240==    at 0x4C2FA50: calloc (vg_replace_malloc.c:711)
==16240==    by 0x8427D3C: g_malloc0 (gmem.c:124)
==16240==    by 0x842801F: g_malloc0_n (gmem.c:355)
==16240==    by 0x527B44: dispatcher_constructed (dispatcher.c:141)
==16240==    by 0x529321: main_dispatcher_constructed (main-dispatcher.c:307)
==16240==    by 0x7F873DB: g_object_new_internal (gobject.c:1823)
==16240==    by 0x7F87EE4: g_object_new_valist (gobject.c:2042)
==16240==    by 0x7F86E90: g_object_new (gobject.c:1626)
==16240==    by 0x5292A5: main_dispatcher_new (main-dispatcher.c:295)
==16240==    by 0x429A0A: do_spice_init (reds.c:3416)
==16240==    by 0x42A3F5: spice_server_init (reds.c:3663)
==16240==    by 0x40BFD4: test_new (test-display-base.c:902)
==16240==    by 0x40979D: vmc_leaks (test-leaks.c:92)
==16240==    by 0x844C60A: test_case_run (gtestutils.c:2161)
==16240==    by 0x844C9CA: g_test_run_suite_internal (gtestutils.c:2244)
==16240==    by 0x844CA73: g_test_run_suite_internal (gtestutils.c:2256)
==16240==    by 0x844CC8A: g_test_run_suite (gtestutils.c:2332)
==16240==    by 0x844B92C: g_test_run (gtestutils.c:1599)
==16240==    by 0x409A0B: main (test-leaks.c:126)
==16240==
==16240== LEAK SUMMARY:
==16240==    definitely lost: 224 bytes in 4 blocks
==16240==    indirectly lost: 0 bytes in 0 blocks
==16240==      possibly lost: 0 bytes in 0 blocks
==16240==    still reachable: 207,718 bytes in 3,312 blocks
==16240==                       of which reachable via heuristic:
==16240==                         newarray           : 1,536 bytes in 16 blocks
==16240==         suppressed: 34,548 bytes in 302 blocks
==16240== Reachable blocks (those to which a pointer was found) are not shown.
==16240== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==16240==
==16240== For counts of detected and suppressed errors, rerun with: -v
==16240== ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 20 from 20)
FAIL test-leaks (exit status: 1)

Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-14 09:19:49 +00:00
Christophe Fergeau
efbc6b2fe2 smartcard: Remove unneeded 'dispose' implementation
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-14 09:19:30 +00:00
Frediano Ziglio
deeb367b1e tests: Enable address sanitizer on GitLab CI
Add required library and options so tests will use the
sanitizer.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2017-03-13 09:01:22 +00:00
Jonathon Jongsma
b3c96d6ab3 DisplayChannel: start documenting drawable tree
The code that manages pending QXL Drawable operations is fairly complex
and difficult to understand. This is an attempt to start documenting
that code to save time when we have to work on this code in the future.

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-09 12:01:35 -06:00
Christophe Fergeau
07b7a1e355 reds-stream: Use true/false instead of TRUE/FALSE
Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-09 18:39:57 +01:00
Christophe Fergeau
6377b72d44 Use bool rather than int return values when appropriate
This commit changes all functions returning TRUE/FALSE from having an
'int' return value to 'bool'.
This way it's obvious that such a function is not going to return
anything else than TRUE or FALSE.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-09 18:39:29 +01:00
Christophe Fergeau
972cbdcfd9 Remove stdbool.h include from .c files
It's already included in red-common.h

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-09 18:39:13 +01:00
Frediano Ziglio
4f7fbb3113 red-channel: Move config_socket vfunc to RedChannelClient
config_socket is configuring the client stream socket.
As is responsibility of RedChannelClient to handle the stream
it make more sense to have the function in this object.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2017-03-08 16:55:43 +00:00
Frediano Ziglio
312c0aadf0 test-leaks: Checks some leaks using TLS
Verify stuff are freed correctly (like TLS context).
The different PKI file required are generated with
base values (localhost and rsa 1024).

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2017-03-08 12:21:15 +00:00
Frediano Ziglio
df48918dd0 test-leaks: Test that creating and destroying spicevmc does not leak
Add and remove some vmc device to check for leaking.
These combination assure that currently implemented type
of devices (webdav, usb and generic) are checked.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2017-03-08 12:21:09 +00:00
Frediano Ziglio
9bcfba3c68 reds: Change if style
The nested if statements could be confusing, no needs for them.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2017-03-08 10:49:28 +00:00
Frediano Ziglio
fa36ab45b3 reds: Send link replies with less chunks
Send header and reply together.
This potentially save up to 160 bytes on the network which
is a considerable amount considering that the message is
about 50 bytes.
This as sending multiple chunks you can have different framing,
specifically:
- if you use TLS every chunk get encrypted separately
  (reds-stream, currently usually 29 bytes for every chunks);
- tcp settings and no delay on socket. More likely with fast
  connections or better network cards. The tcp framing is
  usually about 80 bytes;
- additional tcp acknowledge (usually 64 bytes).
So 80 + 29 + 64 = 173 bytes.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2017-03-07 15:08:34 +00:00
Frediano Ziglio
541d54af42 reds: Do not leak SSL context
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2017-03-06 17:01:08 +00:00
Victor Toso
b7d7c66acd syntax-check: Fix missing AUTHORS
Signed-off-by: Victor Toso <victortoso@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2017-03-06 14:26:13 +00:00
Frediano Ziglio
9af182b67a red-channel: Move alloc_recv_buf and release_recv_buf to RedChannelClient
These vfuncs are more appropriate in RedChannelClient.
The buffer they allocated are related to the client stream
which is managed directly by RedChannelClient.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2017-03-04 14:58:15 +00:00