Merge ~paelzer/ubuntu/+source/spice:eoan-go-to-0.14.2 into ubuntu/+source/spice:ubuntu/eoan-devel

Proposed by Christian Ehrhardt 
Status: Merged
Approved by: Christian Ehrhardt 
Approved revision: 321b446e5087604b5747294a2358397475e708ef
Merged at revision: 321b446e5087604b5747294a2358397475e708ef
Proposed branch: ~paelzer/ubuntu/+source/spice:eoan-go-to-0.14.2
Merge into: ubuntu/+source/spice:ubuntu/eoan-devel
Diff against target: 74636 lines (+26621/-11371)
298 files modified
.tarball-version (+1/-1)
.version (+1/-1)
AUTHORS (+6/-0)
ChangeLog (+3924/-19)
INSTALL (+159/-161)
Makefile.am (+5/-2)
Makefile.in (+19/-10)
NEWS (+53/-0)
README (+4/-4)
aclocal.m4 (+125/-105)
build-aux/meson/check-spice-common (+5/-0)
compile (+7/-6)
config.guess (+297/-283)
config.h.in (+10/-4)
config.sub (+172/-162)
configure (+400/-303)
configure.ac (+22/-30)
debian/changelog (+19/-0)
debian/control (+1/-1)
debian/libspice-server1.symbols (+2/-0)
debian/patches/disable-failing-test-listen.patch (+46/-0)
debian/patches/fix-test-qxl-parsing-on-ppc64el-and-armhf.patch (+45/-0)
debian/patches/series (+2/-5)
depcomp (+5/-5)
dev/null (+0/-11)
docs/Makefile.am (+2/-1)
docs/Makefile.in (+15/-8)
docs/manual/Makefile.am (+1/-0)
docs/manual/Makefile.in (+13/-6)
docs/manual/manual.chunked/apa.html (+2/-2)
docs/manual/manual.chunked/ar01s05.html (+1/-1)
docs/manual/manual.chunked/ar01s06.html (+23/-17)
docs/manual/manual.chunked/ar01s07.html (+17/-28)
docs/manual/manual.chunked/ar01s08.html (+28/-80)
docs/manual/manual.chunked/ar01s09.html (+80/-15)
docs/manual/manual.chunked/ar01s10.html (+15/-22)
docs/manual/manual.chunked/ar01s11.html (+22/-19)
docs/manual/manual.chunked/ar01s12.html (+19/-33)
docs/manual/manual.chunked/ar01s13.html (+33/-17)
docs/manual/manual.chunked/ar01s14.html (+17/-37)
docs/manual/manual.chunked/ar01s15.html (+37/-37)
docs/manual/manual.chunked/ar01s16.html (+41/-0)
docs/manual/manual.chunked/index.html (+1/-1)
docs/manual/manual.html (+117/-52)
docs/manual/manual.txt (+64/-3)
docs/manual/meson.build (+18/-0)
docs/meson.build (+14/-0)
docs/spice_style.html (+133/-40)
docs/spice_style.txt (+80/-3)
docs/spice_threading_model.html (+9/-5)
docs/spice_threading_model.txt (+1/-1)
install-sh (+32/-15)
ltmain.sh (+4/-2)
m4/spice-compile-warnings.m4 (+0/-3)
meson.build (+226/-0)
meson_options.txt (+51/-0)
missing (+8/-8)
server/Makefile.am (+19/-14)
server/Makefile.in (+281/-129)
server/agent-msg-filter.c (+9/-13)
server/agent-msg-filter.h (+7/-0)
server/cache-item.tmpl.c (+3/-3)
server/char-device.c (+50/-49)
server/char-device.h (+8/-4)
server/common-graphics-channel.c (+17/-24)
server/cursor-channel-client.c (+5/-9)
server/cursor-channel-client.h (+8/-2)
server/cursor-channel.c (+31/-15)
server/cursor-channel.h (+5/-26)
server/dcc-private.h (+2/-2)
server/dcc-send.c (+39/-41)
server/dcc.c (+62/-67)
server/dcc.h (+9/-9)
server/dispatcher.c (+69/-45)
server/dispatcher.h (+16/-0)
server/display-channel-private.h (+13/-13)
server/display-channel.c (+176/-58)
server/display-channel.h (+8/-15)
server/display-limits.h (+4/-1)
server/event-loop.c (+15/-5)
server/glib-compat.h (+1/-1)
server/glz-encode.tmpl.c (+7/-21)
server/glz-encoder-dict.c (+2/-1)
server/glz-encoder.c (+2/-2)
server/gstreamer-encoder.c (+10/-10)
server/image-cache.c (+3/-3)
server/image-encoders.c (+24/-23)
server/image-encoders.h (+1/-0)
server/inputs-channel-client.c (+6/-10)
server/inputs-channel-client.h (+1/-1)
server/inputs-channel.c (+109/-59)
server/inputs-channel.h (+1/-3)
server/jpeg-encoder.c (+9/-21)
server/jpeg-encoder.h (+1/-2)
server/lz4-encoder.c (+7/-7)
server/main-channel-client.c (+89/-49)
server/main-channel-client.h (+4/-1)
server/main-channel.c (+21/-26)
server/main-channel.h (+4/-1)
server/main-dispatcher.c (+18/-50)
server/main-dispatcher.h (+1/-1)
server/memslot.c (+16/-20)
server/memslot.h (+2/-2)
server/meson.build (+188/-0)
server/mjpeg-encoder.c (+21/-19)
server/net-utils.c (+8/-3)
server/pixmap-cache.c (+3/-3)
server/red-channel-capabilities.c (+0/-1)
server/red-channel-client.c (+90/-99)
server/red-channel-client.h (+3/-18)
server/red-channel.c (+154/-60)
server/red-channel.h (+34/-33)
server/red-client.c (+4/-4)
server/red-client.h (+1/-12)
server/red-common.h (+8/-7)
server/red-parse-qxl.c (+291/-145)
server/red-parse-qxl.h (+29/-24)
server/red-pipe-item.c (+1/-1)
server/red-pipe-item.h (+6/-6)
server/red-qxl.c (+95/-159)
server/red-qxl.h (+3/-0)
server/red-record-qxl.c (+25/-60)
server/red-record-qxl.h (+9/-9)
server/red-replay-qxl.c (+35/-38)
server/red-stream-device.c (+822/-0)
server/red-stream-device.h (+68/-0)
server/red-stream.c (+301/-329)
server/red-stream.h (+102/-0)
server/red-worker.c (+83/-316)
server/red-worker.h (+10/-48)
server/reds-private.h (+3/-1)
server/reds.c (+523/-415)
server/reds.h (+7/-7)
server/smartcard-channel-client.c (+14/-17)
server/smartcard-channel-client.h (+1/-1)
server/smartcard.c (+51/-75)
server/smartcard.h (+1/-11)
server/sound.c (+89/-39)
server/spice-bitmap-utils.h (+2/-2)
server/spice-core.h (+6/-0)
server/spice-qxl.h (+58/-20)
server/spice-server-enums.c (+1/-5)
server/spice-server-enums.h (+1/-2)
server/spice-server.syms (+5/-0)
server/spice-version.h (+1/-1)
server/spicevmc.c (+62/-114)
server/stat-file.c (+3/-4)
server/stream-channel.c (+616/-0)
server/stream-channel.h (+84/-0)
server/tests/Makefile.am (+14/-7)
server/tests/Makefile.in (+312/-135)
server/tests/basic-event-loop.c (+4/-2)
server/tests/meson.build (+91/-0)
server/tests/pki/ca-cert.pem (+16/-11)
server/tests/pki/server-cert.pem (+14/-9)
server/tests/pki/server-key.pem (+25/-13)
server/tests/replay.c (+31/-23)
server/tests/stat-test.c (+10/-8)
server/tests/test-agent-msg-filter.c (+10/-0)
server/tests/test-channel.c (+7/-18)
server/tests/test-codecs-parsing.c (+12/-0)
server/tests/test-display-base.c (+53/-59)
server/tests/test-display-resolution-changes.c (+2/-2)
server/tests/test-display-streaming.c (+7/-5)
server/tests/test-display-width-stride.c (+2/-2)
server/tests/test-glib-compat.h (+9/-0)
server/tests/test-gst.c (+9/-9)
server/tests/test-leaks.c (+103/-1)
server/tests/test-listen.c (+382/-0)
server/tests/test-playback.c (+6/-11)
server/tests/test-qxl-parsing.c (+68/-31)
server/tests/test-record.c (+100/-0)
server/tests/test-sasl.c (+665/-0)
server/tests/test-stat-file.c (+2/-2)
server/tests/test-stream-device.c (+592/-0)
server/tests/test-stream.c (+13/-12)
server/tests/test-vdagent.c (+0/-5)
server/tests/valgrind/glib.supp (+92/-1)
server/tree.c (+4/-4)
server/utils.c (+87/-7)
server/utils.h (+8/-7)
server/video-stream.c (+136/-117)
server/video-stream.h (+41/-39)
server/zlib-encoder.c (+1/-1)
subprojects/spice-common/Makefile.am (+2/-1)
subprojects/spice-common/Makefile.in (+15/-8)
subprojects/spice-common/aclocal.m4 (+96/-110)
subprojects/spice-common/build-aux/ar-lib (+2/-2)
subprojects/spice-common/build-aux/compile (+7/-6)
subprojects/spice-common/build-aux/config.guess (+297/-283)
subprojects/spice-common/build-aux/config.sub (+172/-162)
subprojects/spice-common/build-aux/depcomp (+5/-5)
subprojects/spice-common/build-aux/install-sh (+32/-15)
subprojects/spice-common/build-aux/ltmain.sh (+4/-2)
subprojects/spice-common/build-aux/missing (+8/-8)
subprojects/spice-common/build-aux/test-driver (+5/-5)
subprojects/spice-common/common/Makefile.am (+30/-35)
subprojects/spice-common/common/Makefile.in (+179/-142)
subprojects/spice-common/common/backtrace.c (+4/-2)
subprojects/spice-common/common/backtrace.h (+3/-3)
subprojects/spice-common/common/canvas_base.c (+81/-127)
subprojects/spice-common/common/canvas_base.h (+4/-10)
subprojects/spice-common/common/canvas_utils.c (+8/-144)
subprojects/spice-common/common/canvas_utils.h (+2/-28)
subprojects/spice-common/common/client_marshallers.h (+3/-8)
subprojects/spice-common/common/demarshallers.h (+10/-7)
subprojects/spice-common/common/draw.h (+3/-3)
subprojects/spice-common/common/generated_client_demarshallers.c (+853/-1221)
subprojects/spice-common/common/generated_client_marshallers.c (+12/-186)
subprojects/spice-common/common/generated_client_marshallers.h (+5/-18)
subprojects/spice-common/common/generated_messages.h (+304/-472)
subprojects/spice-common/common/generated_server_demarshallers.c (+263/-760)
subprojects/spice-common/common/generated_server_marshallers.c (+50/-139)
subprojects/spice-common/common/generated_server_marshallers.h (+1/-9)
subprojects/spice-common/common/lines.c (+1/-1)
subprojects/spice-common/common/lines.h (+3/-3)
subprojects/spice-common/common/log.c (+73/-0)
subprojects/spice-common/common/log.h (+16/-10)
subprojects/spice-common/common/lz.c (+48/-29)
subprojects/spice-common/common/lz.h (+4/-3)
subprojects/spice-common/common/lz_common.h (+3/-3)
subprojects/spice-common/common/lz_compress_tmpl.c (+5/-17)
subprojects/spice-common/common/lz_config.h (+3/-3)
subprojects/spice-common/common/lz_decompress_tmpl.c (+9/-16)
subprojects/spice-common/common/macros.h (+11/-3)
subprojects/spice-common/common/marshaller.c (+64/-30)
subprojects/spice-common/common/marshaller.h (+5/-5)
subprojects/spice-common/common/mem.c (+2/-3)
subprojects/spice-common/common/mem.h (+2/-6)
subprojects/spice-common/common/meson.build (+182/-0)
subprojects/spice-common/common/messages.h (+82/-0)
subprojects/spice-common/common/pixman_utils.c (+2/-5)
subprojects/spice-common/common/pixman_utils.h (+3/-3)
subprojects/spice-common/common/quic.c (+58/-347)
subprojects/spice-common/common/quic.h (+3/-2)
subprojects/spice-common/common/quic_config.h (+2/-2)
subprojects/spice-common/common/quic_family_tmpl.c (+5/-5)
subprojects/spice-common/common/quic_tmpl.c (+668/-0)
subprojects/spice-common/common/recorder.h (+74/-0)
subprojects/spice-common/common/recorder/recorder.c (+2472/-0)
subprojects/spice-common/common/recorder/recorder.h (+1034/-0)
subprojects/spice-common/common/recorder/recorder_ring.c (+286/-0)
subprojects/spice-common/common/recorder/recorder_ring.h (+349/-0)
subprojects/spice-common/common/rect.h (+2/-2)
subprojects/spice-common/common/region.c (+0/-378)
subprojects/spice-common/common/region.h (+2/-2)
subprojects/spice-common/common/ring.h (+8/-19)
subprojects/spice-common/common/rop3.c (+0/-1)
subprojects/spice-common/common/rop3.h (+2/-2)
subprojects/spice-common/common/snd_codec.c (+9/-9)
subprojects/spice-common/common/snd_codec.h (+2/-2)
subprojects/spice-common/common/ssl_verify.c (+6/-5)
subprojects/spice-common/common/ssl_verify.h (+3/-3)
subprojects/spice-common/common/sw_canvas.c (+0/-29)
subprojects/spice-common/common/sw_canvas.h (+2/-13)
subprojects/spice-common/common/utils.c (+68/-0)
subprojects/spice-common/common/utils.h (+13/-10)
subprojects/spice-common/common/verify.h (+13/-9)
subprojects/spice-common/config.h.in (+21/-16)
subprojects/spice-common/configure (+513/-262)
subprojects/spice-common/configure.ac (+10/-9)
subprojects/spice-common/docs/Makefile.am (+27/-0)
subprojects/spice-common/docs/Makefile.in (+25/-11)
subprojects/spice-common/docs/meson.build (+12/-0)
subprojects/spice-common/docs/spice_protocol.txt (+38/-31)
subprojects/spice-common/docs/spice_uri_scheme.txt (+131/-0)
subprojects/spice-common/m4/spice-deps.m4 (+80/-26)
subprojects/spice-common/meson.build (+175/-0)
subprojects/spice-common/meson_options.txt (+48/-0)
subprojects/spice-common/python_modules/Makefile.am (+2/-2)
subprojects/spice-common/python_modules/Makefile.in (+12/-7)
subprojects/spice-common/python_modules/codegen.py (+1/-1)
subprojects/spice-common/python_modules/demarshal.py (+71/-106)
subprojects/spice-common/python_modules/marshal.py (+6/-19)
subprojects/spice-common/python_modules/meson.build (+6/-0)
subprojects/spice-common/python_modules/ptypes.py (+130/-132)
subprojects/spice-common/spice.proto (+458/-534)
subprojects/spice-common/spice_codegen.py (+88/-30)
subprojects/spice-common/tests/Makefile.am (+79/-9)
subprojects/spice-common/tests/Makefile.in (+330/-50)
subprojects/spice-common/tests/generated_test_demarshallers.c (+544/-0)
subprojects/spice-common/tests/generated_test_enums.h (+38/-0)
subprojects/spice-common/tests/generated_test_marshallers.c (+50/-1)
subprojects/spice-common/tests/generated_test_marshallers.h (+4/-0)
subprojects/spice-common/tests/meson.build (+48/-0)
subprojects/spice-common/tests/test-dummy-recorder.c (+29/-11)
subprojects/spice-common/tests/test-logging.c (+11/-111)
subprojects/spice-common/tests/test-marshallers.c (+164/-0)
subprojects/spice-common/tests/test-marshallers.h (+31/-0)
subprojects/spice-common/tests/test-marshallers.proto (+21/-0)
subprojects/spice-common/tests/test-quic.c (+256/-0)
subprojects/spice-common/tests/test-region.c (+418/-0)
subprojects/spice-common/tests/test-ssl-verify.c (+135/-0)
test-driver (+5/-5)
tools/Makefile.am (+4/-0)
tools/Makefile.in (+30/-13)
tools/meson.build (+4/-0)
tools/reds_stat.c (+8/-8)
Reviewer Review Type Date Requested Status
Christian Ehrhardt  (community) Approve
Rafael David Tinoco (community) Needs Fixing
Canonical Server Pending
git-ubuntu developers Pending
Review via email: mp+369222@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Analyzing reverse dependencies of spice as it is a lib (although with a narrow focus).

$ reverse-depends src:spice-protocol -r eoan
Reverse-Depends
===============
* libspice-client-glib-2.0-dev (for libspice-protocol-dev)
* libspice-server-dev [amd64 arm64 armhf i386 ppc64el] (for libspice-protocol-dev)

The latter is src:spice which we upload anyway.

$ reverse-depends --build-depends src:spice-protocol -r eoan
Reverse-Build-Depends
=====================
* looking-glass (for libspice-protocol-dev)
* qemu (for libspice-protocol-dev)
* remmina (for libspice-protocol-dev)
* spice (for libspice-protocol-dev)
* spice-gtk (for libspice-protocol-dev)
* spice-vdagent (for libspice-protocol-dev)
* xserver-xorg-video-qxl (for libspice-protocol-dev)

$ reverse-depends src:spice -r eoan
Reverse-Depends
===============
* qemu-system-arm (for libspice-server1)
* qemu-system-mips (for libspice-server1)
* qemu-system-misc (for libspice-server1)
* qemu-system-ppc (for libspice-server1)
* qemu-system-s390x (for libspice-server1)
* qemu-system-sparc (for libspice-server1)
* qemu-system-x86 (for libspice-server1)
* xserver-xspice [amd64] (for libspice-server1)

$ reverse-depends --build-depends src:spice -r eoan
Reverse-Build-Depends
=====================
* qemu (for libspice-server-dev)
* xserver-xorg-video-qxl (for libspice-server-dev)

Most only depend on headers and only qemu and xorg driver have runtiem deps.

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Dependency versions are:
qemu*
  libspice-server1 (>= 0.13.1)
xserver-xorg-video-qxl
  libspice-server1 (>= 0.13.2)

Does the rebuild pick up anything newer?
=> No it stays at this dependency which we already have fulfilled.
No need for explicit rebuilds.

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

I checked rebuilds (in he PPA) of the reverse dependencies to be sure.
=> https://launchpad.net/~paelzer/+archive/ubuntu/eoan-merge-spice-0.14.2/+packages

The one thing we need is spice-gtk which would become a FTBFS for a rebuild due to changes in the headers.
So overall we need:
1. spice-protocol
2. spice
3. spice-gtk

Note: I have imported spice-gtk into my own trees to create MPs for now.

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Did some tests on the PPA which pulled in the set of:
Get:1 http://archive.ubuntu.com/ubuntu eoan/main amd64 gir1.2-gstreamer-1.0 amd64 1.16.0-1 [72.1 kB]
spice-client-glib-usb-acl-helper amd64 0.37-0ubuntu1~ppa2 [14.5 kB]
libspice-client-glib-2.0-8 amd64 0.37-0ubuntu1~ppa2 [299 kB]
libspice-client-gtk-3.0-5 amd64 0.37-0ubuntu1~ppa2 [55.4 kB]
gir1.2-spiceclientgtk-3.0 amd64 0.37-0ubuntu1~ppa2 [10.9 kB]
gir1.2-spiceclientglib-2.0 amd64 0.37-0ubuntu1~ppa2 [18.3 kB]
libspice-server1 amd64 0.14.2-0ubuntu1~ppa5 [347 kB]

Testing connection to a local qemu with (and some I/O on the console)
- virt-manager
- virt-viewer
- spice-client-gtk (spice)

All were ok.

Further I tried to install a desktop in guest to have qxl drivers from the guest running.

Note: I stripped the vnc config off a guest to see if all can connect with only spice using the new libs. That all worked well in my tests.

Revision history for this message
Rafael David Tinoco (rafaeldtinoco) wrote :

Looks like Build-Depends for this package should have:

libspice-protocol-dev (>= 0.14.0),

orelse you might get:

----
configure:11599: $PKG_CONFIG --exists --print-errors "spice-protocol >= $SPICE_PROTOCOL_MIN_VER"
Package spice-protocol was not found in the pkg-config search path.
Perhaps you should add the directory containing `spice-protocol.pc'
to the PKG_CONFIG_PATH environment variable
No package 'spice-protocol' found
configure:11602: $? = 1
configure:11616: result: no
No package 'spice-protocol' found
configure:11632: error: Package requirements (spice-protocol >= 0.14.0) were not met:

No package 'spice-protocol' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables SPICE_PROTOCOL_CFLAGS
and SPICE_PROTOCOL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
----

even after satisfying build-dep needs, during dh_autoreconf phase.

####

After fixing it, when trying to satisfy the needs (without having 0.14.0 in the archive):

----
The following packages have unmet dependencies:
 builddeps:. : Depends: libspice-protocol-dev (>= 0.14.0) but 0.12.14-1 is to be installed
E: Unable to correct problems, you have held broken packages.
----

and after installing it manually:

----
$ apt-get build-dep .
Note, using directory '.' to get the build dependencies
Reading package lists... Done
Building dependency tree
Reading state information... Done
Starting pkgProblemResolver with broken count: 0
Starting 2 pkgProblemResolver with broken count: 0
Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
----

And dh_autoreconf phase works correctly.

review: Needs Fixing
Revision history for this message
Rafael David Tinoco (rafaeldtinoco) wrote :

* this is super minor

I asked for some help of @ahasenack to identify where the test-listen failure was coming from. My initial doubt was if, before the merge was done, the automated tests were running in a jenkins or somewhere. He explained to me about dh_auto_test and I realized that Makefile "check" would dive into test execution from server/tests directory during compilation time.

After that, it was clear to me what you mentioned, but, during this conversation we realized that there was an upstream commit removing the "--enable-automated-tests" option from configure:

commit 6517ea5cbb07b1480319b51a834cfbe9cfc71e69
Author: Frediano Ziglio <email address hidden>
Date: Sun Sep 3 07:08:04 2017

    test-display-base: Always compile with AUTOMATED_TESTS enabled

    There's no need to not compile this feature, it just enable
    a parameters which must be passed in order to change test
    behaviour.

    Signed-off-by: Frediano Ziglio <email address hidden>
    Acked-by: Christophe Fergeau <email address hidden>

so, inside file debian/tests/automated-tests, the option:

"--enable-automated-tests"

can be dropped (but I guess this would come have to come from Debian as well, and it is really tiny).

Revision history for this message
Rafael David Tinoco (rafaeldtinoco) wrote :

Despite previous commits, I have compiled the source package and tested against EOAN qemu-kvm and it worked well, including the other (to be reviewed together) package spice-client-gtk.

I'm +1 after, at least, the build-depends fix.

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

ack on the build-depends - added

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

FYI: To build against a PPA (for cases like that needing multiple packages together) I recommend (if you use sbuild) something like:

DEB_BUILD_OPTIONS=3 sbuild -Adcosmic-amd64 --extra-repository="deb [trusted=yes] http://ppa.launchpad.net/paelzer/eoan-merge-spice-0.14.2/ubuntu eoan main" spice-gtk_0.37-0ubuntu1~ppa2.dsc

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

re-added the canonical-server slot

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

requested changes done, thanks for catching the Bdep
Settign to approved

Revision history for this message
Christian Ehrhardt  (paelzer) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/.tarball-version b/.tarball-version
2index a803cc2..e867cc2 100644
3--- a/.tarball-version
4+++ b/.tarball-version
5@@ -1 +1 @@
6-0.14.0
7+0.14.2
8diff --git a/.version b/.version
9index bdfb04f..e867cc2 100644
10--- a/.version
11+++ b/.version
12@@ -1 +1 @@
13-0.13.91
14+0.14.2
15diff --git a/AUTHORS b/AUTHORS
16index 99f6c18..43bdf2a 100644
17--- a/AUTHORS
18+++ b/AUTHORS
19@@ -27,6 +27,7 @@ Patches also contributed by
20 Axel Lin <axel.lin@ingics.com>
21 소병철 <byungchul.so@samsung.com>
22 Cédric Bosdonnat <cbosdonnat@suse.com>
23+ Changqing Li <changqing.li@windriver.com>
24 Christian Ruppert <idl0r@qasl.de>
25 Christophe de Dinechin <dinechin@redhat.com>
26 Cole Robinson <crobinso@redhat.com>
27@@ -47,6 +48,7 @@ Patches also contributed by
28 Jürg Billeter <j@bitron.ch>
29 Li Zhijian <lizhijian@cn.fujitsu.com>
30 Liang Guo <bluestonechina@gmail.com>
31+ Lukáš Hrázký <lhrazky@redhat.com>
32 Lukas Venhoda <lvenhoda@redhat.com>
33 Michal Privoznik <mprivozn@redhat.com>
34 Michael Tokarev <mjt@tls.msk.ru>
35@@ -64,5 +66,9 @@ Patches also contributed by
36 Wang Qiang <wangqiang.hunan@gmail.com>
37 Yann E. MORIN <yann.morin.1998@free.fr>
38 Zeeshan Ali (Khattak) <zeeshanak@gnome.org>
39+ Douglas Paul <doug@bogon.ca>
40+ 谢 昆明 <kunming.xie@hotmail.com>
41+ Benjamin Tissoires <benjamin.tissoires@redhat.com>
42+ Olivier Fourdan <ofourdan@redhat.com>
43
44 ....send patches to get your name here...
45diff --git a/ChangeLog b/ChangeLog
46index 8c26339..5e6bd43 100644
47--- a/ChangeLog
48+++ b/ChangeLog
49@@ -1,3 +1,3906 @@
50+2019-04-30 Frediano Ziglio <fziglio@redhat.com>
51+
52+ build: Prepare for 0.14.2 release
53+ Acked-by: Victor Toso <victortoso@redhat.com>
54+
55+2019-04-30 Benjamin Tissoires <benjamin.tissoires@redhat.com>
56+
57+ inputs-channel: Attempt to have a reliable led state
58+ We can not consider the qemu led state to be reliable. It by default has
59+ 50ms of delay, so if we want to achieve something reliable, this won't do.
60+
61+ We need to keep our own internal state, and consider it as reliable.
62+ We update it immediately after receiving the key presses, meaning that this
63+ is now the future state of the guest.
64+
65+ When we receive a keymap event, we check against this 'ideal' state and
66+ only update the guest if we 'counted' that it won't have the correct state.
67+
68+ When the guest notifies its change, the modifiers_watch is supposed to
69+ fix any wrong state.
70+
71+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
72+
73+2019-04-26 Frediano Ziglio <fziglio@redhat.com>
74+
75+ Update spice-protocol version
76+ We require version after 0.12.15 which was released as 0.14.0.
77+ Check against a valid released instead of checking for a non existing one.
78+
79+ Acked-by: Victor Toso <victortoso@redhat.com>
80+
81+ meson: Bump libcacard requirement to 2.5.1
82+ This had already been done for Meson in commit
83+ afb2ec312bde342b8538451c6ae15a7f3bdd494f.
84+
85+ Acked-by: Victor Toso <victortoso@redhat.com>
86+
87+2019-04-11 Francois Gouget <fgouget@codeweavers.com>
88+
89+ video-stream: use the dcc local variable
90+ In update_client_playback_delay()
91+
92+ Acked-by: Victor Toso <victortoso@redhat.com>
93+
94+2019-04-05 Frediano Ziglio <fziglio@redhat.com>
95+
96+ Fix meson build importing spice-common fix
97+ This brings in the following changes:
98+
99+ Eduardo Lima (Etrunko) (1):
100+ meson: Make targets list store dictionaries instead of lists
101+
102+ Frediano Ziglio (2):
103+ meson: Fix dependency of generated files
104+ meson: Do not build generated files twice
105+
106+ Acked-by: Victor Toso <victortoso@redhat.com>
107+
108+2019-04-03 Frediano Ziglio <fziglio@redhat.com>
109+
110+ Update spice-common submodule
111+ This brings in the following changes:
112+
113+ Christophe Fergeau (8):
114+ canvas_base: Fix variable shadowing warning
115+ backtrace: Add missing include
116+ lz: Don't try to print uninitialized variable
117+ build: Add missing G_GNUC_PRINTF annotations
118+ build: Update verify.h to latest version
119+ test-marshallers: Fix header guard
120+ quic: Fix QUIC_VERSION definition
121+ log: Let gcc know about the logging macros which abort
122+
123+ Frediano Ziglio (13):
124+ codegen: Rename --prefix parameter to --suffix
125+ ci: Remove dependencies from copr build
126+ build: Remove snd_codec.h from EXTRA_DIST
127+ test-ssl-verify: Improve subject_to_x509_name coverage
128+ meson: Remove some useless checks
129+ codegen: Factor out a function to write output file
130+ codegen: Generate headers while generating code
131+ codegen: Allows to generate C declarations automatically
132+ Allow to generate C declarations for spice.proto
133+ Generate automatically most C message declarations
134+ recorder: Update
135+ build: Add new check for recorder library
136+ proto: Fix typo in message name
137+
138+ Acked-by: Victor Toso <victortoso@redhat.com>
139+
140+2019-03-29 Frediano Ziglio <fziglio@redhat.com>
141+
142+ red-worker: Remove unused definitions
143+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
144+
145+ red-worker: Use bool for driver_cap_monitors_config
146+ Easier to understand.
147+
148+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
149+
150+ red-channel: Small comment on "core" field
151+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
152+
153+2019-03-28 Frediano Ziglio <fziglio@redhat.com>
154+
155+ display-channel: Inline red_migrate_display function
156+ The only caller only called that function.
157+
158+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
159+
160+ Move image_compression field from RedWorker to DisplayChannel
161+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
162+
163+ Check image compression value earlier
164+ Do not check it after assigning to reds->config->image_compression,
165+ check the value as soon as possible.
166+ This prevent potential invalid settings.
167+
168+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
169+
170+ red-worker: Remove only assigned fields
171+ DisplayChannelClient get them directly from reds (they are changed
172+ only during initialisation so they can be read freely from any
173+ thread).
174+
175+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
176+
177+2019-03-28 Jonathon Jongsma <jjongsma@redhat.com>
178+
179+ Make channel client callbacks virtual functions
180+ Rather than having an API to register client callbacks for each channel
181+ type, make them vfuncs.
182+
183+ Since the client callbacks are registered identically for each channel
184+ of the same type, it doesn't make sense for to require these to be
185+ registered separately for each object. It's cleaner to have these be
186+ per-class properties, so they've been converted to virtual functions.
187+
188+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
189+
190+2019-03-28 Frediano Ziglio <fziglio@redhat.com>
191+
192+ Check running state in red_qxl_set_client_capabilities
193+ No reasons to expose red_qxl_is_running, this was used to not
194+ send capability is the state was not running.
195+
196+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
197+
198+ Move DisplayChannel callbacks from RedWorker to DisplayChannel
199+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
200+
201+2019-03-28 Jonathon Jongsma <jjongsma@redhat.com>
202+
203+ Save running property in QXLState
204+ This is a preparatory patch that states the running property in QXLState
205+ and provides accessor functions that allows us to check whether the QXL
206+ device is running from different threads.
207+
208+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
209+
210+2019-03-28 Frediano Ziglio <fziglio@redhat.com>
211+
212+ Move thread/dispatching handling to RedChannel
213+ Currently channel threading/handling is spread between RedQxl,
214+ RedWorker and RedChannel.
215+ Move more to RedChannel simplify RedQxl and RedWorker.
216+
217+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
218+
219+ dispatcher: Allows to manage messages without registering them
220+ The only way to add new message to Dispatcher was to register
221+ using a number. These numbers corresponded to array indexes.
222+ This is good if the list of messages is allocated statically
223+ and contiguously, on the contrary this method is not that
224+ flexible.
225+ Writing a header of 4 or 16 bytes using system call does not
226+ make much difference so pass all message information in the
227+ payload header.
228+ A new dispatcher_send_message_custom function allows to send
229+ a message passing all message information, including the
230+ pointer to the handler.
231+ This will allow for instance a Dispatcher associate to a given
232+ thread to be reused by different classes.
233+
234+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
235+
236+2019-03-27 Frediano Ziglio <fziglio@redhat.com>
237+
238+ docs: Fix typo
239+ Acked-by: Uri Lublin <uril@redhat.com>
240+
241+2019-03-26 Frediano Ziglio <fziglio@redhat.com>
242+
243+ build: Clean a generated file
244+ Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
245+
246+2019-03-22 谢 昆明 <kunming.xie@hotmail.com>
247+
248+ Remove a duplicated line
249+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
250+
251+2019-03-21 Francois Gouget <fgouget@codeweavers.com>
252+
253+ Consistently check if drm_dma_buf_fd is greater or lower than zero
254+ Based on a patch by Frediano Ziglio.
255+
256+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
257+
258+ dcc: Remove a redundant NULL pointer check in dcc_create_surface()
259+ dcc_create_surface() already returns immediately if dcc is NULL.
260+
261+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
262+
263+2019-03-21 Christophe Fergeau <cfergeau@redhat.com>
264+
265+ worker: Fix potential sprintf overflow
266+ If worker->qxl->id is bigger than 0x7ffffff (in other words, it's a
267+ negative signed int) then
268+ printf(worker_str, "display[%d]", worker->qxl->id);
269+ will need:
270+
271+ "display[]" -> 9 bytes
272+ %d -> 11 bytes
273+
274+ The trailing \0 will thus overflow our 20 bytes destination.
275+ As QXLInstance::id should be an unsigned int, this commit changes the
276+ format string to use %u. This also switches to snprintf.
277+
278+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
279+
280+2019-03-21 Frediano Ziglio <fziglio@redhat.com>
281+
282+ red-worker: Use mnemonic for statistic buffer
283+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
284+
285+2019-03-20 Frediano Ziglio <fziglio@redhat.com>
286+
287+ main-dispatcher: Use reds as opaque for dispatcher
288+ No reason to pass through MainDispatcher, the purpose of
289+ MainDispatcher is to call reds functions from the right thread.
290+
291+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
292+
293+ main-dispatcher: Inline main_dispatcher_self_handle_channel_event
294+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
295+
296+ dispatcher: Use NULL for pointer check
297+ handler is a pointer, check for NULL, not 0.
298+
299+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
300+
301+ reds: Check we don't register a channel twice in reds_register_channel
302+ To avoid potential regressions, check it only if extra checks are
303+ enabled.
304+ This allows to check previous "Move channel registration to constructed
305+ vfunc" commit.
306+
307+ Acked-by: Snir Sheriber <ssheribe@redhat.com>
308+
309+2019-03-19 Frediano Ziglio <fziglio@redhat.com>
310+
311+ test-stream-device: Remove interface before next loop
312+ We should not reuse the same interface twice as doing so will
313+ cause dangling pointers.
314+ Unregister it at every iteration.
315+
316+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
317+
318+2019-03-18 Frediano Ziglio <fziglio@redhat.com>
319+
320+ Remove support for 64 bit pointers on protocol
321+ Import "codegen: Remove support for --ptrsize" change from spice-common
322+ and update code accordingly.
323+
324+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
325+
326+ Update spice-common submodule
327+ This brings in the following changes:
328+
329+ Frediano Ziglio (11):
330+ codegen: Document ptr_array attribute
331+ codegen: Use a better type for pointer converted to integer
332+ codegen: Reduce indentation
333+ codegen: Fix c_type result for TypeAlias
334+ codegen: Check wrong attribute
335+ codegen: Add a test for attribute combination
336+ mem: Fix compile error if alignment-checks option is used
337+ log: Remove useless includes
338+ proto: Remove obsolete TunnelChannel
339+ protocol: Add a dummy TunnelChannel
340+ messages: Remove fields not used by the protocol
341+
342+ Marc-André Lureau (1):
343+ docs: add spice URI scheme
344+
345+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
346+
347+ syntax-check: Add missing contributors names to AUTHORS
348+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
349+
350+2019-03-18 Douglas Paul <doug@bogon.ca>
351+
352+ video-stream: prevent crash on stream reattach
353+ I experienced some crashes with qemu 3.1.0 compiled with libspice-server
354+ 0.14.0 on Gentoo.
355+
356+ The problem reproduced reliably with a guest running Ubuntu 18.04.2 LTS.
357+ If I connect a viewer at system startup, I would get a crash just after
358+ the fade-in of the login prompt in GDM.
359+
360+ Interestingly, I usually was unable to reproduce the issue if I waited
361+ to connect until after the greeter was fully displayed.
362+
363+ The patch I used to correct the issue for me applies to the master
364+ branch cleanly, so I suspect the problem may still exist.
365+
366+ The only other references to this issue I could find were two abrt
367+ reports in CentOS:
368+ https://bugs.centos.org/view.php?id=15171
369+ https://bugs.centos.org/view.php?id=15441
370+
371+ I'm not sure if the agent->video_encoder is supposed to be guaranteed to
372+ exist when this function is called.
373+
374+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
375+
376+2019-03-15 Jonathon Jongsma <jjongsma@redhat.com>
377+
378+ Move channel registration to constructed vfunc
379+ For the Display Channel and the Cursor channel, move the call to
380+ reds_register_channel() to the _constructed() vfunc rather than calling
381+ it explicitly from RedWorker. This matches what other channels do.
382+
383+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
384+
385+2019-03-11 Victor Toso <me@victortoso.com>
386+
387+ display-channel: monitors config debug: add head number
388+ The difference is subtle but compared to what client receives, this
389+ could help identify values set to the wrong head, e.g:
390+
391+ First we received:
392+ | display-channel.c:180:monitors_config_debug: monitors config count:2 max:4
393+ | display-channel.c:184:monitors_config_debug: +0+0 1015x805
394+ | display-channel.c:184:monitors_config_debug: +1015+0 1024x740
395+
396+ And then:
397+ | display-channel.c:180:monitors_config_debug: monitors config count:3 max:4
398+ | display-channel.c:184:monitors_config_debug: +0+0 1015x805
399+ | display-channel.c:184:monitors_config_debug: +0+0 0x0
400+ | display-channel.c:184:monitors_config_debug: +1015+0 1024x740
401+
402+ In the first debug it would be helpful to have "head 0" and "head 1",
403+ to point out the temporary error in monitor's config message.
404+
405+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
406+
407+2019-03-06 Jonathon Jongsma <jjongsma@redhat.com>
408+
409+ Switch some boolean fields to 'bool' type
410+ For coding style consistency, use 'bool' when we want to represent a
411+ boolean value.
412+
413+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
414+
415+ Only send device display info to supported agents
416+ Only send the graphics device display info to agents that advertise the
417+ VD_AGENT_CAP_GRAPHICS_DEVICE_INFO capability
418+
419+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
420+
421+ Refactor agent_adjust_capabilities() function
422+ Make this a RedsState member function rather than a standalone function.
423+ This means that we simply pass RedsState* as an argument rather than the
424+ internal member variables of RedsState. This enables the following
425+ commit which handles the VD_AGENT_CAP_GRAPHICS_DEVICE_INFO capability to
426+ avoid sending graphics device info to agents that do not support it.
427+
428+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
429+
430+2019-03-06 Frediano Ziglio <fziglio@redhat.com>
431+
432+ test-stat: Adjust delay checks
433+ usleep under Windows does not seem to have the required precision.
434+ Use milliseconds and adjust check times according.
435+
436+ Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
437+
438+2019-03-05 Frediano Ziglio <fziglio@redhat.com>
439+
440+ Use proper format strings for spice_log
441+ Formatting string should be compatible with GLib.
442+ GLib uses formatting types compatible with GNU.
443+ For Linux this is not an issue as both systems (like a printf) and
444+ GLib one uses the same formatting type. However on Windows they
445+ differs potentially causing issues.
446+ This is also make worse as GLib 2.58 changed format attribute from
447+ __printf__ to gnu_printf (Microsoft compatibility formats like %I64d
448+ are still supported but you'll get warnings using GCC/Clang
449+ compilers).
450+
451+ Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
452+
453+2019-02-23 Frediano Ziglio <fziglio@redhat.com>
454+
455+ red-pipe-item: Removed some not necessary headers inclusions
456+ RedPipeItem is not using the Ring structures anymore.
457+ Also is not using GLib functionality.
458+ Just include base headers.
459+
460+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
461+
462+2019-02-14 Frediano Ziglio <fziglio@redhat.com>
463+
464+ reds: Check QXL ID registering interface
465+ Avoid to register multiple interface with the same ID.
466+ This would result in issues as 2 channels would have the same
467+ (channel_type, channel_id) which must be unique.
468+ Qemu always allocates QXL interface with IDs starting from 0.
469+
470+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
471+
472+ reds: Reuse agent_dev local variable
473+ The field is only assigned in do_spice_init, surely won't change
474+ in the meanwhile.
475+
476+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
477+
478+ reds: Use proper enumeration for read_state field
479+ Allows the compiler to catch some additional errors.
480+
481+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
482+
483+2019-02-13 Eduardo Lima (Etrunko) <etrunko@redhat.com>
484+
485+ meson: switch smartcard option to auto feature
486+ Make it compatible with spice-common.
487+
488+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
489+
490+ meson: Bump libcacard requirement to 2.5.1
491+ This had already been done for autotools in spice-common commit
492+ 924f47a653bd87fbd50229ee34b58d7b9a3f1ec8.
493+
494+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
495+
496+ meson: Use gnu_symbol_visibility keyword introduced in meson 0.48
497+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
498+
499+2019-02-12 Frediano Ziglio <fziglio@redhat.com>
500+
501+ Remove core parameter from main_dispatcher_new
502+ This was added in bd8771adbcf3ff34d14333cf874191e8d105f612.
503+ There's no reason to not use reds function instead.
504+ MainDispatcher needs to listen in the main thread that is the
505+ one provided by reds_core_* functions.
506+
507+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
508+
509+ test-stream-device: Check monitor ID messages
510+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
511+
512+ reds: Factor out a function to marshal VDAgentGraphicsDeviceInfo message
513+ Instead of scanning the monitor twice (one to compute the size
514+ and another to build the message) use a single function to
515+ marshal the message.
516+ This also fixes big endian machines (which are not supported).
517+ Marshal function is exported to make easier to test (see following
518+ patch).
519+
520+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
521+
522+ agent-msg-filter: Simplify code
523+ Most of the time result is set to AGENT_MSG_FILTER_OK, set at
524+ the beginning and change if necessary.
525+
526+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
527+
528+2019-02-11 Frediano Ziglio <fziglio@redhat.com>
529+
530+ reds: Fix typo in comment
531+
532+ reds: Fix typos in comments
533+ Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
534+
535+ agent-msg-filter: Add some comments to AgentMsgFilter structure
536+ Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
537+
538+ smartcard-channel-client: Update usage of GObject private structures
539+ This finished the work of 90ff154b36b3ab80350cb4a4d391db330bed2a76
540+ (cfr "Update usage of GObject private structures").
541+ Removes last call to g_type_class_add_private.
542+
543+ Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
544+
545+2019-02-11 Christophe Fergeau <cfergeau@redhat.com>
546+
547+ smartcard: Improve on_message_from_device readability
548+ This removes a not really useful switch/case, and changes the function
549+ to exit early on error cases, rather than exiting early in the nominal
550+ case.
551+
552+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
553+
554+ smartcard: Rework smartcard_get_vsc_msg_item a bit
555+ This renames the method to smartcard_new_vsc_msg_item as this creates a
556+ new object. This also removes the creation of a temporary VHeader which
557+ is then going to be duplicated.
558+
559+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
560+
561+ smartcard: Remove redundant test in smartcard_char_device_on_message_from_device()
562+ The function returns NULL if vheader->type is VSC_Init so no need to
563+ check it a second time.
564+
565+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
566+
567+ smartcard: Remove unused smartcard_get_vsc_msg_item argument
568+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
569+
570+2019-02-08 Christophe Fergeau <cfergeau@redhat.com>
571+
572+ char-device: Make send_tokens_to_client() optional
573+ Only RedCharDeviceVDIPortClass implements this vfunc, rather than
574+ forcing every classes deriving from RedCharDeviceClass to implement it,
575+ red_char_device_send_tokens_to_client() can deal with it.
576+
577+ Acked-by: Uri Lublin <uril@redhat.com>
578+
579+ doc: Document G_MESSAGES_DEBUG use
580+ Explain how to get more verbose logs out of spice-server
581+
582+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
583+
584+2019-02-08 Eduardo Lima (Etrunko) <etrunko@redhat.com>
585+
586+ Update usage of GObject private structures
587+ New functions and macros have been added in glib 2.38 to better handle
588+ this case.
589+
590+ https://gitlab.gnome.org/GNOME/glib/blob/c8de2b11bbbf5705ee20bf68d0c11e455b441312/NEWS
591+
592+ G_TYPE_INSTANCE_GET_PRIVATE will be deprecated in GLib 2.58.
593+
594+ https://gitlab.gnome.org/GNOME/glib/merge_requests/7/commits
595+
596+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
597+
598+2019-02-07 Christophe Fergeau <cfergeau@redhat.com>
599+
600+ ssl: Dump OpenSSL error stack on errors
601+ Bugs such as https://bugzilla.redhat.com/show_bug.cgi?id=1651882 can be
602+ quite tricky to figure out without the detailed OpenSSL error. This
603+ commit adds a detailed dump of the OpenSSL error stack when an OpenSSL
604+ failure happens.
605+
606+ In the bug above, this would have displayed:
607+ (process:13154): Spice-WARNING **: 05:43:10.139: reds.c:2816:reds_init_ssl: Could not load certificates from /etc/pki/libvirt-spice/server-cert.pem
608+
609+ (process:13154): Spice-WARNING **: 05:43:10.140: error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small
610+
611+ Acked-by: Uri Lublin <uril@redhat.com>
612+
613+2019-02-05 Christophe Fergeau <cfergeau@redhat.com>
614+
615+ memslot: Fix off-by-one error in group/slot boundary check
616+ RedMemSlotInfo keeps an array of groups, and each group contains an
617+ array of slots. Unfortunately, these checks are off by 1, they check
618+ that the index is greater or equal to the number of elements in the
619+ array, while these arrays are 0 based. The check should only check for
620+ strictly greater than the number of elements.
621+
622+ For the group array, this is not a big issue, as these memslot groups
623+ are created by spice-server users (eg QEMU), and the group ids used to
624+ index that array are also generated by the spice-server user, so it
625+ should not be possible for the guest to set them to arbitrary values.
626+
627+ The slot id is more problematic, as it's calculated from a QXLPHYSICAL
628+ address, and such addresses are usually set by the guest QXL driver, so
629+ the guest can set these to arbitrary values, including malicious values,
630+ which are probably easy to build from the guest PCI configuration.
631+
632+ This patch fixes the arrays bound check, and adds a test case for this.
633+ This fixes CVE-2019-3813.
634+
635+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
636+
637+ build-sys: Raise glib requirement to 2.38
638+ meson is already using 2.38, and most distros have a newer version:
639+ - Fedora 28 has 2.56
640+ - CentOS 7 has 2.46
641+ - Debian 9 has 2.50
642+
643+ This also matches what spice-common requires.
644+
645+ Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
646+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
647+
648+2019-02-04 Frediano Ziglio <fziglio@redhat.com>
649+
650+ red-stream-device: Constify stream_device_get_device_display_info result
651+ There should be no reason for the caller to modify the internal
652+ structure.
653+
654+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
655+
656+2019-02-01 Eduardo Lima (Etrunko) <etrunko@redhat.com>
657+
658+ meson: Use underscorify() instead of split()
659+
660+ m4: Remove repeated warnings suppression
661+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
662+
663+2019-01-31 Frediano Ziglio <fziglio@redhat.com>
664+
665+ event-loop: Port to Windows
666+ Use g_io_channel_win32_new_socket instead of g_io_channel_unix_new
667+
668+ Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
669+
670+ replay: Port to Windows
671+ Client process termination did not work for Windows, used Win32
672+ APIs.
673+
674+ Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
675+
676+ test-listen: Exclude Unix sockets part under Windows
677+ Windows does not support Unix sockets.
678+
679+ Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
680+
681+ reds: Explicitly include inttypes.h
682+ MingW does not include this header while including stdint.h so
683+ on Windows you need to include it.
684+
685+ Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
686+
687+ windows: Do not include headers not available on Windows
688+ This is a preparatory patch for next portability patches
689+
690+ Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
691+
692+ red-qxl: Use proper formatting string for size_t
693+ Avoids issues with LLP64 systems.
694+
695+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
696+
697+2019-01-30 Frediano Ziglio <fziglio@redhat.com>
698+
699+ display-channel: Remove unused includes
700+ display-channel.h is not using any of the definition from
701+ these headers.
702+ Adding a missing include to red-worker.c.
703+
704+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
705+
706+ red-stream-device: Fix "make syntax-check"
707+ Avoid using strncpy, considered not secure.
708+ In this case a simple memcpy is used, we are going to terminate
709+ the string in any case on the next line.
710+
711+ Acked-by: Lukáš Hrázký <lhrazky@redhat.com>
712+
713+ image-encoders: Initialize Zlib lazily
714+ Zlib structure take up more than 1MB and it is rarely used nowadays
715+ as it is not much effective.
716+ Initialise it only when necessary saving some memory in the normal
717+ case.
718+
719+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
720+
721+2019-01-30 Uri Lublin <uril@redhat.com>
722+
723+ smartcard: do not keep weak ref when device is NULL
724+ When a client disconnects, smartcard_channel_client_set_char_device
725+ is called with a NULL "device" argument. In that case there is
726+ no need to take a weak reference to the device.
727+
728+ Without this patch the server complains:
729+ g_object_add_weak_pointer: assertion 'G_IS_OBJECT (object)' failed
730+
731+ and aborts when a second client attempts to connect.
732+
733+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
734+
735+2019-01-29 Lukáš Hrázký <lhrazky@redhat.com>
736+
737+ Send the graphics device info from streaming agent to the vd_agent
738+ Adds the graphics device info from the streaming device(s) to the
739+ VDAgentGraphicsDeviceInfo message sent to the vd_agent.
740+
741+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
742+
743+ Receive the GraphicsDeviceInfo message from the streaming agent
744+ Receives the GraphicsDeviceInfo message from the streaming agent and
745+ stores the data in a list on the streaming device.
746+
747+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
748+
749+ Send the graphics device info to the vd_agent
750+ Sends the device address and device display IDs to the vdagent. The
751+ message is sent either in reaction to the SPICE_MSGC_MAIN_AGENT_START
752+ message or when the graphics device info changes.
753+
754+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
755+
756+2019-01-28 Lukáš Hrázký <lhrazky@redhat.com>
757+
758+ QXL interface: improve the spice_qxl_set_device_info documentation
759+ Instead of one unsupported example, present two real world examples.
760+
761+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
762+
763+2019-01-26 Lukáš Hrázký <lhrazky@redhat.com>
764+
765+ QXL interface: deprecate spice_qxl_set_max_monitors
766+ Replace it by spice_qxl_set_device_info. Note we can't use
767+ monitors_count for what's stored in max_monitors, because monitors_count
768+ denotes the length of the device_display_ids array, which
769+ spice_qxl_set_max_monitors doesn't touch.
770+
771+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
772+
773+ QXL interface: add a function to identify monitors in the guest
774+ Adds a function to let QEMU provide information to identify graphics
775+ devices and their monitors in the guest. The function
776+ (spice_qxl_set_device_info) sets the device address (e.g. a PCI path)
777+ and monitor ID -> device display ID mapping of displays exposed by given
778+ QXL interface.
779+
780+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
781+
782+2019-01-23 Frediano Ziglio <fziglio@redhat.com>
783+
784+ red-worker: Remove obsolete type definition
785+ AsyncCommand was removed in eb6c8ba025.
786+
787+ Acked-by: Victor Toso <victortoso@redhat.com>
788+
789+ ci: Remove dependencies from copr build
790+ Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
791+
792+ Trace streaming device data using recorder
793+ Trace when data is received from the guest and when is sent
794+ to the client.
795+
796+ Acked-by: Victor Toso <victortoso@redhat.com>
797+
798+ Allows to enable recorder integration
799+ recorder library will be used to collect some statistics during
800+ development.
801+
802+ Acked-by: Victor Toso <victortoso@redhat.com>
803+
804+ Update spice-common submodule
805+ This brings in the following changes:
806+
807+ Frediano Ziglio (11):
808+ Update --enable-celt051 help string
809+ test-marshaller: Make test_overflow static
810+ test-marshaller: Make main declaration easier
811+ test-region: Add missing dependencies
812+ ci: Run tests on Windows using wine
813+ Use a single copy of subject string
814+ log: Use proper format attribute for spice_log
815+ marshaller: Provide spice_marshaller_fill_iovec for Windows
816+ test: Add a test for subject_to_x509_name function
817+ lz: Avoid buffer reading overflow checking for image type
818+ lz: More checks on image sizes
819+
820+ Jonathon Jongsma (1):
821+ Fix some additional typos
822+
823+ Marc-André Lureau (5):
824+ Bump libcacard requirement to 2.5.1
825+ Add a .gitpublish
826+ build-sys: improve asciidoc rules to allow multiple targets
827+ quic: fix sign-compare warning
828+ meson: fix building for big-endian host
829+
830+ Acked-by: Victor Toso <victortoso@redhat.com>
831+
832+2019-01-17 Frediano Ziglio <fziglio@redhat.com>
833+
834+ Reuse SPICE_UPCAST instead of SPICE_CONTAINEROF where possible
835+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
836+
837+2019-01-15 Christophe Fergeau <cfergeau@redhat.com>
838+
839+ sasl: Simplify red_stream_write_u32_le call with '0' serveroutlen
840+ Instead of
841+ if (serveroutlen) {
842+ ...
843+ } else {
844+ red_stream_write_u32_le(stream, serveroutlen);
845+ }
846+
847+ use 'red_stream_write_u32_le(stream, 0);' in the else block as it's
848+ slightly more obvious.
849+
850+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
851+
852+2019-01-08 Frediano Ziglio <fziglio@redhat.com>
853+
854+ red-replay-qxl: Use PRIxPTR constant for string formatting
855+ These constants are meant to be used in format string for pointers
856+ types. Use them for portability.
857+
858+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
859+
860+2019-01-03 Frediano Ziglio <fziglio@redhat.com>
861+
862+ test-display-base: Remove error from "make syntax-check"
863+ Due to previous commit "make syntax-check" command reports:
864+
865+ prohibit_signal_without_use
866+ server/tests/test-display-base.c
867+ maint.mk: the above files include signal.h but don't use it
868+ make: *** [maint.mk:639: sc_prohibit_signal_without_use] Error 1
869+
870+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
871+
872+ test-display-base: Port to Windows
873+ Use GLib function to launch and wait process exit.
874+
875+ Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
876+
877+ replay: Force binary mode on input on Windows
878+ If input contains the binary record we can't have it modified
879+ during read.
880+
881+ Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
882+
883+2018-12-25 Frediano Ziglio <fziglio@redhat.com>
884+
885+ test-playback: Simplify wave generation formulae
886+ Split level computation, make clear is a sine wave on both channels.
887+
888+ Acked-by: Uri Lublin <uril@redhat.com>
889+
890+ test-playback: Remove obsolete debug
891+ Acked-by: Uri Lublin <uril@redhat.com>
892+
893+ test-playback: Update misleading comments
894+ We are waiting for a client connection, channel is already there
895+
896+ Acked-by: Uri Lublin <uril@redhat.com>
897+
898+ test-playback: Remove useless check for "frame"
899+ We just fill it up, can't be NULL.
900+
901+ Acked-by: Uri Lublin <uril@redhat.com>
902+
903+2018-12-23 Frediano Ziglio <fziglio@redhat.com>
904+
905+ reds_stat: Use EXIT_SUCCESS/EXIT_FAILURE for program result
906+ -1 is not much portable and standard.
907+
908+ Acked-by: Snir Sheriber <ssheribe@redhat.com>
909+
910+ reds_stat: Print errors on standard error, not standard output
911+ Acked-by: Snir Sheriber <ssheribe@redhat.com>
912+
913+2018-12-07 Frediano Ziglio <fziglio@redhat.com>
914+
915+ tests/pki: Use CA/certificate valid until 2048 and with 2048 bits
916+ This changes tests/pki/server-cert.pem and tests/pki/ca-cert.pem to have
917+ 2048 bits. These certificates were generated using the
918+ instructions on https://www.spice-space.org/spice-user-manual.html
919+ The -subj args were omitted, and the defaults suggested by openssl used.
920+ The -days parameter was changed to -days 10950, the bits to 2048.
921+
922+ This fixes https://gitlab.freedesktop.org/spice/spice/issues/27.
923+
924+ Some distros are starting to use stricter settings for their openssl
925+ configuration, which forbids 1024 bit keys, and causes test suite
926+ failures.
927+
928+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
929+
930+2018-12-06 Christophe Fergeau <cfergeau@redhat.com>
931+
932+ qxl: Release QXL resources in red_put_surface_cmd
933+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
934+
935+ display-channel: Store full RedSurfaceCmd, not just QXLReleaseInfoExt
936+ Now that we have a refcounted RedSurfaceCmd, we can store the command
937+ itself in DisplayChannel rather than copying QXLReleaseInfoExt. This
938+ will let us move the release of the QXL guest resources in red-parse-qxl
939+ in the next commit.
940+
941+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
942+
943+ qxl: Add red_surface_cmd_{new, ref, unref} helpers
944+ Currently, RedWorker is using stack-allocated variables for RedSurfaceCmd.
945+ Surface commands are rare enough that we can dynamically allocate them
946+ instead, and make the API in red-parse-qxl.h consistent with how other
947+ QXL commands are handled.
948+
949+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
950+
951+ qxl: Add red_update_cmd_{new, ref, unref} helpers
952+ Currently, RedUpdateCmd are allocated on the stack, and then
953+ initialized/uninitialized with red_{get,put}_update_cmd
954+ This makes the API inconsistent with what is being done for RedDrawable,
955+ RedCursor and RedMessage. QXLUpdateCmd are not occurring very often,
956+ we can dynamically allocate them instead, and get a consistent API.
957+
958+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
959+
960+ qxl: Release QXL resources in red_put_update_cmd
961+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
962+
963+ qxl: Add red_message_{new, ref, unref} helpers
964+ Currently, RedMessage are allocated on the stack, and then
965+ initialized/uninitialized with red_{get,put}_message
966+ This makes the API inconsistent with what is being done for RedDrawable
967+ and RedCursor. Since QXLMessage is just a (mostly unused/unsecure) debugging tool,
968+ we can dynamically allocate it instead, and get a consistent API.
969+
970+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
971+
972+ qxl: Release QXL resource in red_put_message
973+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
974+
975+ qxl: Add red_cursor_cmd_{new, ref, unref} helpers
976+ Currently, the cursor channel is allocating RedCursorCmd instances itself, and then
977+ calling into red-parse-qxl.h to initialize it, and doing something
978+ similar when releasing the data. This commit moves this common code to
979+ red-parse-qxl.[ch]
980+ The ref/unref are not strictly needed, red_cursor_cmd_free() would
981+ currently be enough, but this makes the API consistent with
982+ red_drawable_{new,ref,unref}.
983+
984+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
985+
986+ qxl: Fix guest resources release in red_put_drawable()
987+ At the moment, we'll unconditionally release the guest QXL resources in
988+ red_put_drawable() even if red_get_drawable() failed and did not
989+ initialize drawable->release_info_ext properly.
990+ This commit only sets RedDrawable::qxl once the guest resource have been
991+ successfully retrieved, and only free the guest QXL resources when
992+ RedDrawable::qxl is set.
993+
994+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
995+
996+ qxl: Make red_{get, put}_drawable static
997+ Rather than needing to call red_drawable_new() and then initialize it
998+ with red_get_drawable(), we can improve slightly red_drawable new so
999+ that red_drawable_{new,ref,unref} is all which is used by code out of
1000+ red-parse-qxl.c.
1001+
1002+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1003+
1004+ qxl: Move red_drawable_unref/red_drawable_new
1005+ RedDrawable really is a RedDrawCmd which is parsed by red-parse-qxl.h
1006+ Moreover, red_drawable_ref() is already defined inline in
1007+ red-parse-qxl.h, and red_drawable_unref() is declared there too even if
1008+ its code is still in red-worker.c
1009+ This commit moves them close to the other functions creating/unref'ing
1010+ QXL commands parsed by red-parse-qxl.h.
1011+
1012+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1013+
1014+2018-12-04 Frediano Ziglio <fziglio@redhat.com>
1015+
1016+ tests: Use g_assert_(non)null instead of g_assert
1017+ Just a style change, on more recent GLib would print a more
1018+ friendly error report.
1019+
1020+ Acked-by: Uri Lublin <uril@redhat.com>
1021+ Acked-by: Victor Toso <victortoso@redhat.com>
1022+
1023+2018-12-03 Marc-André Lureau <marcandre.lureau@redhat.com>
1024+
1025+ smartcard: set char device state
1026+ Follow all other char devices implementation (spicevmc, agent,
1027+ stream-device) and set the char device state when
1028+ connected/disconnected. This allows qemu to discard writes, optimize a
1029+ bit the source polling, and will trigger HUP events.
1030+
1031+ See related qemu "char/spice: discard write() if backend is
1032+ disconnected".
1033+
1034+ Note: sif->state() should probably be handled at the char-device
1035+ level. I am not sure what the smartcard channel really brings over
1036+ plain spicevmc...
1037+
1038+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1039+
1040+2018-11-26 Christophe Fergeau <cfergeau@redhat.com>
1041+
1042+ dcc: Add debug log when setting compression
1043+ Without this it's not obvious that a compression setting took effect.
1044+
1045+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1046+
1047+2018-11-16 Frediano Ziglio <fziglio@redhat.com>
1048+
1049+ tests: Add a small test for red_record_ APIs
1050+ Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
1051+
1052+ test-leaks: Avoid clashing with test-display-base ports
1053+ Is possible that port 5913 is already in use as tests that uses
1054+ test_new will attempt to use ports from 5912 to 5921 so use a port
1055+ not in that range.
1056+
1057+ Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
1058+
1059+ test-display-base: Fix warning message avoidance
1060+ test_new function attempts to detect attempts to listen to tcp ports
1061+ already in listening state detecting some messages during
1062+ spice_server_init. However the check is wrong (broken in recent
1063+ 34a44d3e940bcc "test-display-base: Avoid spurious errors due to listen
1064+ failures") and incomplete (missing message).
1065+
1066+ To better test this conditions put some of the ports in listening
1067+ state (like with a "nc -l 5912 & nc -l 5913 &" command) and run
1068+ tests in parallel (like with a "make check -j" command).
1069+
1070+ Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
1071+
1072+ ci: Ignore leak from GnuTLS p11 call
1073+ Fix Fedora 29 one-time leak.
1074+
1075+ Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
1076+
1077+ ci: Merge new glib.supp file
1078+ Merge from GLib master repository.
1079+
1080+ Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
1081+
1082+ red-replay-qxl: Remove useless end of line
1083+ Spice log functions already add an end of line.
1084+
1085+ Acked-by: Victor Toso <victortoso@redhat.com>
1086+
1087+2018-11-10 Frediano Ziglio <fziglio@redhat.com>
1088+
1089+ test-display-base: Avoid spurious errors due to listen failures
1090+ To set up a listening socket usually you call in sequence:
1091+ - socket;
1092+ - bind;
1093+ - listen.
1094+ If you try to bind() to a port when another socket is already
1095+ listening on that port, the bind() will fail.
1096+ However, it is possible that the bind() may succeed and the listen()
1097+ will fail, as demonstrated in the following sequence:
1098+ - socket() create socket 1;
1099+ - bind() to port N on socket 1;
1100+ - socket() create socket 2;
1101+ - bind() to port N on socket 2;
1102+ - listen() on socket 1;
1103+ - listen() on socket 2 <-- failure.
1104+
1105+ When running tests (especially multiple tests running in parallel), it
1106+ may sometimes happen that there are other tests already listening on
1107+ the port that we are trying to use. In this case, we want to ignore
1108+ this error and simply try to listen on a different port. We already
1109+ attempted to handle this scenario, but we were only ignoring bind()
1110+ errors and not listen() errors. So in the scenario mentioned above,
1111+ the listen() error was causing the entire test to fail instead of
1112+ allowing us to try to listen on another port.
1113+
1114+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
1115+
1116+2018-11-08 Frediano Ziglio <fziglio@redhat.com>
1117+
1118+ ci: Do not try to downgrade asciidoc anymore
1119+ Is not more necessary to downgrade asciidoc, the issue was fixed
1120+ in Fedora 29, now used by CI.
1121+
1122+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
1123+
1124+ char-device: Remove initial underscores from __red_char_device_write_buffer_get
1125+ Just cosmetic changes, the static function had underscores to
1126+ distinguish from the exported one which was recently renamed.
1127+
1128+ Acked-by: Lukáš Hrázký <lhrazky@redhat.com>
1129+
1130+2018-11-08 Lukáš Hrázký <lhrazky@redhat.com>
1131+
1132+ reds: move vdagent write buffer creation into a function
1133+ Adds a function to create a write buffer for sending a message to
1134+ vdagent from the server to prevent code duplication.
1135+
1136+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1137+
1138+ char-device: separate functions to get write buffer for client and server
1139+ Instead of having a single red_char_device_write_buffer_get function to
1140+ get both client and server buffers and decide by testing client == NULL,
1141+ have separate function for a client and for a server. The situation
1142+ should always be clear (you're either on the client or on the server
1143+ side) and you shouldn't need to parametrize that.
1144+
1145+ For the server case, add a use_token parameter instead of a separate
1146+ red_char_device_write_buffer_get_server_no_token function, as you may
1147+ want to parametrize that.
1148+
1149+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1150+
1151+2018-10-30 Frediano Ziglio <fziglio@redhat.com>
1152+
1153+ reds: Use monotonic time for ticket expiration
1154+ Avoid time adjustment issues.
1155+ For instance ticket validity can change when daylight time changes.
1156+
1157+ Acked-by: Lukáš Hrázký <lhrazky@redhat.com>
1158+
1159+2018-10-15 Frediano Ziglio <fziglio@redhat.com>
1160+
1161+ Use new common demarshallers.h
1162+ Avoids mismatching duplicate declarations causing potentially
1163+ ABI incompatibilities.
1164+
1165+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1166+
1167+2018-10-09 Frediano Ziglio <fziglio@redhat.com>
1168+
1169+ utils: Get monotonic time in a coherent way
1170+ Use a single function to get monotonic time.
1171+
1172+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1173+
1174+ display-channel: Remove useless parenthesis
1175+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1176+
1177+ red-stream: Propagate RedStreamSslStatus type
1178+ Do not convert RedStreamSslStatus enumeration type back to int.
1179+ This allows compilers to perform some more type safe checks.
1180+
1181+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1182+
1183+2018-10-08 Christophe Fergeau <cfergeau@redhat.com>
1184+
1185+ utils: Remove spice_get_monotonic_time_ms
1186+ This is a thin wrapper over g_get_monotonic_time_ms, and is called only
1187+ once, so we can call directly g_get_monotonic_time_ms instead.
1188+
1189+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1190+
1191+2018-09-28 Frediano Ziglio <fziglio@redhat.com>
1192+
1193+ ci: Use release build with Meson
1194+ Some compiler warnings are triggered only if optimisations are
1195+ turned on. By default with debug build optimisations are disabled.
1196+
1197+ Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
1198+
1199+2018-09-26 Eduardo Lima (Etrunko) <etrunko@redhat.com>
1200+
1201+ Bump meson requirement to 0.47.2
1202+ This new version ships the fix for the issue where 'check' keyword could
1203+ not be used in project definition, so we had to run that command again
1204+ only to check if it succeeded.
1205+
1206+ https://github.com/mesonbuild/meson/issues/3944
1207+
1208+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1209+ Acked-by: Victor Toso <victortoso@redhat.com>
1210+
1211+2018-09-25 Lukáš Hrázký <lhrazky@redhat.com>
1212+
1213+ red-qxl: remove an unnecessary level of indirection in create/destroy surface
1214+ Acked-by: Victor Toso <victortoso@redhat.com>
1215+
1216+2018-09-21 Lukáš Hrázký <lhrazky@redhat.com>
1217+
1218+ Count display channels for tablet mode check
1219+ Having a single QXL interface is not enough, there can be other (e.g.
1220+ streaming) display channels that make the tablet unusable. Add a check for the
1221+ number of display channels also being equal to 1. We still need the check for
1222+ QXL interaces, because the tablet only works with QXL.
1223+
1224+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1225+
1226+2018-09-19 Frediano Ziglio <fziglio@redhat.com>
1227+
1228+ syntax-check: Add missing contributors names to AUTHORS
1229+ Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
1230+
1231+2018-09-19 Changqing Li <changqing.li@windriver.com>
1232+
1233+ spice: fix compile error
1234+ fix below compile error:
1235+ format '%d' expects argument of type 'int', but argument 6 has
1236+ type 'long unsigned int' [-Werror=format=]
1237+
1238+ spice compile failed on 32bit system, since upstream commit
1239+ 9541cd2fe change %ld to %PRIdPTR, %PRIdPTR is %d, but argument
1240+ strm.total_out is uLong.
1241+
1242+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1243+
1244+2018-09-03 Eduardo Lima (Etrunko) <etrunko@redhat.com>
1245+
1246+ meson: Fix usage of add_project_arguments()
1247+ This function does accept a list of arguments, so there is no need to
1248+ iterate over it.
1249+
1250+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1251+
1252+2018-08-31 Eduardo Lima (Etrunko) <etrunko@redhat.com>
1253+
1254+ ci: Workaround asciidoc failure
1255+ Since commit e5a93d7a30f71f01052392d13e33e0373bccee8f asciidoc has been
1256+ failing. Frediano noticed that there is no such problem with Fedora 27,
1257+ and it looks like asciidoc version 8.6.10 in Fedora 28 is causing
1258+ the problem. Downgrading it to 8.6.8 seems to fix it while we don't
1259+ find the definite solution.
1260+
1261+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1262+
1263+2018-08-30 Eduardo Lima (Etrunko) <etrunko@redhat.com>
1264+
1265+ Update gitlab-ci to use meson
1266+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1267+
1268+ Add support for building with meson/ninja
1269+ In a comparison with current autotools build system, meson/ninja
1270+ provides a huge improvement in build speed, while keeping the same
1271+ functionalities currently available and being considered more user
1272+ friendly.
1273+
1274+ The new system coexists within the same repository with the current one,
1275+ so we can do more extensive testing of its functionality before deciding
1276+ if the old system can be removed, or for some reason, has to stay for
1277+ good.
1278+
1279+ - Meson: https://mesonbuild.com
1280+
1281+ This is the equivalent of autogen/configure step in autotools. It
1282+ generates the files that will be used by ninja to actually build the
1283+ source code.
1284+
1285+ The project has received lots of traction recently, with many GNOME
1286+ projects willing to move to this new build system. The following wiki
1287+ page has more details of the status of the many projects being ported:
1288+
1289+ https://wiki.gnome.org/Initiatives/GnomeGoals/MesonPorting
1290+
1291+ Meson has a python-like syntax, easy to read, and the documentation
1292+ on the project is very complete, with a dedicated page on how to port
1293+ from autotools, explaining how most common use cases can be
1294+ implemented using meson.
1295+
1296+ http://mesonbuild.com/Porting-from-autotools.html
1297+
1298+ Other important sources of information:
1299+
1300+ http://mesonbuild.com/howtox.html
1301+ http://mesonbuild.com/Syntax.html
1302+ http://mesonbuild.com/Reference-manual.html
1303+
1304+ - Ninja: https://ninja-build.org
1305+
1306+ Ninja is the equivalent of make in an autotools setup, which actually
1307+ builds the source code. It has being used by large and complex
1308+ projects such as Google Chrome, Android and LLVM. There is not much to
1309+ say about ninja (other than it is much faster than make) because we
1310+ won't interact directly with it as much, as meson does the middle man
1311+ job here. The reasoning for creating ninja in the first place is
1312+ explained on the following post:
1313+
1314+ http://neugierig.org/software/chromium/notes/2011/02/ninja.html
1315+
1316+ Also its manual provides more in-depth information about the design
1317+ principles:
1318+
1319+ https://ninja-build.org/manual.html
1320+
1321+ - Basic workflow:
1322+
1323+ Meson package is available for most if not all distros, so, taking
1324+ Fedora as an example, we only need to run:
1325+
1326+ # dnf -y install meson ninja-build.
1327+
1328+ With Meson, building in-tree is not possible at all, so we need to
1329+ pass a directory as argument to meson where we want the build to be
1330+ done. This has the advantage of creating builds with different options
1331+ under the same parent directory, e.g.:
1332+
1333+ $ meson ./build --prefix=/usr
1334+ $ meson ./build-extra -Dextra-checks=true -Dalignment-checks=true
1335+
1336+ After configuration is done, we call ninja to actually do the build.
1337+
1338+ $ ninja -C ./build
1339+ $ ninja -C ./build install
1340+
1341+ Ninja defaults to parallel builds, and this can be changed with the -j
1342+ flag.
1343+
1344+ $ ninja -j 10 -C ./build
1345+
1346+ - Hacking:
1347+
1348+ * meson.build: Mandatory for the project root and usually found under
1349+ each directory you want something to be built.
1350+
1351+ * meson_options.txt: Options that can interfere with the result of the
1352+ build.
1353+
1354+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1355+ Acked-by: Victor Toso <victortoso@redhat.com>
1356+
1357+2018-08-22 Snir Sheriber <ssheribe@redhat.com>
1358+
1359+ Support h265 in stream-channel
1360+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1361+
1362+2018-08-22 Christophe Fergeau <cfergeau@redhat.com>
1363+
1364+ build: Prepare for 0.14.1 release
1365+
1366+ Revert "Support h265 in stream-channel"
1367+ This commit needs an unreleased version of spice-protocol.
1368+ The revert is temporary in order to get the spice-server 0.14.1 release
1369+ out.
1370+
1371+ This reverts commit 9f5859c3ba5e1885dec78f131f96c93bbc37bc80.
1372+
1373+2018-08-17 Christophe Fergeau <cfergeau@redhat.com>
1374+
1375+ docs: Add documentation for the streaming device
1376+
1377+2018-08-16 Frediano Ziglio <fziglio@redhat.com>
1378+
1379+ Update spice-common submodule
1380+ This brings in the following changes:
1381+
1382+ Eduardo Lima (Etrunko) (5):
1383+ ci: Fix typo: celt501 -> celt051
1384+ meson: Make options accessible through parent project
1385+ meson: Fix checking for python
1386+ Meson: Make use of dictionary type introduced in version 0.47
1387+ Meson: Make use of 'feature' option type introduced in version 0.47
1388+
1389+ Frediano Ziglio (2):
1390+ ci: Fix Meson feature option
1391+ Fix flexible array buffer overflow
1392+
1393+ Lukáš Hrázký (1):
1394+ spice*.proto: Replace tabs with the appropriate number of spaces
1395+
1396+ Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
1397+
1398+2018-08-09 Uri Lublin <uril@redhat.com>
1399+
1400+ Remove unused structs QXLDrawArea and QXLDevInfo
1401+ The structure usage was removed from commit
1402+ 2ba69f9f8819daaa3d166c4c1c7e03b121b88a95
1403+ ("libspice: add surface 0 support").
1404+
1405+ They were never used by Qemu.
1406+
1407+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1408+
1409+2018-08-09 Lukáš Hrázký <lhrazky@redhat.com>
1410+
1411+ test-stream-device: Expect the g_log warning about invalid message
1412+ Fixes test-stream-device after adding a log warning about an invalid
1413+ message received on the stream device, glib tests fail on unexpected
1414+ warning messages.
1415+
1416+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1417+
1418+2018-08-09 Christophe Fergeau <cfergeau@redhat.com>
1419+
1420+ build: Fix build from tarballs
1421+ Following commit fcaf8d1a1, build from tarballs/make distcheck is broken
1422+ as spice-server-enums.h is not regenerated when building from tarballs,
1423+ and we don't have a -I$(top_srcdir) in our build flags, just
1424+ -I$(srcdir). This commit changes #include <server/spice-server-enums.h>
1425+ to #include <spice-server-enums.h> which avoids the problem fixed by
1426+ commit fcaf8d1a1 without breaking make distcheck.
1427+
1428+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1429+
1430+2018-08-08 Lukáš Hrázký <lhrazky@redhat.com>
1431+
1432+ Log the invalid message from the stream device
1433+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1434+
1435+2018-08-08 Christophe Fergeau <cfergeau@redhat.com>
1436+
1437+ build: Use <> rather than "" for including spice-server-enums.h
1438+ When using #include "spice-server-enums.h", it will be looked up first
1439+ in the directory containing the file being build, which is going to be
1440+ $srcdir when dcc.c includes it. However, spice-server-enums.h is a
1441+ generated file, so it will be in $builddir, not in $srcdir. This most of
1442+ the time won't be causing any problems, except when you happen to have
1443+ an invalid spice-server-enums.h in $srcdir and you are doing an
1444+ out-of-tree build.
1445+ Using #include <spice-server-enums.h> instead allows the correct
1446+ spice-server-enums.h file to be looked up.
1447+
1448+ Acked-by: Lukáš Hrázký <lhrazky@redhat.com>
1449+
1450+2018-08-06 Victor Toso <me@victortoso.com>
1451+
1452+ README: Report bugs to gitlab issue tracker
1453+ Acked-by: Snir Sheriber <ssheribe@redhat.com>
1454+
1455+2018-07-23 Eduardo Lima (Etrunko) <etrunko@redhat.com>
1456+
1457+ build: Move spice-common to subprojects/ directory
1458+ The reason for this commit is that Meson expects all submodules to be
1459+ placed in this subdirectory, and since autotools build is more flexible
1460+ in this case, we make some small adjustments to configure.ac and
1461+ Makefile.am files to accommodate for this change.
1462+
1463+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1464+
1465+2018-07-23 Christophe Fergeau <cfergeau@redhat.com>
1466+
1467+ dcc: Rework COMPRESS_DEBUG macro
1468+ Rather than using
1469+ #ifdef COMPRESS_DEBUG
1470+ spice_info(...);
1471+ #endif
1472+
1473+ we can #define COMPRESS_DEBUG to spice_debug() or to do nothing for a
1474+ slight readability improvement. This opportunity is used to replace
1475+ these spice_debug() calls with g_debug(). The "do nothing" macro is a bit
1476+ convoluted to ensure that we will have a compile-time check for our
1477+ g_debug args.
1478+
1479+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1480+
1481+2018-07-20 Christophe Fergeau <cfergeau@redhat.com>
1482+
1483+ dcc: Fix QUIC fallback in get_compression_for_bitmap()
1484+ There was a small regression introduced in get_compression_for_bitmap()
1485+ by f401eb07f dcc: Rewrite dcc_image_compress.
1486+ If SPICE_IMAGE_COMPRESSION_AUTO_GLZ is specified, and the bitmap has a
1487+ stride which is bigger than its width (ie it has padding), then
1488+ get_compression_for_bitmap() will return SPICE_IMAGE_COMPRESSION_OFF
1489+ while in that case, we used to use QUIC for compression.
1490+
1491+ This happens because that function in the AUTO_GLZ case first checks if
1492+ QUIC should be used, if not, it decides to use GLZ, but then decides it
1493+ can't because of the stride, so falls back to OFF, while it used to
1494+ fall back to QUIC.
1495+
1496+ This commit only slightly reworks a preexisting if (!can_lz_compress())
1497+ check so that it's unconditional rather than depending on the previous
1498+ checks having been unsuccessful.
1499+
1500+ This issue could be observed by using a spice-html5 without support for
1501+ uncompressed bitmaps with end-of-line padding by simply starting a f28
1502+ VM and connecting to it/moving the mouse cursor in it.
1503+
1504+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1505+
1506+ dcc: Improve can_lz_compress() comment
1507+ Both glz_encode and lz_encode error out if the bitmap stride does not
1508+ match the bitmap width.
1509+
1510+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1511+
1512+ worker: Fix 'seemless' typo in comment
1513+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1514+
1515+2018-07-19 Frediano Ziglio <fziglio@redhat.com>
1516+
1517+ test-stream-device: Check data are sent together
1518+ Check that data sent to device are collapsed in a single message.
1519+ The StreamChannel object is mocked in the test.
1520+ This checks that commit dcc3f995d9f5575e319adcfe530c477a7c294ff3
1521+ ("stream-device: handle_data: send whole message") is doing the
1522+ right thing.
1523+
1524+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1525+
1526+ test-stream-device: Factor out a function to start the test
1527+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1528+
1529+ test-stream-device: Put common parts in setup/teardown functions
1530+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1531+
1532+ test-stream-device: Check server detect and signal huge data
1533+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1534+
1535+ red-stream-device: Fix and check empty data messages
1536+ If guest sent an empty data message this was not parsed correctly.
1537+
1538+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1539+
1540+2018-07-18 Lukáš Hrázký <lhrazky@redhat.com>
1541+
1542+ Rename SpiceHead::id to monitor_id in the protocol
1543+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1544+
1545+2018-07-18 Frediano Ziglio <fziglio@redhat.com>
1546+
1547+ Update spice-common submodule
1548+ This brings in the following changes:
1549+
1550+ Christophe Fergeau (20):
1551+ build: Update git.mk to latest version
1552+ build: Remove docs/.gitignore
1553+ build: Add __pycache__/*.pyc to DISTCLEANFILES
1554+ log: Only install glib log handler if SPICE_DEBUG_LEVEL is set
1555+ test-logging: Improve debug level tests
1556+ test-region: Use GTest API
1557+ test-region: Replace direct printf with g_debug() calls
1558+ test-region: Don't call region_dump() by default
1559+ test-region: Remove unneeded printf
1560+ test-region: Replace spice_assert() with g_assert_true()
1561+ test-region: Add g_assert() checks
1562+ snd: Replace spice_printerr() use with g_warning
1563+ swcanvas: Remove canvas_create()
1564+ meson: Remove '(default: xxx)' from option description
1565+ log: Remove SPICE_DISABLE_ABORT
1566+ common: Remove spice_abort()
1567+ build: Remove spice_common.h
1568+ pixman: Use g_error() rather than g_abort()
1569+ build: Define GLIB_VERSION_MIN_REQUIRED/GLIB_VERSION_MAX_ALLOWED
1570+ quic: Wrap declaration/call of quic method in macros
1571+
1572+ Christophe de Dinechin (1):
1573+ Add SPICE_ATTR_NORETURN on prototype of error functions
1574+
1575+ Eduardo Lima (Etrunko) (5):
1576+ Add .gitlab-ci.yml file
1577+ meson: Enable '-std=c99' build flag
1578+ meson: Cleanup optional dependency checks
1579+ Update gitlab-ci to use meson
1580+ test-region: Decrease loop count by a factor of 10
1581+
1582+ Frediano Ziglio (36):
1583+ test-quic: Allows to specify multiple images to test
1584+ canvas_base: Rework DUMP_JPEG debugging
1585+ test-quic: Increase test timeout using Meson
1586+ ssl_verify: Fix build for newer LibreSSL
1587+ Revert "ssl_verify: Fix build for newer LibreSSL"
1588+ ssl_verify: Fix build for newer LibreSSL
1589+ test-region: Create proper test for region from source code
1590+ marshaller: Fix a possible leak
1591+ canvas_base: Make sure top_down is a boolean
1592+ marshal: Fix a bug with zero attribute
1593+ ptypes: Improve some attribute documentation
1594+ build: Reuse TEST_MARSHALLERS macro
1595+ build: Reindent macros
1596+ log: Remove spice_printerr macro
1597+ test-marshallers: Check for "zero" attribute
1598+ quic: Call encode from golomb_coding
1599+ canvas_base: Fix minor indentation issues
1600+ canvas_base: Avoid misaligned access decoding LZ4 data
1601+ meson: Remove -std=c99
1602+ quic: Add UPDATE_MODEL_COMP macro to iterate over channels
1603+ quic: Rework PIXEL_A/PIXEL_B macros
1604+ quic: Add SAME_PIXEL macro
1605+ quic: Make {UN, }COMPRESS_xx macros closer
1606+ quic: Add missing #undef SET_a/GET_a
1607+ quic: Call directly encode_state_run from templates.
1608+ quic: Add CORRELATE*/DECORRELATE* macros
1609+ quic: Add APPLY_ALL_COMP macro to iterate over channels
1610+ quic: Move all golomb decoding macros in a single place
1611+ quic: Add DECLARE_*_VARIABLES macros
1612+ quic: Introduce COPY_PIXEL macro
1613+ quic: Reorder macro declarations
1614+ quic: Unify rgb/non-rgb macro declarations
1615+ quic: Remove duplicate file
1616+ canvas_base: Check for overflows decoding LZ4
1617+ canvas_base: Change spice_warning to g_warning
1618+ tests: Join test-overflow and test-marshallers
1619+
1620+ Snir Sheriber (1):
1621+ protocol: Add support for h265 video codec
1622+
1623+ Acked-by: Lukáš Hrázký <lhrazky@redhat.com>
1624+
1625+2018-07-13 Frediano Ziglio <fziglio@redhat.com>
1626+
1627+ red-stream-device: Fix leaks in dispose and finalize chaining parent
1628+ dispose and finalize methods have to call parent relative
1629+ cleanup method to avoid leaking resources.
1630+
1631+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1632+
1633+2018-07-12 Frediano Ziglio <fziglio@redhat.com>
1634+
1635+ reds: Free device chain in spice_server_destroy to avoid leaks
1636+ Leak detectors did not manage to find leaks, possibly as double list
1637+ have all elements likely with a pointer to them.
1638+ The reference from the agent is necessary for inserting it into
1639+ the list.
1640+
1641+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1642+
1643+2018-07-11 Frediano Ziglio <fziglio@redhat.com>
1644+
1645+ glz-encoder-dict: Remove a warning compiling with CentOS 7
1646+ CentOS 7 compiler generate this warning:
1647+
1648+ glz-encoder-dict.c: In function 'glz_dictionary_pre_encode':
1649+ glz-encoder-dict.c:516:30: error: 'prev_seg_id' may be used uninitialized in this function [-Werror=maybe-uninitialized]
1650+ dict->window.segs[prev_seg_id].next = seg_id;
1651+ ^
1652+ glz-encoder-dict.c:492:22: note: 'prev_seg_id' was declared here
1653+ uint32_t seg_id, prev_seg_id;
1654+ ^
1655+
1656+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1657+
1658+ ci: Run an additional make check using Centos
1659+ Make sure we can compile and run base tests using latest Centos.
1660+
1661+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1662+
1663+2018-07-08 Christophe Fergeau <cfergeau@redhat.com>
1664+
1665+ tests: Add G_PID_FORMAT to glib compat header
1666+ G_PID_FORMAT was only added in glib 2.50.
1667+
1668+ Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
1669+
1670+2018-07-08 Uri Lublin <uril@redhat.com>
1671+
1672+ stream-device: handle_data: send whole message
1673+ SPICE expects to have each frame in a single message.
1674+ So far the stream-device did not do that.
1675+ That works fine for H264 streams but not for MJPEG.
1676+
1677+ The client handles by itself MJPEG streams, and not via
1678+ gstreamer, and is assuming that a message contains the
1679+ whole frame. Since it currently not, using spice-streaming-agent
1680+ with MJPEG plugin, confuses the client which burns CPU
1681+ till it fails and keeps complaining:
1682+ "GSpice-CRITICAL **: 15:53:36.984: need more input data"
1683+
1684+ This patch fixes that, by reading the whole message from the
1685+ device (the streaming agent) and sending it over to the client.
1686+
1687+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1688+
1689+2018-07-06 Christophe Fergeau <cfergeau@redhat.com>
1690+
1691+ build: Remove unneeded spice_common.h includes
1692+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
1693+
1694+2018-07-05 Christophe Fergeau <cfergeau@redhat.com>
1695+
1696+ red-record-qxl: Change license header to LGPLv2+
1697+ It's currently using a GPLv2+ header, which was probably a mistake given
1698+ the project overall license. It was created by a Red Hat employee, and
1699+ only modified by Red Hat employees since then, so the (c) Red Hat is
1700+ correct, and there are no other copyright holders to contact.
1701+
1702+2018-07-03 Frediano Ziglio <fziglio@redhat.com>
1703+
1704+ red-parse-qxl: Avoid invalid flag usage
1705+ self_bitmap flag is used for some complex drawing not possible
1706+ by QXL_DRAW_COPY commands. Having this flag set causes
1707+ spice-server do draw part of the screen, copy that part on new
1708+ allocated image and reduce network optimisations with no visual
1709+ changes.
1710+ Some drivers (like Windows 10 DOD) set this flag by mistake for
1711+ this command so reset it.
1712+
1713+ More details follow.
1714+
1715+ The self_bitmap flag is used for some drawing command requiring to mix
1716+ the frame buffer with some other image. For this specific
1717+ QXL_DRAW_COPY command self_bitmap is used by spice-server code during
1718+ cachine/sending (the reason for the cache is to cache images sent to
1719+ client so the relationship between the two parts of the code).
1720+ However the self_bitmap_image (an image created in spice-server if
1721+ this flags is set) is used only if src_bitmap of SpiceCopy structure
1722+ (the structure used to store the QXL_DRAW_COPY command inside
1723+ spice-server) is NULL. But in red_get_copy_ptr (red-parse-qxl.c, the
1724+ function that parse the QXL_DRAW_COPY command form the QXL device)
1725+ not having a src_bitmap is considered an error so the
1726+ self_bitmap_image won't be used.
1727+
1728+ Why this flag affects network performance?
1729+ When spice-server see this flag it update the frame buffer according
1730+ to the pending commands (commands to be sent or still to be drawn on
1731+ frame buffer). spice-server maintain a tree of commands used to reduce
1732+ rendering and command to send. More or less if a command is covering
1733+ other commands (for instance filling the entire screen with a single
1734+ color) the pending commands can be removed from the queue and not sent
1735+ to the client. However when an update of the frame buffer is requested
1736+ spice-server update the frame buffer removing the commands from the
1737+ tree but not from the client queue.
1738+
1739+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1740+
1741+ memslot: Remove error parameter from memslot_get_virt
1742+ Pointers to memory allocated in user space are never NULL.
1743+ The only exception can be if you explicitly map memory at zero.
1744+ There is however no reasons for such requirement and this practise
1745+ was also removed from Linux due to security reasons.
1746+ This API looks copied from a kernel environment where valid virtual
1747+ addresses can be NULL.
1748+
1749+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1750+
1751+ reds: Fix one case parsing invalid codec string
1752+ In case we pass something like "spice:mjpeg$%*" the last part is
1753+ ignore making the string parse correctly.
1754+ A single pair should end by either string terminator or pair terminator.
1755+
1756+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1757+
1758+ test-codecs-parsing: Add test case
1759+ Check if encoder contains an invalid character.
1760+
1761+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1762+
1763+2018-07-02 Jonathon Jongsma <jjongsma@redhat.com>
1764+
1765+ Rename parse_video_codecs() to parse_next_video_codec()
1766+ The new name describes the function more accurately. Also add
1767+ documentation for the function.
1768+
1769+2018-06-29 Frediano Ziglio <fziglio@redhat.com>
1770+
1771+ reds: Reuse strspn and strcspn functions
1772+ These functions are in the standard C library, not well known
1773+ but quite useful for parsing strings.
1774+
1775+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
1776+
1777+2018-06-28 Christophe Fergeau <cfergeau@redhat.com>
1778+
1779+ test-agent-msg-filter: Adjust for recent logging changes
1780+ Now warnings are printed through g_warning which causes the test to
1781+ fail. We need to use g_test_expect_message() to prevent that failure.
1782+
1783+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1784+
1785+ qxl: Remove red_channel_printerr()
1786+ It was only used twice, for what looks like adhoc debugging. This commit
1787+ removes it, similarly to what was done for some spice_printerr() calls.
1788+
1789+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1790+
1791+ Replace remaining spice_printerr() with g_warning()
1792+ The remaining occurrences of spice_printerr() are warnings when
1793+ something unexpected happens, they can be replaced with g_warning() so
1794+ that users of spice-server can redirect them with
1795+ g_log_set_default_handler().
1796+
1797+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1798+
1799+ Replace spice_printerr() use with red_channel_{debug, warning}
1800+ Depending on the context, we want to output a warning or just a debug
1801+ log.
1802+
1803+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1804+
1805+ Remove unneeded spice_printerr() calls
1806+ These calls seem to have been added for debugging for a very specific
1807+ purpose. At the very least, they should have been using g_debug() rather
1808+ than spice_printerr(). This commit removes these.
1809+
1810+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1811+
1812+2018-06-27 Frediano Ziglio <fziglio@redhat.com>
1813+
1814+ glz: Inline GET_{r,g,b} macros
1815+ With last changes are just used once and are straight forward.
1816+
1817+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
1818+
1819+ glz: Optimize SAME_PIXEL for RGB16
1820+ Do not extract all components and compare one by one, can be easily
1821+ compared together.
1822+
1823+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
1824+
1825+ glz: Move some macros to a common place
1826+ The macros for both depth are the same, reuse the definition.
1827+
1828+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
1829+
1830+2018-06-27 Christophe Fergeau <cfergeau@redhat.com>
1831+
1832+ sound: Don't mute recording when client reconnects
1833+ When a new record channel is added, the code relies on a snd_send() call
1834+ in record_channel_client_constructed() to send RECORD_START to the
1835+ client. However, at this point, snd_send() is non-functional because
1836+ the red_channel_client_pipe_add() call it makes is a no-op because
1837+ prepare_pipe_add() makes a connection check through
1838+ red_channel_client_is_connected() queueing the item. This connection
1839+ check returns FALSE at ::constructed() time as the channel client will
1840+ only become connected towards the end of
1841+ red_channel_client_initable_init() which runs after the object
1842+ instantiation is complete.
1843+
1844+ This causes a bug where starting recording and then
1845+ disconnecting/reconnecting the client does not successfully reenable
1846+ recording. This is a regression introduced by commit d8dc09
1847+ 'sound: Convert SndChannelClient to RedChannelClient'
1848+
1849+ This commit solves this issue by making PlaybackChannelClient and
1850+ RecordChannelClient implement GInitable, and move the code interacting
1851+ with the client in their _initable_init() function, as at this point the
1852+ objects will be able to send data.
1853+
1854+ https://bugzilla.redhat.com/show_bug.cgi?id=1549132
1855+
1856+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1857+
1858+2018-06-26 Frediano Ziglio <fziglio@redhat.com>
1859+
1860+ memslot: Return void* from memslot_get_virt
1861+ The result of this function is always cast to a pointer, there
1862+ is no reason to return an integer.
1863+ This API looks copied from a kernel environment where virtual
1864+ addresses can have different sizes compare to pointers.
1865+
1866+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1867+
1868+ jpeg-encoder: Remove JPEG_IMAGE_TYPE_RGB24
1869+ Never used.
1870+
1871+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1872+
1873+ jpeg-encoder: Avoid useless conversions
1874+ Define JpegEncoderContext as an abstract structure.
1875+ This allows to reduce casts.
1876+ Also remove some alignment warnings on some architecture like mips.
1877+
1878+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1879+
1880+ red-record-qxl: Remove potential leak
1881+ On some systems you need to call g_spawn_close_pid after
1882+ spawning a process to avoid leaks (currently Windows).
1883+
1884+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1885+
1886+ replay: Use GPid and G_PID_FORMAT for portability
1887+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1888+
1889+ Add possibly missing headers for pthread.h
1890+ In some environment pthread.h is not defined but its definitions
1891+ are used in some headers.
1892+ Actually happens using MingW.
1893+
1894+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1895+
1896+2018-06-25 Frediano Ziglio <fziglio@redhat.com>
1897+
1898+ stat-file: Exit earlier to reduce indentation
1899+ Just style change. Invert the if to exit earlier.
1900+
1901+ Acked-by: Christophe de Dinechin <dinechin@redhat.com>
1902+
1903+ dispatcher: Define pollfd variable only if needed
1904+ Acked-by: Christophe de Dinechin <dinechin@redhat.com>
1905+
1906+ Do not use bzero
1907+ Not defined in MingW.
1908+
1909+ Acked-by: Christophe de Dinechin <dinechin@redhat.com>
1910+
1911+ Use PRIxPTR constant for string formatting
1912+ These constants are meant to be used in format string for size_t
1913+ types. Use them for portability.
1914+
1915+ Acked-by: Snir Sheriber <ssheribe@redhat.com>
1916+
1917+2018-06-21 Christophe Fergeau <cfergeau@redhat.com>
1918+
1919+ channel: Remove unused 3rd red_channel_register_client_cbs() arg
1920+ It was probably meant to be used as a "user_data" argument for the
1921+ various callbacks, but turns out not to be used.
1922+
1923+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1924+
1925+2018-06-21 Frediano Ziglio <fziglio@redhat.com>
1926+
1927+ sound: Do not pass unused pointer
1928+ Client callbacks in sound channels do not use registered
1929+ data so don't pass a valid pointer making clear from
1930+ source that the parameter is not used.
1931+
1932+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1933+
1934+2018-06-20 Christophe Fergeau <cfergeau@redhat.com>
1935+
1936+ ssl: Allow to use ECDH ciphers with OpenSSL 1.0
1937+ Without an explicit call to SSL_CTX_set_ecdh_auto(reds->ctx, 1), OpenSSL
1938+ 1.0 (still used by el7) would not use ECDH ciphers (this is now
1939+ automatic with OpenSSL 1.1.0). This commit adds this missing call. It's
1940+ based on a suggestion from David Jasa
1941+
1942+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1943+
1944+ https://bugzilla.redhat.com/show_bug.cgi?id=1566597
1945+
1946+2018-06-20 Frediano Ziglio <fziglio@redhat.com>
1947+
1948+ red-worker: Remove not used include
1949+ poll is not used anymore by this file.
1950+
1951+ Acked-by: Lukáš Hrázký <lhrazky@redhat.com>
1952+
1953+ sound: Reduce conditional compilation
1954+ Acked-by: Lukáš Hrázký <lhrazky@redhat.com>
1955+
1956+2018-06-20 Uri Lublin <uril@redhat.com>
1957+
1958+ spice-common submodule: update url (add .git at the end)
1959+ With the move to gitlab.freedesktop.org the spice-common submodule
1960+ url changed, and now ends with .git
1961+
1962+ Update .gitmodules to reflect that.
1963+
1964+ Without this patch git submodule update (and ./autogen.sh)
1965+ fails on RHEL-7 (git version 1.8.3).
1966+ On Fedora 28 (git version 2.17.1) it succeeds as it's successfully
1967+ redirecting to spice-common.git url.
1968+
1969+ With git version 1.8.3:
1970+ $ git submodule update
1971+ Cloning into 'spice-common'...
1972+ error: RPC failed; result=22, HTTP code = 404
1973+ fatal: The remote end hung up unexpectedly
1974+ Clone of 'https://gitlab.freedesktop.org/spice/spice-common' into submodule path 'spice-common' failed
1975+
1976+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
1977+
1978+2018-06-20 Christophe Fergeau <cfergeau@redhat.com>
1979+
1980+ build: Use SPICE_CHECK_CELT051 in configure.ac
1981+ spice-common provides a m4 macro to check for celt, but spice-server is
1982+ not using it. With the recent disabling of celt in spice-common, the
1983+ default in spice-server got out of sync. It's better to use the same check
1984+ everywhere, even though in spice-server its only use is to show
1985+ --enable-celt051 in --help output.
1986+
1987+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1988+
1989+2018-06-20 Snir Sheriber <ssheribe@redhat.com>
1990+
1991+ Support h265 in stream-channel
1992+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
1993+
1994+2018-06-19 Frediano Ziglio <fziglio@redhat.com>
1995+
1996+ ci: Add make distcheck test
1997+ Acked-by: Snir Sheriber <ssheribe@redhat.com>
1998+
1999+2018-06-18 Frediano Ziglio <fziglio@redhat.com>
2000+
2001+ build: Remove unsupported --enable-automated-tests option on make distcheck
2002+ --enable-automated-tests option was removed in commit 6517ea5cbb07b
2003+ ("test-display-base: Always compile with AUTOMATED_TESTS enabled").
2004+
2005+ Acked-by: Christophe de Dinechin <dinechin@redhat.com>
2006+
2007+2018-06-18 Christophe Fergeau <cfergeau@redhat.com>
2008+
2009+ Update spice-common submodule
2010+ This brings in the following changes:
2011+
2012+ Christophe Fergeau (21):
2013+ quic: Remove configurable RLE_PRED
2014+ quic: Remove configurable PRED
2015+ quic: Get rid of QUIC_RGB #define
2016+ quic: Get rid of RLE_STAT #define
2017+ quic: Get rid of RLE #define
2018+ quic: Factor common code
2019+ quic: Introduce CommonState *state variable in templates
2020+ quic: s/decorrelate_drow/correlate_row
2021+ quic: Add macros to make quic_tmpl.c much closer to quic_rgb_tmpl.c
2022+ quic: Remove unused argument in uncompress_row{0, }
2023+ quic: Use channel->correlate_row in macros
2024+ quic: Add test case for compression/decompression
2025+ build: Ensure we link with -lm if needed
2026+ build: Disable celt 0.5.1 by default
2027+ build: By default, error out if Opus is missing
2028+ build: Use AM_COND_IF
2029+ build: Remove checks for functions which are never called
2030+ build: Remove bitops.h
2031+ build: Move client sources to libspice_common_client_la_SOURCES
2032+ meson: Support auto/true/false for optional dependencies
2033+ meson: Remove check for vfork
2034+
2035+ Eduardo Lima (Etrunko) (7):
2036+ build: Remove FIXME_SERVER_SMARTCARD hack
2037+ Fix demarshaller code generator
2038+ Fix field names for Smartcard protocol structures
2039+ Fix cast to spice_marshaller_item_free_func function
2040+ Bump glib requirements to 2.38
2041+ test-quic: Fix -Wsign-compare warning
2042+ Add support for building with meson/ninja
2043+
2044+ Frediano Ziglio (19):
2045+ codegen: Add some comments
2046+ codegen: Removed unused get_type methods
2047+ protocol: Use a typedef to specify stream_id type
2048+ lz: Move ENCODE_PIXEL for RGB24 and RGB32 to a common place
2049+ Fix integer overflows computing sizes
2050+ Write a small test to test possible crash
2051+ Avoid integer overflow computing image sizes
2052+ Fix generation of Smartcard channel
2053+ test-overflow: Remove a leak in the test
2054+ marshaller: Remove initial underscore from static function
2055+ codegen: Remove duplicate client and server code from ChannelType::resolve
2056+ Check for messages with duplicate names inside a channel
2057+ Check for messages with duplicate values inside a channel
2058+ lz: Optimise SAME_PIXEL for RGB16
2059+ lz: Inline GET_{r,g,b} macros
2060+ quic: Remove 'no-inline' hack
2061+ quic: Remove some too strict asserts in hot paths
2062+ quic: Fix endianness encoding
2063+ quic: Use __builtin_clz if available
2064+
2065+ Jonathon Jongsma (2):
2066+ Remove extra self parameter from member function
2067+ miLineArc(): initialize edge1, edge2
2068+
2069+ Victor Toso (1):
2070+ messages: document limitation of id in StreamCreate
2071+
2072+ build: Explicitly disable celt051 when running make distcheck
2073+ With spice-common commit 72b0d603e12, SPICE_CHECK_CELT051 will error out
2074+ if celt051-devel is installed, but neither --enable-celt051 nor
2075+ --disable-celt051 are specified. This could be a problem when running
2076+ make distcheck, so this commit adds --disable-celt051 so that we never
2077+ hit that error.
2078+
2079+ Acked-by: Victor Toso <victortoso@redhat.com>
2080+
2081+2018-06-18 Frediano Ziglio <fziglio@redhat.com>
2082+
2083+ Use "base" as pipe item base field name
2084+ Most of pipe items use this name for the base field.
2085+ This also allows to use SPICE_UPCAST macros instead of a long
2086+ SPICE_CONTAINEROF.
2087+
2088+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2089+
2090+ reds: Remove possible alignment warning using Clang
2091+ Although capabilities inside link message are handled as arrays
2092+ of 4 bytes unsigned integers we don't need capabilities to be
2093+ aligned to 4 bytes just to call g_memdup so use a pointer to
2094+ uint8_t instead.
2095+
2096+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2097+
2098+ red-channel-client: Do not allocate iovec array statically in the class
2099+ This array is just used locally in red_channel_client_handle_outgoing
2100+ so declare it there.
2101+
2102+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2103+
2104+2018-06-14 Christophe Fergeau <cfergeau@redhat.com>
2105+
2106+ ci: Pass --enable-celt051 to configure
2107+ It's now mandatory to explicitly enable/disable CELT at configure time
2108+ if celt051-devel is installed.
2109+
2110+ Acked-by: Victor Toso <victortoso@redhat.com>
2111+
2112+2018-06-08 Lukáš Hrázký <lhrazky@redhat.com>
2113+
2114+ Remove excessive logging of an area being drawn
2115+ Removes debug messages that are logged on every draw, spamming the log
2116+ excessively when debugging.
2117+
2118+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2119+
2120+2018-06-05 Frediano Ziglio <fziglio@redhat.com>
2121+
2122+ ci: Add some needed Valgrind suppression rule
2123+ From Gitlab CI:
2124+
2125+ =17955== 16 bytes in 1 blocks are possibly lost in loss record 725 of 2,079
2126+ ==17955== at 0x4C2DBAB: malloc (vg_replace_malloc.c:299)
2127+ ==17955== by 0x4011D17: tls_get_addr_tail.isra.0 (in /usr/lib64/ld-2.27.so)
2128+ ==17955== by 0x4017997: __tls_get_addr (in /usr/lib64/ld-2.27.so)
2129+ ==17955== by 0xEE4534B: gnutls_rnd (in /usr/lib64/libgnutls.so.30.20.2)
2130+ ==17955== by 0xEE1F254: ??? (in /usr/lib64/libgnutls.so.30.20.2)
2131+ ==17955== by 0xEE1F947: ??? (in /usr/lib64/libgnutls.so.30.20.2)
2132+ ==17955== by 0xEE231B5: ??? (in /usr/lib64/libgnutls.so.30.20.2)
2133+ ==17955== by 0xEE24D67: gnutls_handshake (in /usr/lib64/libgnutls.so.30.20.2)
2134+ ==17955== by 0xEBD4FEA: ??? (in /usr/lib64/gio/modules/libgiognutls.so)
2135+ ==17955== by 0x7463936: g_task_thread_pool_thread (gtask.c:1331)
2136+ ==17955== by 0x7A3E932: g_thread_pool_thread_proxy (gthreadpool.c:307)
2137+ ==17955== by 0x7A3DF29: g_thread_proxy (gthread.c:784)
2138+ ==17955== by 0x8284563: start_thread (in /usr/lib64/libpthread-2.27.so)
2139+ ==17955== by 0x859631E: clone (in /usr/lib64/libc-2.27.so)
2140+ ==17955==
2141+ ==17955== 32 bytes in 1 blocks are possibly lost in loss record 1,234 of 2,079
2142+ ==17955== at 0x4C2DBAB: malloc (vg_replace_malloc.c:299)
2143+ ==17955== by 0x4011D17: tls_get_addr_tail.isra.0 (in /usr/lib64/ld-2.27.so)
2144+ ==17955== by 0x4017997: __tls_get_addr (in /usr/lib64/ld-2.27.so)
2145+ ==17955== by 0xCAA5173: __cxa_get_globals (in /usr/lib64/libstdc++.so.6.0.25)
2146+ ==17955== by 0xCAA6186: __cxa_throw (in /usr/lib64/libstdc++.so.6.0.25)
2147+ ==17955== by 0xC601457: ??? (in /usr/lib64/libproxy.so.1.0.0)
2148+ ==17955== by 0xC5F6BB6: ??? (in /usr/lib64/libproxy.so.1.0.0)
2149+ ==17955== by 0xC5F7089: ??? (in /usr/lib64/libproxy.so.1.0.0)
2150+ ==17955== by 0xC5F7470: px_proxy_factory_get_proxies (in /usr/lib64/libproxy.so.1.0.0)
2151+ ==17955== by 0xC3E64E3: ??? (in /usr/lib64/gio/modules/libgiolibproxy.so)
2152+ ==17955== by 0x7463936: g_task_thread_pool_thread (gtask.c:1331)
2153+ ==17955== by 0x7A3E932: g_thread_pool_thread_proxy (gthreadpool.c:307)
2154+ ==17955== by 0x7A3DF29: g_thread_proxy (gthread.c:784)
2155+ ==17955== by 0x8284563: start_thread (in /usr/lib64/libpthread-2.27.so)
2156+ ==17955== by 0x859631E: clone (in /usr/lib64/libc-2.27.so)
2157+
2158+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2159+
2160+ ci: Merge new Valgrind suppression rule from official glib.supp
2161+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2162+
2163+ glz-encoder: Avoid double byte swap sending image magic
2164+ encode_32 already deals with endian, don't swap twice.
2165+ Tested with a ppc64 server machine and a x64 client.
2166+
2167+ This looks the reverse of a previous patch (59c6c82) supposed to fix big
2168+ endian machine. encode_32 has been always:
2169+
2170+ static inline void encode_32(Encoder *encoder, unsigned int word)
2171+ {
2172+ encode(encoder, (uint8_t)(word >> 24));
2173+ encode(encoder, (uint8_t)(word >> 16) & 0x0000ff);
2174+ encode(encoder, (uint8_t)(word >> 8) & 0x0000ff);
2175+ encode(encoder, (uint8_t)(word & 0x0000ff));
2176+ }
2177+
2178+ while encode basically is similar to a putc on a FILE stream so is writing
2179+ numbers from host endian to big endian order.
2180+ The "main" endian (the one more tested since ever) is host/guest being
2181+ little endian. So if you call encode_32 with a 0x01020304 you get 4 bytes
2182+ in the order 1, 2, 3, 4.
2183+ Before and after 59c6c82 LZ_MAGIC was defined as:
2184+ #define LZ_MAGIC (*(uint32_t *)"LZ ")
2185+ so on little endian this was 0x4c, 0x5a, 0x20, 0x20 that is 0x20205a4c
2186+ which written through encode_32 become 0x20, 0x20, 0x5a, 0x4c so we can say
2187+ that at the end on the network we must have 0x20, 0x20, 0x5a, 0x4c.
2188+ On big endian however LZ_MAGIC got the value 0x4c5a2020 which written
2189+ through encode_32 get 0x4c, 0x5a, 0x20, 0x20 which is the opposite
2190+ expected. So patch 59c6c82 reverted the order having again 0x20, 0x20,
2191+ 0x5a, 0x4c on the network.
2192+ However commit 5a7e587 (spice-common), in an attempt to avoid double
2193+ swapping on LZ, changed LZ_MAGIC to
2194+ #define LZ_MAGIC 0x20205a4c
2195+ breaking endianness again for GLZ code.
2196+
2197+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2198+
2199+ README: Update required spice protocol version
2200+
2201+2018-05-24 Christophe Fergeau <cfergeau@redhat.com>
2202+
2203+ worker: Remove display_is_connected()
2204+ It's only called once, and when it's called, we will have dereferenced
2205+ worker->display_channel a few lines before in
2206+ display_channel_set_monitors_config_to_primary(), so this cannot be
2207+ NULL. The 'if (worker->display_channel)' check can thus be removed, so
2208+ display_is_connected() becomes just red_channel_is_connected().
2209+
2210+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
2211+
2212+ worker: Use more local vars in dev_create_primary_surface
2213+ There's already a 'display' variable equal to worker->display_channel
2214+ which is not consistently used. This commit also adds a new 'channel'
2215+ local variable to limit the number of upcasts to RedChannel.
2216+
2217+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
2218+
2219+2018-05-10 Frediano Ziglio <fziglio@redhat.com>
2220+
2221+ char-device: Avoid possible invalid function pointer cast
2222+ This is reported by GCC 8.0.1 (Fedora 28).
2223+ Instead of doing a possible invalid cast destroy and create the
2224+ queue again.
2225+
2226+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2227+
2228+ red-channel: Avoid possible invalid function pointer type cast
2229+ Avoid casting function pointer with different argument providing
2230+ a proper utility instead.
2231+
2232+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2233+
2234+ event-loop: Avoid possible compiler warning
2235+ With GCC 8.0.1 (Fedora 28), cast to different function pointer
2236+ can lead to warnings, like:
2237+
2238+ event-loop.c: In function ‘watch_update_mask’:
2239+ event-loop.c:146:42: error: cast between incompatible function types from ‘gboolean (*)(GIOChannel *, GIOCondition, void *)’ {aka ‘int (*)(struct _GIOChannel *, enum <anonymous>, void *)’} to ‘gboolean (*)(void *)’ {aka ‘int (*)(void *)’} [-Werror=cast-function-type]
2240+ g_source_set_callback(watch->source, (GSourceFunc)watch_func, watch, NULL);
2241+ ^
2242+ cc1: all warnings being treated as errors
2243+
2244+ As g_source_set_callback expect a function pointer which type
2245+ changes based on the type of source (so is expected) silent
2246+ the possible warning.
2247+
2248+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2249+
2250+2018-05-10 Snir Sheriber <ssheribe@redhat.com>
2251+
2252+ docs: Update links in README and manual
2253+ Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2254+
2255+2018-04-24 Frediano Ziglio <fziglio@redhat.com>
2256+
2257+ glz-encoder: Do not discard top bits of lower part sending 64 bit ints
2258+ When GLZ code attempts to send a 64 bit integer the 8 top bit of
2259+ the lower (32 bits) part of the number are stripped due to a bug.
2260+
2261+ This was discovered by Zhongqiang Huang <useprxf@gmail.com>
2262+
2263+ Reported-by: Zhongqiang Huang <useprxf@gmail.com>
2264+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2265+
2266+2018-04-20 Frediano Ziglio <fziglio@redhat.com>
2267+
2268+ stream-channel: Implements monitors_config
2269+ Although not necessary for a single monitor DisplayChannel implementation
2270+ this make the DisplayChannels more coherent from the client
2271+ point of view.
2272+
2273+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2274+
2275+2018-04-19 Victor Toso <me@victortoso.com>
2276+
2277+ tests: add test-listen executable to gitignore
2278+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
2279+
2280+2018-04-17 Christophe Fergeau <cfergeau@redhat.com>
2281+
2282+ qxl: Remove 'blackness' and 'invers' put/get methods
2283+ SpiceWhiteness/SpiceBlackness/SpiceInvers are 3 typedef for the same
2284+ type, no need to have 3 identical red_put_xxx/red_get_xxx methods.
2285+
2286+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
2287+
2288+ qxl: Remove red_put_blend()
2289+ SpiceBlend is a typedef to SpiceCopy, and red_put_blend() and
2290+ red_put_copy() are identical, so we can add a #define red_put_blend
2291+ red_put_copy similar to the one we already have for red_get_blend.
2292+
2293+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
2294+
2295+2018-04-17 Frediano Ziglio <fziglio@redhat.com>
2296+
2297+ common-graphics-channel: Use manual flushing on stream to decrease packet fragmentation
2298+ In order to use the new TCP_CORK feature, disable auto flush.
2299+
2300+ Depending on channel implementation and purpose of the channel enabling
2301+ blindly for all channels could cause performance issues, specifically if
2302+ flush is not done at the right time.
2303+ CommonGraphicsChannel channels were tested to make sure is not that case.
2304+
2305+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2306+
2307+ red-stream: Implements flush using TCP_CORK
2308+ Cork is a system interface implemented by Linux and some *BSD systems to
2309+ tell the system that other data are expected to be written to a socket.
2310+ This allows the system to reduce network fragmentation waiting for network
2311+ packets to be complete.
2312+
2313+ Using some replay capture and some instrumentation resulted in a
2314+ bandwith reduction of 11% and a packet reduction of 56%.
2315+
2316+ The tests was done using replay utility so results could be a bit different
2317+ from real cases as:
2318+ - replay goes as fast as it can, for instance packets could
2319+ be merged by the kernel decreasing packet numbers and a bit
2320+ byte spent (this actually make the following improves worse);
2321+ - there are fewer channels (no much cursor, sound, etc).
2322+ The following tests shows count packet and total bytes from server to
2323+ client using a real network. I used a direct cable connection using 1gb
2324+ connection and 2 laptops.
2325+
2326+ cork: 537 1582240
2327+ cork: 681 1823754
2328+ cork: 524 1583287
2329+ cork: 538 1582350
2330+ no cork: 1329 1834630
2331+ no cork: 1290 1829094
2332+ no cork: 1289 1830164
2333+ no cork: 1317 1833589
2334+ no cork: 1320 1835705
2335+
2336+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2337+
2338+ red-stream: Define interface for manual flush
2339+ The writing to network was always immediate.
2340+ Every write in the stream causes a write to the OS.
2341+ This can have some penalty if you don't write large data as network
2342+ packets can be more fragmented or you encrypt data in smaller chunks
2343+ (when data are encrypted some padding is added then data is split in
2344+ multiple of encryption block which is usually the size of encryption
2345+ key and this is done for every write).
2346+ Define an interface to allow higher levels code to tell low level when
2347+ data should be sent to remote or when can wait more data.
2348+
2349+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2350+
2351+ ci: Workaround bug in Valgrind detecting memcpy instead of memmove
2352+ Due to a bug in current packaged Valgrind in the CI (1:3.13.0-13.fc27)
2353+ check-valgrind is failing with:
2354+
2355+ ==17986== Source and destination overlap in memcpy_chk(0x72c060, 0x72c068, 33)
2356+ ==17986== at 0x4C344F0: __memcpy_chk (vg_replace_strmem.c:1581)
2357+ ==17986== by 0x40E7E9: check_vmc_error_message (test-stream-device.c:166)
2358+ ==17986== by 0x40EFD4: test_stream_device_format_after_data (test-stream-device.c:349)
2359+ ==17986== by 0x7A012E9: test_case_run (gtestutils.c:2157)
2360+ ==17986== by 0x7A012E9: g_test_run_suite_internal (gtestutils.c:2241)
2361+ ==17986== by 0x7A0121A: g_test_run_suite_internal (gtestutils.c:2253)
2362+ ==17986== by 0x7A014C1: g_test_run_suite (gtestutils.c:2329)
2363+ ==17986== by 0x7A014E0: g_test_run (gtestutils.c:1594)
2364+ ==17986== by 0x40951A: main (test-stream-device.c:410)
2365+ ==17986==
2366+
2367+ By default during CI build _FORTIFY_SOURCE is enabled, which turns memmove
2368+ into __memmove_chk, which is wrongly turned into __memcpy_chk when running
2369+ under Valgrind.
2370+ Setting _FORTIFY_SOURCE to 0 prevents the use of __memmove_chk, and avoids
2371+ triggering the Valgrind bug.
2372+
2373+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2374+
2375+2018-04-16 Christophe Fergeau <cfergeau@redhat.com>
2376+
2377+ Slight simplification of red_channel_client_push() logic
2378+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
2379+
2380+ cursor: Rename cursor_marshall to red_marshall_cursor
2381+ The name is more consistent with red_marshall_cursor_init.
2382+
2383+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
2384+
2385+ cursor: Delay release of QXL guest cursor resources
2386+ There's an implicit API/ABI contract between QEMU and SPICE that SPICE
2387+ will keep the guest QXL resources alive as long as QEMU can hold a
2388+ pointer to them. This implicit contract was broken in 1c6e7cf7 "Release
2389+ cursor as soon as possible", causing crashes at migration time.
2390+ While the proper fix would be in QEMU so that spice-server does not need
2391+ to have that kind of knowledge regarding QEMU internal implementation,
2392+ this commit reverts to the pre-1c6e7cf7 behaviour to avoid a regression
2393+ while QEMU is being fixed.
2394+
2395+ This version of the fix is based on a suggestion from Frediano Ziglio.
2396+
2397+ https://bugzilla.redhat.com/show_bug.cgi?id=1540919
2398+
2399+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
2400+
2401+2018-04-11 Frediano Ziglio <fziglio@redhat.com>
2402+
2403+ test-stream-device: Test we can read empty capabilities
2404+ Code can have problems reading empty messages, check we can
2405+ handle it.
2406+
2407+ Acked-by: Christophe de Dinechin <dinechin@redhat.com>
2408+
2409+ stream-device: Handle capabilities
2410+ Handle capabilities from guest device.
2411+ Send capability to the guest when device is opened.
2412+ Currently there's no capabilities set on the message sent.
2413+ On the tests we need to discard the capability message before
2414+ reading the error.
2415+
2416+ Acked-by: Christophe de Dinechin <dinechin@redhat.com>
2417+
2418+ stream-device: Factor out function to fill message headers
2419+ This function will be reused to initialise different message
2420+ headers.
2421+
2422+ Acked-by: Christophe de Dinechin <dinechin@redhat.com>
2423+
2424+2018-04-10 Frediano Ziglio <fziglio@redhat.com>
2425+
2426+ red-parse-qxl: Remove unused device_data field
2427+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2428+
2429+2018-04-10 Christophe Fergeau <cfergeau@redhat.com>
2430+
2431+ cursor: Consistently use g_memdup() for cursor data
2432+ Currently, red-parse-qxl.c uses g_malloc+memcpy to duplicate the cursor
2433+ data when it could use g_memdup() instead. red-stream-device.c does the
2434+ same thing but uses spice_memdup(). This commit makes use of g_memdup()
2435+ in both cases so that this memory is consistently allocated through
2436+ glib.
2437+
2438+2018-04-06 Frediano Ziglio <fziglio@redhat.com>
2439+
2440+ syntax-check: Add missing contributors names to AUTHORS
2441+ Acked-by: Victor Toso <victortoso@redhat.com>
2442+
2443+2018-04-05 Lukáš Hrázký <lhrazky@redhat.com>
2444+
2445+ Rename the virtio port for streaming
2446+ The name 'com.redhat.stream.0' is too generic and in no way denotes it
2447+ belongs to SPICE. It is preferred to have the project's domain in the
2448+ name and Red Hat doesn't own the project. Rename it to
2449+ org.spice-space.stream.0.
2450+
2451+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
2452+
2453+2018-03-19 Frediano Ziglio <fziglio@redhat.com>
2454+
2455+ video-stream: Improve RedUpgradeItem documentation
2456+ Artifacts are due to lossy compression of streaming
2457+
2458+ Acked-by: Uri Lublin <uril@redhat.com>
2459+
2460+ Use --enable-extra-checks option provided by spice-common
2461+ Reuse option from common code.
2462+ Also reuse spice_extra_checks constant instead of using the preprocessor
2463+ macro directly.
2464+
2465+ Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2466+
2467+2018-03-14 Frediano Ziglio <fziglio@redhat.com>
2468+
2469+ valgrind: Ignore some library leaks
2470+ Ignore getaddrinfo and libproxy leaks.
2471+
2472+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2473+
2474+ test-listen: Increase failure timeout
2475+ The timeout is too short when the test run under Valgrind
2476+
2477+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2478+
2479+ ci: Add glib-networking package
2480+ This is required by the new test-listen test to connect using
2481+ TLS.
2482+
2483+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2484+
2485+2018-03-13 Frediano Ziglio <fziglio@redhat.com>
2486+
2487+ video-stream: Document the usage of RedUpgradeItem structure
2488+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2489+
2490+ test-listen: Fix some use after free
2491+ Do not dereference thread_data after has been freed.
2492+
2493+ Acked-by: Victor Toso <victortoso@redhat.com>
2494+
2495+2018-03-13 Eduardo Lima (Etrunko) <etrunko@redhat.com>
2496+
2497+ Rename stream-device.[ch] to red-stream-device.[ch]
2498+ In order to avoid confusion with file named stream-device.h, from
2499+ spice-protocol.
2500+
2501+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
2502+
2503+2018-03-13 Christophe Fergeau <cfergeau@redhat.com>
2504+
2505+ test-listen: Add Unix socket test
2506+
2507+ test-listen: Add TLS test
2508+
2509+ test-listen: Add event loop helpers
2510+ These factor a bit of common code, and more importantly, help with
2511+ freeing all event loop related data at the end of each test.
2512+
2513+ test-listen: Add test case for port/address configuration
2514+ This test case will be testing the external spice-server API to
2515+ configure the address/port it's listening on. For now it sets up a
2516+ listening server, spawns a thread which is going to connect to that
2517+ port, and check it gets the REDQ magic upon connection. It will be
2518+ extended to test for Unix sockets, TLS sockets, ...
2519+
2520+ tests: basic-event-loop: Silence debug message
2521+ There is currently a debug printf which is always shown when a mainloop
2522+ event is triggered. This is unlikely to be useful unless one is
2523+ debugging the event loop code.
2524+
2525+ build: Bump glib version
2526+ From spice-gtk b312ca08 commit:
2527+ " At the moment:
2528+ - Fedora 26 has 2.52
2529+ - Fedora 25 has 2.50
2530+ - Fedora 24 has 2.48
2531+ - CentOS 7 has 2.46
2532+ - Debian 9 has 2.50"
2533+
2534+ RHEL6 only have 2.28, but glib 2.32 is only used in a test case at the
2535+ moment.
2536+
2537+ reds: Close sockets when failing to watch them
2538+ Currently if we fail to set up the watch waiting for accept() to be
2539+ called on the socket, we still keep the network socket(s) open even if we
2540+ are not going to be able to use it. This commit makes sure it's closed a
2541+ set to -1 when such a failure occurs rather than having a half
2542+ initialized spice-server instance.
2543+
2544+2018-03-12 Frediano Ziglio <fziglio@redhat.com>
2545+
2546+ red-record-qxl: fix clang warning
2547+ Fix clang warning:
2548+
2549+ red-record-qxl.c:893:13: error: variable 'fd_in' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized]
2550+ if (ret)
2551+
2552+ This is technically impossible but is not on a hot path.
2553+
2554+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2555+
2556+2018-03-11 Frediano Ziglio <fziglio@redhat.com>
2557+
2558+ dcc: Remove unused channel parameter
2559+ Acked-by: Snir Sheriber <ssheribe@redhat.com>
2560+
2561+2018-03-09 Frediano Ziglio <fziglio@redhat.com>
2562+
2563+ ci: Fix compiling of some functions
2564+ Address sanitizer use a larger stack than normal compiled programs
2565+ making the build fails. This causes this error on GitLab CI system:
2566+
2567+ stream-device.c: In function 'stream_device_partial_read':
2568+ stream-device.c:182:1: error: the frame size of 32992 bytes is larger than 20460 bytes [-Werror=frame-larger-than=]
2569+
2570+ Allow larger stack on "makecheck" to avoid this issue.
2571+
2572+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2573+
2574+2018-03-08 Frediano Ziglio <fziglio@redhat.com>
2575+
2576+ stream-device: Create channels before first non-main channel connection
2577+ Due to ticket expiration, it is possible that the streaming channels for
2578+ the client are created after the ticket expires. Currently, streaming
2579+ channels are created dynamically when the guest starts streaming to the
2580+ server, which can happen at any time (for instance if you decide to start
2581+ the graphic server manually).
2582+ If the ticket has expired before the streaming channel is created,
2583+ authentication will fail and the client will not be able to connect.
2584+ To avoid this, create the channels when the first main channel connection
2585+ is made. This ensures that client will connect to all streaming channels.
2586+ This could be considered a temporary solution. There may be other
2587+ situations where it would be useful to connect new channels after the
2588+ ticket has expired, but enabling this behavior would require protocol
2589+ changes and a careful analysis of security implications.
2590+
2591+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2592+
2593+ stream-device: Separate declaration in a separate header
2594+ Move public declaration (stream_device_connect) from char-device.h
2595+ to a new stream-device.h.
2596+ Add type declaration for StreamDevice.
2597+ This allows to use the type outside the implementation file and makes it
2598+ easier to extend the interface without changing char-device.h header.
2599+
2600+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2601+
2602+2018-03-07 Eduardo Lima (Etrunko) <etrunko@redhat.com>
2603+
2604+ build: Rename spice-server-enums.tmpl.[ch] to spice-server-enums.[ch].tmpl
2605+ This is a preparation for meson build, which has built-in support for
2606+ generating enums, but requires the template files to be renamed. It uses
2607+ the basename of template files to generate the output, and in this case
2608+ it would be the same file for both '.c' and '.h'. Ideally meson would
2609+ let us specify the name of the output files, but this is not the case.
2610+
2611+ Without renaming, the following error happens:
2612+
2613+ Meson encountered an error in file server/meson.build, line 30, column 0:
2614+ Tried to create target "spice-server-enums.tmpl", but a target of that
2615+ name already exists.
2616+
2617+ Reference: http://mesonbuild.com/Gnome-module.html#gnomemkenums
2618+
2619+ Note that by the time of this commit, the documentation is not accurate
2620+ and does not mention the fact that output files will get the base name
2621+ of the template files if they are specified, I submitted a pull request
2622+ to meson fixing this detail in docs:
2623+
2624+ https://github.com/mesonbuild/meson/pull/3191
2625+
2626+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2627+
2628+2018-03-06 Frediano Ziglio <fziglio@redhat.com>
2629+
2630+ test-stream-device: Check we don't read past data message
2631+ Test case for the issue fixed by previous commit.
2632+
2633+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2634+
2635+ stream-device: Do not read past data message
2636+ If data message is followed by another message, it's theoretically
2637+ possible that device loses the sync with the guest.
2638+ The actual Qemu and streaming agent implementation avoids it, but better to
2639+ make sure this can't happen in the server code too.
2640+
2641+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2642+
2643+ stream-device: Workaround Qemu bug closing device
2644+ Previous patch causes a bug in Qemu if the patch
2645+ 46764fe09ca2e0f15c0981a672c166ed8cf57e72 ("virtio-serial: fix segfault
2646+ on disconnect") is not included in that version of Qemu (patch present in
2647+ version 2.10.0).
2648+ This crash happens when device is closed during a write operation.
2649+ For SPICE character device, spice_server_char_device_wakeup is called
2650+ to write data which handles both read and write pending operations.
2651+ As we want to close the device but we can't do it inside the handler
2652+ without causing a crash, this commit schedules a timer that will close the
2653+ guest device outside this callback.
2654+ The proper solution would be to patch Qemu but making sure of this is not
2655+ so easy, hence this workaround in spice-server.
2656+ Code is marked with some comments to remember to remove this
2657+ hack in a safe future.
2658+
2659+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2660+
2661+ stream-device: Disable guest device on errors
2662+ Once the device is an error state, we don't want the guest to keep
2663+ reading/writing to it, especially as this could put the device in an
2664+ inconsistent state. This commit disables the device when an error occurs to
2665+ prevent further unintended use of the device by the guest.
2666+
2667+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2668+
2669+ stream-device: Implement properly device reset on open/close
2670+ Due to the way Qemu handle the device, when an error occurs we must consume
2671+ all pending data inside the callback which reads data from the device.
2672+ If we don't flush this data, the next time spice-server tries to read from
2673+ the device (after the guest closes/reopens it), we'll be getting stale
2674+ data. This can happen because we cannot prevent the guest from writing to
2675+ the device even after it got in an error state.
2676+ This needs to be done within this callback, as QEMU returns 0 if you call
2677+ SpiceCharDeviceInterface::read() outside of it. QEMU invokes this callback
2678+ through a call to spice_server_char_device_wakeup.
2679+ On the test now we must test that we receive an error from the device.
2680+ Previously we checked that last part of the data was not read. Now
2681+ potentially all data are read, so we need another way to check the device
2682+ detected the error.
2683+
2684+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2685+
2686+2018-02-28 Frediano Ziglio <fziglio@redhat.com>
2687+
2688+ build: Update spice-common submodule
2689+ This includes some rendering fixes.
2690+
2691+ Frediano Ziglio (19):
2692+ proto: Add some documentation to stream_report message
2693+ protocol: Allow to specify a surface will be streamed
2694+ canvas-base: Fix width computation for palette images
2695+ canvas: Simplify code using spice_memdup
2696+ canvas: Remove possible leak on LZ decompression failure
2697+ lz: Avoid temporary variable
2698+ lz: Simplify code
2699+ lz: Remove unused encode_level and only assigned io_start
2700+ canvas: Move PixmanData to C file
2701+ canvas: Remove mutex field from PixmanData
2702+ canvas: Remove Windows bitmap allocation
2703+ canvas: Remove unused dc parameter from surface_create
2704+ canvas: Remove dc parameter from SwCanvas::put_image
2705+ canvas: Remove dc fields from CanvasBase and LzDecodeUsrData
2706+ canvas: Unify __surface_create_stride and surface_create_stride
2707+ canvas: Remove unused include header
2708+ canvas: Prevent some error compiling spice-gtk
2709+ canvas: Fix some semi transparent drawing
2710+ canvas: Use SPICE_UNALIGNED_CAST to avoid -Wcast-align warnings
2711+
2712+ Pavel Grunt (1):
2713+ Remove GDI canvas
2714+
2715+ Paweł Pękala (1):
2716+ Fix build with LibreSSL
2717+
2718+ Acked-by: Snir Sheriber <ssheribe@redhat.com>
2719+
2720+2018-02-27 Frediano Ziglio <fziglio@redhat.com>
2721+
2722+ test-stream-device: Test batched multiple messages
2723+ Test all batched (send together) messages are handled correctly
2724+ and device is not stuck.
2725+
2726+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2727+
2728+ test-stream-device: Better Qemu emulation for data reading
2729+ Qemu does not trigger a new data read if we don't read all data in
2730+ the buffer.
2731+
2732+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2733+
2734+2018-02-16 Frediano Ziglio <fziglio@redhat.com>
2735+
2736+ stream-device: Implement mouse movement
2737+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2738+
2739+ stream-device: handle cursor from device
2740+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2741+
2742+ stream-device: Avoid device to get stuck if multiple messages are batched
2743+ If messages are sent together by the agent the device is reading
2744+ only part of the data. This cause Qemu to not poll for new data and
2745+ stream_device_read_msg_from_dev won't be called again.
2746+ This can cause a stall. To avoid this continue handling data
2747+ after a full message was processed.
2748+
2749+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2750+
2751+2018-02-12 Frediano Ziglio <fziglio@redhat.com>
2752+
2753+ reds: Disable TLS 1.0
2754+ TLS 1.0 is considered now insecure.
2755+ TLS 1.1 was introduced in 2006.
2756+ Our SPICE clients uses OpenSSL to use TLS and the support for TLS 1.1
2757+ in OpenSSL was introduced in 2006 too so even in systems like
2758+ Windows XP which are not officially supporting TLS 1.0 will work
2759+ with SPICE and TLS 1.1.
2760+ This fixes https://bugzilla.redhat.com/show_bug.cgi?id=1521053.
2761+
2762+ Acked-by: Victor Toso <victortoso@redhat.com>
2763+
2764+2018-02-09 Christophe de Dinechin <dinechin@redhat.com>
2765+
2766+ Add mention of fall-through comments
2767+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
2768+
2769+ Add mention of header guards
2770+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
2771+
2772+2018-02-08 Frediano Ziglio <fziglio@redhat.com>
2773+
2774+ style: Update style to include some C++ element
2775+ This style is used by other SPICE projects like spice-streaming-agent.
2776+ See discussion "Coding style and naming conventions for C++" at
2777+ https://lists.freedesktop.org/archives/spice-devel/2018-January/041562.html.
2778+
2779+ Acked-by: Lukáš Hrázký <lhrazky@redhat.com>
2780+
2781+2018-02-07 Christophe de Dinechin <dinechin@redhat.com>
2782+
2783+ Fix indentation in macro example
2784+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
2785+
2786+ Fix grammatical error
2787+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
2788+
2789+ Update copyright date
2790+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
2791+
2792+2018-01-31 Frediano Ziglio <fziglio@redhat.com>
2793+
2794+ utils: Avoid possible unaligned access
2795+ Code in rgb32_data_has_alpha possibly generate this warning using
2796+ clang:
2797+
2798+ utils.c:35:16: error: cast from 'uint8_t *' (aka 'unsigned char *') to 'uint32_t *' (aka 'unsigned int *') increases required alignment from 1 to 4 [-Werror,-Wcast-align]
2799+ line = (uint32_t *)data;
2800+ ^~~~~~~~~~~~~~~~
2801+
2802+ Although the images are expected to be all aligned in this respect
2803+ use byte access on the data instead. This, beside fixing the alignment
2804+ issue also avoid problem with big endian machines (images in SPICE are
2805+ expected to have the alpha channel as the forth byte).
2806+
2807+ Acked-by: Victor Toso <victortoso@redhat.com>
2808+
2809+ red-common: Avoid some not used warning using clang
2810+ clang reports lot of warnings like:
2811+
2812+ spicevmc.c:47:1: error: unused function 'RED_CHAR_DEVICE_SPICEVMC_CLASS' [-Werror,-Wunused-function]
2813+ SPICE_DECLARE_TYPE(RedCharDeviceSpiceVmc, red_char_device_spicevmc, CHAR_DEVICE_SPICEVMC);
2814+ ^
2815+ ./red-common.h:110:43: note: expanded from macro 'SPICE_DECLARE_TYPE'
2816+ static inline ModuleObjName ## Class *G_PASTE(G_PASTE(RED_,OBJ_NAME),_CLASS)(void *klass) \
2817+ ^
2818+
2819+ They are all static inline function and usually should not generate
2820+ warnings but for some reasons they do.
2821+
2822+ Acked-by: Victor Toso <victortoso@redhat.com>
2823+
2824+ sound: Avoid cast that could cause alignment problems
2825+ clang is reporting:
2826+
2827+ sound.c:292:16: error: cast from 'uint8_t *' (aka 'unsigned char *') to 'uint32_t *' (aka 'unsigned int *') increases required alignment from 1 to 4 [-Werror,-Wcast-align]
2828+ data = (uint32_t *)packet->data;
2829+ ^~~~~~~~~~~~~~~~~~~~~~~~
2830+
2831+ however we are using memcpy to access "data" pointer so there's no
2832+ need to use uint32_t pointer. Also considering we don't do math with
2833+ that pointer.
2834+
2835+ Acked-by: Victor Toso <victortoso@redhat.com>
2836+
2837+ Avoid some alignment warnings using clang
2838+ clang reports may warnings like:
2839+
2840+ test-display-base.c:252:11: error: cast from 'uint8_t *' (aka 'unsigned char *') to 'uint32_t *' (aka 'unsigned int *') increases required alignment from 1 to 4 [-Werror,-Wcast-align]
2841+ dst = (uint32_t *)bitmap;
2842+ ^~~~~~~~~~~~~~~~~~
2843+
2844+ Use SPICE_ALIGNED_CAST/SPICE_UNALIGNED_CAST macros in common/mem.h to
2845+ mark the cast safe or possibly unsafe.
2846+
2847+ Acked-by: Victor Toso <victortoso@redhat.com>
2848+
2849+ tests: Avoid some possible not initialized warning from Clang
2850+ Not really possible but clang raise these warnings:
2851+
2852+ test-sasl.c:555:13: error: variable 'is_ok' is uninitialized when used here [-Werror,-Wuninitialized]
2853+ if (is_ok) {
2854+ ^~~~~
2855+ test-sasl.c:553:22: note: initialize the variable 'is_ok' to silence this warning
2856+ uint8_t is_ok;
2857+ ^
2858+ = '\0'
2859+
2860+ test-gst.c:792:18: error: variable 'height' is used uninitialized whenever '&&' condition is false [-Werror,-Wsometimes-uninitialized]
2861+ spice_assert(gst_structure_get_int(s, "width", &width) &&
2862+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2863+ ../../spice-common/common/log.h:91:17: note: expanded from macro 'spice_assert'
2864+ if G_LIKELY(x) { } else { \
2865+ ^
2866+ /usr/include/glib-2.0/glib/gmacros.h:376:60: note: expanded from macro 'G_LIKELY'
2867+ ^~~~
2868+ /usr/include/glib-2.0/glib/gmacros.h:370:8: note: expanded from macro '_G_BOOLEAN_EXPR'
2869+ if (expr) \
2870+ ^~~~
2871+ test-gst.c:799:17: note: uninitialized use occurs here
2872+ bitmap->y = height;
2873+ ^~~~~~
2874+ test-gst.c:792:18: note: remove the '&&' if its condition is always true
2875+ spice_assert(gst_structure_get_int(s, "width", &width) &&
2876+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2877+ ../../spice-common/common/log.h:91:17: note: expanded from macro 'spice_assert'
2878+ if G_LIKELY(x) { } else { \
2879+ ^
2880+ /usr/include/glib-2.0/glib/gmacros.h:376:60: note: expanded from macro 'G_LIKELY'
2881+ ^
2882+ /usr/include/glib-2.0/glib/gmacros.h:370:8: note: expanded from macro '_G_BOOLEAN_EXPR'
2883+ if (expr) \
2884+ ^
2885+ test-gst.c:791:23: note: initialize the variable 'height' to silence this warning
2886+ gint width, height;
2887+ ^
2888+ = 0
2889+
2890+ Acked-by: Victor Toso <victortoso@redhat.com>
2891+
2892+ replay: Do not use obsolete set_mm_time callback
2893+ Marked as obsolete with clang and some options is detected as
2894+ error.
2895+
2896+ Acked-by: Victor Toso <victortoso@redhat.com>
2897+
2898+ char-device: Avoid to use unaligned memory
2899+ This causes some warnings with clang:
2900+
2901+ char-device.c:898:29: error: cast from 'uint8_t *' (aka 'unsigned char *') to 'uint32_t *' (aka 'unsigned int *') increases required alignment from 1 to 4 [-Werror,-Wcast-align]
2902+ write_to_dev_size_ptr = (uint32_t *)spice_marshaller_reserve_space(m, sizeof(uint32_t));
2903+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2904+ char-device.c:899:31: error: cast from 'uint8_t *' (aka 'unsigned char *') to 'uint32_t *' (aka 'unsigned int *') increases required alignment from 1 to 4 [-Werror,-Wcast-align]
2905+ write_to_dev_tokens_ptr = (uint32_t *)spice_marshaller_reserve_space(m, sizeof(uint32_t));
2906+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2907+
2908+ This also fixes some minor endianness issue (on big endian machine
2909+ integers were not properly encoded).
2910+
2911+ Acked-by: Victor Toso <victortoso@redhat.com>
2912+
2913+2018-01-30 Frediano Ziglio <fziglio@redhat.com>
2914+
2915+ reds: Remove stream watch handling link in a single place
2916+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2917+
2918+ stream-channel: Tell client we are just streaming data
2919+ This give an hint to client which can optimise rendering.
2920+
2921+ Acked-by: Christophe de Dinechin <dinechin@redhat.com>
2922+
2923+ red-stream: Handle reading of 0 bytes in red_stream_async_read
2924+ Currently red_stream_async_read cannot handle read of 0 bytes.
2925+ This would cause a wrong assert in async_read_handler.
2926+ Fixing the assert would just make the code wrongly detect a
2927+ disconnection (usually a return of 0 from read is handled that
2928+ way but happens also if you try to read 0 bytes).
2929+ Current callers of these function does not pass 0 as size however
2930+ handling data protocols having data_length+data this can happen
2931+ and is handled manually in red_sasl_handle_auth_steplen.
2932+ Avoid needing manually to check for this condition.
2933+
2934+ Acked-by: Christophe de Dinechin <dinechin@redhat.com>
2935+
2936+ lz4-encoder: Remove useless header include
2937+ After 497b8042dcc135f4c5f6b77a971cc6aaa661c094
2938+ ("lz4-encoder: Use GUINT32_TO_BE instead of htonl") patch this header
2939+ is not needed.
2940+
2941+ Acked-by: Victor Toso <victortoso@redhat.com>
2942+
2943+2018-01-29 Frediano Ziglio <fziglio@redhat.com>
2944+
2945+ dcc-send: Avoid to use unaligned memory
2946+ This causes some warnings with clang:
2947+
2948+ dcc-send.c:1799:28: error: cast from 'uint8_t *' (aka 'unsigned char *') to 'uint32_t *' (aka 'unsigned int *') increases required alignment from 1 to 4 [-Werror,-Wcast-align]
2949+ num_surfaces_created = (uint32_t *)spice_marshaller_reserve_space(m2, sizeof(uint32_t));
2950+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2951+ This also fixes some endianness issue (on big endian machine integers
2952+ were not properly encoded).
2953+
2954+ Acked-by: Victor Toso <victortoso@redhat.com>
2955+
2956+ lz4-encoder: Use GUINT32_TO_BE instead of htonl
2957+ Just a style change, almost of the code use similar macros for such
2958+ tasks.
2959+
2960+ Acked-by: Victor Toso <victortoso@redhat.com>
2961+
2962+ utils: Use const for rgb32_data_has_alpha data argument
2963+ There's no reason to change data passed, the function just check
2964+ the alpha channel of the image.
2965+
2966+ Acked-by: Victor Toso <victortoso@redhat.com>
2967+
2968+2018-01-16 Frediano Ziglio <fziglio@redhat.com>
2969+
2970+ tests: Remove test-just-sockets-no-ssl
2971+ This call sequence is included in test-display-base used in different
2972+ tests, no reason to have this test.
2973+ Also this test is not actually used for automated tests.
2974+
2975+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2976+
2977+ red-stream: Remove AsyncRead::stream
2978+ AsyncRead is always included in RedStream and there are only
2979+ a possible operation pending on a RedStream.
2980+
2981+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2982+
2983+ red-stream: Reuse red_stream_disable_writev function
2984+ The same function is used to reset writev field in SASL code.
2985+
2986+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2987+
2988+ basic-event-loop: Document why code does not use default GLib context
2989+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2990+
2991+2018-01-15 Frediano Ziglio <fziglio@redhat.com>
2992+
2993+ Minor compatibility with FreeBSD system
2994+ Some additional header are needed to avoid undefined types.
2995+ SOL_TCP and IPPROTO_TCP have the same value in Linux but SOL_TCP
2996+ is not defined in FreeBSD.
2997+ Provide pthread_setname_np using pthread_set_name_np (same parameters).
2998+
2999+ Patch is based on a patch from Oleg Ginzburg <olevole@olevole.ru>
3000+
3001+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3002+
3003+2018-01-13 Frediano Ziglio <fziglio@redhat.com>
3004+
3005+ red-parse-qxl: Copy correctly brush position
3006+ This issue caused the glitches using the rectangular selection
3007+ tool in PaintShop 6.
3008+
3009+ The line was removed accidentally by "red_parse_qxl: fix throwing
3010+ away drawables that have masks" (812b65984d286414170c6243bd3323b73a405ec3)
3011+
3012+ Acked-by: Pavel Grunt <pavelgrunt@gmail.com>
3013+
3014+2018-01-10 Frediano Ziglio <fziglio@redhat.com>
3015+
3016+ test-display-base: Do not use obsolete set_mm_time callback
3017+ Marked as obsolete with clang and some options is detected as
3018+ error.
3019+
3020+ Acked-by: Uri Lublin <uril@redhat.com>
3021+
3022+2018-01-09 Frediano Ziglio <fziglio@redhat.com>
3023+
3024+ red-stream: Encapsulate all authentication state in RedSASLAuth
3025+ Instead of having half state in RedSASL and half in RedSASLAuth
3026+ move everything in RedSASLAuth. This also reduces memory usage
3027+ when we are using SASL but we finish the authentication step.
3028+
3029+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3030+
3031+ red-stream: Unify start and step passes
3032+ Most of these function are identical.
3033+ Only difference were basically debugging message but now
3034+ with a proper tests are less important.
3035+ The mechname field is used to differentiate between first step and
3036+ following ones.
3037+
3038+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3039+
3040+ red-stream: Handle properly endianness in SASL code
3041+ All SPICE protocol is little endian, there's no agreement on other
3042+ endian and currently we support only little endian so make sure
3043+ this will work even possibly running on a big endian machine.
3044+
3045+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3046+
3047+ Handle SASL initialisation mainly in red-stream.c
3048+ Asynchronous code jumping from a file to another is tedious to read
3049+ also having code handling the same stuff in two files does not look
3050+ a good design.
3051+
3052+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3053+
3054+ test-sasl: Test how to server reports the failure
3055+ The server on failure can just disconnect the client or report the
3056+ error. The error report can be done using new protocol 2 or just
3057+ a number (like protocol 1).
3058+ Detect the failure report to make possible to check it.
3059+
3060+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3061+
3062+ test-sasl: Add tests for different failures and cases
3063+ Use some flags to specify which behaviour to change and different test
3064+ cases to test them.
3065+ Some cases specify when client stop sending data at different steps of
3066+ the process.
3067+
3068+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3069+
3070+ test-sasl: Add tests for different mechanism names
3071+ Try different connections with different tricky names.
3072+
3073+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3074+
3075+ test-sasl: Base test, connect using SASL
3076+ Create a thread that emulates a client and starts SASL authentication
3077+
3078+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3079+
3080+ test-sasl: Add code to mocking functions to test state
3081+ Check some functions are called in a given sequence.
3082+
3083+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3084+
3085+ test-sasl: Initial SASL test
3086+ Not currently working, is defining SASL functions used by the code.
3087+ As the symbols defined in the objects have more priority than the ones
3088+ defined by the libraries these function take precedence compared to
3089+ system library.
3090+
3091+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3092+
3093+ tests: Avoid cast from integer of wrong size
3094+ These cast causes warnings if a 32 bit target is used.
3095+
3096+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3097+
3098+ test-channel: Use correct endianness for ack message
3099+ Network fields should be encoded as little endian.
3100+ This was discovered using an emulated MIPS machine.
3101+
3102+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3103+
3104+2018-01-08 Victor Toso <me@victortoso.com>
3105+
3106+ clang: remove double promotion
3107+ > test-display-resolution-changes.c:55:60: error: implicit conversion
3108+ > increases floating-point precision: 'float' to 'double'
3109+ > command->create_primary.width = 800 + sin((float)count / 6) * 200;
3110+ > ~~~ ~~~~~~~~~~~~~^~~
3111+ > test-display-resolution-changes.c:56:61: error: implicit conversion
3112+ > increases floating-point precision: 'float' to 'double'
3113+ > command->create_primary.height = 600 + cos((float)count / 6) * 200;
3114+ > ~~~ ~~~~~~~~~~~~~^~~
3115+
3116+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3117+
3118+ clang: Don't compute absolute value of unsigned
3119+ Clang's warning on absolute-value.
3120+
3121+ > red-record-qxl.c:297:39: error: taking the absolute value of unsigned
3122+ > type 'uint32_t' (aka 'unsigned int') has no effect
3123+ > bitmap_size = qxl->bitmap.y * abs(qxl->bitmap.stride);
3124+ > ^
3125+ > red-record-qxl.c:297:39: note: remove the call to 'abs' since unsigned
3126+ > values cannot be negative
3127+ > bitmap_size = qxl->bitmap.y * abs(qxl->bitmap.stride);
3128+ > ^~~
3129+
3130+ > red-replay-qxl.c:471:39: error: taking the absolute value of unsigned type
3131+ > 'uint32_t' (aka 'unsigned int') has no effect
3132+ > bitmap_size = qxl->bitmap.y * abs(qxl->bitmap.stride);
3133+ > ^
3134+ > red-replay-qxl.c:471:39: note: remove the call to 'abs' since unsigned
3135+ > values cannot be negative
3136+ > bitmap_size = qxl->bitmap.y * abs(qxl->bitmap.stride);
3137+ > ^~~
3138+
3139+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3140+
3141+2018-01-08 Frediano Ziglio <fziglio@redhat.com>
3142+
3143+ display-channel: Limit number of surfaces to 1024
3144+ Qemu never used more than this number and today surfaces are not
3145+ much used so there's no reason to keep this limit so high.
3146+ This reduces quite a lot some internal structure
3147+ (DisplayChannelPrivate and DisplayChannelClientPrivate).
3148+
3149+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3150+
3151+2018-01-04 Frediano Ziglio <fziglio@redhat.com>
3152+
3153+ red-stream: Avoid infinite loop on sasl_encode/decode failure
3154+ These functions do not set errno so it is possible that errno has a
3155+ stale value which happens to be EAGAIN.
3156+ This would cause an infinite loop in functions like red_stream_write_all
3157+ (or potentially using the event loop).
3158+
3159+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3160+
3161+2018-01-02 Frediano Ziglio <fziglio@redhat.com>
3162+
3163+ red-stream: Avoid to specify 2 mech names during SASL
3164+ Acked-by: Snir Sheriber <ssheribe@redhat.com>
3165+
3166+ red-stream: Simplify mechname matching
3167+ Avoid over complicated matching using quoting and a simple strstr
3168+ operation.
3169+ The mech names are separated and quoted with the same chararacter (',')
3170+ making possible to search for ",MECHNAME," instead of manually check for
3171+ prefix and suffix after the search for "MECHNAME".
3172+
3173+ Acked-by: Snir Sheriber <ssheribe@redhat.com>
3174+
3175+2017-12-19 Frediano Ziglio <fziglio@redhat.com>
3176+
3177+ main-channel-client: Do not call red_channel_client_begin_send_message if we are not sending a message
3178+ In case mcc->priv->initial_channels_list_sent is false we didn't
3179+ marshall any message so we should not call
3180+ red_channel_client_begin_send_message.
3181+
3182+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3183+
3184+ red-stream: Use mechname for mechname
3185+ There's no reason to copy mechname into mechlist to use mechlist
3186+ instead of mechname.
3187+
3188+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3189+
3190+ red-stream: Remove SASL "data" field leak
3191+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3192+
3193+ reds: Remove argument from reds_handle_link
3194+ RedLinkInfo stores reds in it no need to pass every time.
3195+
3196+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3197+
3198+ inputs-channel: Move spice_server_kbd_leds to InputsChannel
3199+ This avoids to expose some detail about the channel.
3200+ Like other APIs implement it move close to the part that handle
3201+ it instead of have everything in reds.c.
3202+
3203+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3204+
3205+ display-channel: Reuse GLIST_FOREACH macro in drawable_remove_from_pipes
3206+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3207+
3208+ red-pipe-item: Move typedef at the top to avoid a "struct RedPipeItem"
3209+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3210+
3211+ dcc: Remove obsolete comment
3212+ RedPipeItem does not contain a link anymore.
3213+
3214+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3215+
3216+ stat-file: Protect flags field with atomic operation
3217+ Coverity complaint that this field should be protected by
3218+ a mutex as other accesses are with the mutex locked.
3219+ Use atomic operation. Not in an hot path in any case.
3220+
3221+ Acked-by: Uri Lublin <uril@redhat.com>
3222+
3223+2017-12-17 Frediano Ziglio <fziglio@redhat.com>
3224+
3225+ build-sys: Ignore generated test-channel and test-stream-device files
3226+ Acked-by: Uri Lublin <uril@redhat.com>
3227+
3228+2017-12-14 Frediano Ziglio <fziglio@redhat.com>
3229+
3230+ reds: Remove unused SASL_DATA_MAX_LEN define
3231+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3232+
3233+ reds: Remove possible leak during SASL authentication
3234+ We need to free the connection if the mechanism name is wrong
3235+
3236+ Acked-by: Uri Lublin <uril@redhat.com>
3237+
3238+2017-12-13 Frediano Ziglio <fziglio@redhat.com>
3239+
3240+ display-channel: Remove unused parameter from drawable_remove_dependencies
3241+ It's not used since its introduction at 4e8f24e3510ce8cb3fa6b.
3242+
3243+ Acked-by: Victor Toso <victortoso@redhat.com>
3244+
3245+2017-12-12 Frediano Ziglio <fziglio@redhat.com>
3246+
3247+ Move RedUpgradeItem declaration in video-stream.h
3248+ This structure is used to send a message related to streams.
3249+ There are already other items defined in video-stream.h so
3250+ move the declaration.
3251+
3252+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3253+
3254+ video-stream: Simplify update_client_playback_delay
3255+ Avoid one step to retrieve reds pointer.
3256+
3257+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3258+
3259+ Simplify sending stream report activation message
3260+ Store information directly in the RedStreamActivateReportItem
3261+ making easier to marshall the message.
3262+
3263+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3264+
3265+ video-stream: Reuse display variable
3266+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3267+
3268+ video-stream: Initialise VideoStreamClipItem directly
3269+ Instead of just allocating in video_stream_clip_item_new and
3270+ than have to setup properly in dcc_video_stream_agent_clip
3271+ do all in video_stream_clip_item_new which is more consistent
3272+ with other part of the code.
3273+
3274+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3275+
3276+2017-12-12 Uri Lublin <uril@redhat.com>
3277+
3278+ sound: fix params order when calling snd_desired_audio_mode
3279+ Make sure client_can_celt is passed before client_can_opus
3280+
3281+ The bug was present since introduction of opus in ce9b714137a767b81f2
3282+
3283+ Found by Coverity.
3284+
3285+ Acked-by: Victor Toso <victortoso@redhat.com>
3286+
3287+2017-12-12 Frediano Ziglio <fziglio@redhat.com>
3288+
3289+ reds: Fix typo in declaration
3290+ recs -> reds
3291+
3292+ build-sys: Remove useless definition
3293+ The default LDADD already include libserver.la.
3294+
3295+ Acked-by: Victor Toso <victortoso@redhat.com>
3296+
3297+2017-12-11 Uri Lublin <uril@redhat.com>
3298+
3299+ test-stream: initialize msg.msg_flags
3300+ Coverity complains the field is not initialized.
3301+ That's true but man recvmsg specifies that this
3302+ field is set by recvmsg.
3303+
3304+ To make coverity happy, initialize this field.
3305+
3306+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3307+
3308+ reds_init_socket: do not leak slisten on error
3309+ Found by Coverity.
3310+
3311+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3312+
3313+2017-12-08 Christophe Fergeau <cfergeau@redhat.com>
3314+
3315+ ssl: Drop support for older OpenSSL versions
3316+ SSL_OP_NO_COMPRESSION was introduced in OpenSSL_0_9_8k, which is no
3317+ longer supported. This commit raises the minimum OpenSSL version to
3318+ 1.0.0, which is also out of support.
3319+
3320+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3321+
3322+ worker: Remove unneeded include
3323+ Nothing seems to be using openssl in red-worker.c
3324+
3325+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3326+
3327+ build: Use $(srcdir) when it makes sense
3328+ There are a few places which use $(top_srcdir) when $(srcdir) would be
3329+ equally valid.
3330+
3331+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3332+
3333+ build: Rebuild shared library when symbol file changes
3334+ At the moment, changing spice-server.syms to add/remove a new symbol to
3335+ be exported does not regenerate spice-server.so. This commit added the
3336+ needed dependency for this to work.
3337+
3338+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3339+
3340+2017-12-07 Frediano Ziglio <fziglio@redhat.com>
3341+
3342+ Do not compute stream_id more that necessary
3343+ Reuse already computed value and avoid to compute in every
3344+ iterations.
3345+
3346+ Acked-by: Victor Toso <victortoso@redhat.com>
3347+
3348+ reds: Remove RedVDIReadBuf pooling code
3349+ Originally this pool was used to avoid allocation/deallocations.
3350+ However the introduction of GList cause the code to do dynamic
3351+ allocations in order to update the list making this pooling
3352+ something useless.
3353+ The buffers limitation is now implemented with a simple counter.
3354+
3355+ Acked-by: Victor Toso <victortoso@redhat.com>
3356+
3357+2017-12-05 Frediano Ziglio <fziglio@redhat.com>
3358+
3359+ test-vdagent: Remove useless MIN definition
3360+ Already defined by GLib headers.
3361+
3362+ Maybe this check should just be removed?
3363+
3364+ Handle SPICE_MSGC_DISCONNECTING message in RedChannelClient
3365+ There's no reason to handle this message in a different
3366+ way in MainChannel and InputsChannel, the default handling
3367+ will return true in any case.
3368+
3369+ Maybe this check should just be removed?
3370+
3371+ reds: Fix wrong assert
3372+ RedVDIReadBuf::data is a static allocated buffer so checking for
3373+ NULL on it is useless. It would be NULL only if RedVDIReadBuf
3374+ pointer would be the opposite, in value, of the offset of
3375+ data field into it.
3376+
3377+ Acked-by: Victor Toso <victortoso@redhat.com>
3378+
3379+ main-channel: Put all migration message handling together
3380+ Acked-by: Victor Toso <victortoso@redhat.com>
3381+
3382+ main-channel: Remove brackets if not needed
3383+ Acked-by: Victor Toso <victortoso@redhat.com>
3384+
3385+ main-channel: Remove useless check
3386+ If there is a channel client there's surely a related channel.
3387+
3388+ Acked-by: Victor Toso <victortoso@redhat.com>
3389+
3390+ reds: Remove leak of agent_dev
3391+ This object was not freed.
3392+ Also free object buffers.
3393+
3394+ Acked-by: Victor Toso <victortoso@redhat.com>
3395+
3396+ reds: Use GLib memory functions for RedVDIReadBuf
3397+ Acked-by: Victor Toso <victortoso@redhat.com>
3398+
3399+2017-12-05 Jonathon Jongsma <jjongsma@redhat.com>
3400+
3401+ StreamDevice: assert preconditions in parsing functions
3402+ Be a bit more defensive about handling incoming messages from the stream
3403+ device. This also makes these functions consistent with
3404+ handle_msg_format(). These assertions are only enabled if
3405+ ENABLE_EXTRA_CHECKS is defined.
3406+
3407+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3408+
3409+2017-12-01 Frediano Ziglio <fziglio@redhat.com>
3410+
3411+ inputs-channel: Prefer channel core over global core interface
3412+ Potentially a channel can run with a different core interface
3413+ than the global one attached to RedsState so instead of calling
3414+ reds_core_* functions use the code interface attached to the
3415+ channel.
3416+
3417+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3418+
3419+ inputs-channel: Encapsulate SpiceTabletState
3420+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3421+
3422+ Use verify instead of G_STATIC_ASSERT
3423+ verify guarantee that the condition is always a compile
3424+ time constant.
3425+
3426+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3427+
3428+ tests: Use GLib memory functions
3429+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3430+
3431+ Reduce dependencies from red-qxl.h
3432+ This header is mainly exporting functions to handle public
3433+ interface for the QXL devices.
3434+ Avoid spreading its inclusion including this header in other
3435+ headers.
3436+
3437+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3438+
3439+ red-channel-client: Rename item_in_pipe to item_sent
3440+ The name is more consistent with the value of the flag and
3441+ the function red_channel_client_wait_pipe_item_sent where
3442+ the MarkerPipeItem structure is used.
3443+
3444+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3445+
3446+ stream: Remove unused display parameter
3447+ Acked-by: Victor Toso <victortoso@redhat.com>
3448+
3449+2017-11-30 Jonathon Jongsma <jjongsma@redhat.com>
3450+
3451+ DisplayChannel: Use NSEC_PER_MILLISEC
3452+ Instead of using 1000*1000
3453+
3454+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3455+
3456+ Rename RedStreamClipItem to VideoStreamClipItem
3457+ Avoid confusion with RedStream which is a totally unrelated object.
3458+
3459+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3460+
3461+ Rename StreamAgent to VideoStreamAgent
3462+ Just to avoid confusion between different uses of the word Stream (e.g.
3463+ RedStream) clarify that it's related to video streams
3464+
3465+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3466+
3467+ Rename Stream to VideoStream
3468+ To prevent confusion between Stream (a video stream) and RedStream (a
3469+ generic data stream between client and server), change the name to
3470+ VideoStream to be more explicit about what it is.
3471+
3472+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3473+
3474+2017-11-29 Frediano Ziglio <fziglio@redhat.com>
3475+
3476+ red-channel-client: Simplify red_channel_client_wait_pipe_item_sent
3477+ Currently, red_channel_client_wait_pipe_item_sent() inserts a MarkerItem
3478+ which will sent after the item we want to wait for: the tail of the
3479+ queue is the first item to send, and the function uses
3480+ red_channel_client_pipe_add_after_pos(). Then, if the marker has been
3481+ successfully sent, the function calls
3482+ red_channel_client_wait_outgoing_item to wait for 'item' to be sent.
3483+
3484+ Instead of doing this, we can add the MarkerItem to the queue so that
3485+ it's sent after 'item' (ie, insert it _before_ 'item' in the queue).
3486+ This way, when the marker is marked as having been sent, we'll also know
3487+ that 'item' has been sent.
3488+
3489+ This avoids having to call red_channel_client_wait_outgoing_item and
3490+ possibly the case where the item was not queued and
3491+ red_channel_client_wait_outgoing_item returning TRUE even if the item
3492+ was not sent as required.
3493+
3494+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3495+
3496+ red-channel-client: Simplify red_channel_client_wait_pipe_item_sent loop
3497+ Avoid repeating the same code twice.
3498+
3499+ red_channel_client_send sends the pending item (or a part of it). If
3500+ there are no item pending, the function does nothing (so checking for
3501+ blocked channel is useless). Also red_channel_client_send is already
3502+ called from red_channel_client_push which has a check for blocked
3503+ channels, so having calls to both red_channel_client_send() and
3504+ red_channel_client_push() is redundant.
3505+
3506+ The function on its overall tries to wait for a given item to be sent.
3507+ The call for red_channel_client_receive is mainly needed to support the
3508+ cases were to send data messages from the client should be processed
3509+ (like if "handle-acks" is requested).
3510+
3511+ Moving the loop iteration check inside the for loop instead allows to
3512+ avoid some duplication.
3513+
3514+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3515+
3516+ red-channel-client: Avoid weird memory references using MarkerPipeItem
3517+ Instead of having MarkerPipeItem pointing to an external variable with
3518+ the possibility to forget to reset it and have a dangling pointer, this
3519+ commit takes a reference on the item to keep it alive after it was sent.
3520+ This item is placed into the queue to understand when it was sent. The
3521+ current implementation detects the unqueue when the item is destroyed so
3522+ we currently store a pointer to an external variable in the item, this
3523+ way we can use a variable which will still be alive after the item is
3524+ released/destroyed.
3525+ This change updates the variable (stored in the item) when we try to
3526+ send the item, rather than at destruction time. The destruction happened
3527+ at the end of red_channel_client_send_item(), so we don't mark
3528+ item_in_pipe much earlier than before.
3529+
3530+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3531+
3532+ mjpeg-encoder: Fix some typos
3533+ unexected -> unexpected
3534+ esitimation -> estimation
3535+
3536+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3537+
3538+2017-11-28 Frediano Ziglio <fziglio@redhat.com>
3539+
3540+ ci: Detect if code compile with SASL disabled
3541+ Acked-by: Snir Sheriber <ssheribe@redhat.com>
3542+
3543+2017-11-27 Frediano Ziglio <fziglio@redhat.com>
3544+
3545+ test-stream-device: Check incomplete reads of StreamMsgFormat
3546+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3547+
3548+2017-11-27 Jonathon Jongsma <jjongsma@redhat.com>
3549+
3550+ StreamDevice: Handle incomplete reads of StreamMsgFormat
3551+ This is currently unlikely to happen since we communicate over a pipe
3552+ and the pipe buffer is sufficiently large to avoid splitting the
3553+ message. But for completeness, we should handle this scenario.
3554+
3555+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3556+
3557+2017-11-27 Uri Lublin <uril@redhat.com>
3558+
3559+ red-stream: fix build without SASL
3560+ put red_stream_disable_writev in an #ifdef HAVE_SASL block.
3561+ red_stream_disable_writev is only called from functions
3562+ that are already in an #ifdef HAVE_SASL block.
3563+
3564+ Currently when building with SASL disabled, I get:
3565+ CC red-stream.lo
3566+ red-stream.c:441:13: error: 'red_stream_disable_writev'
3567+ defined but not used [-Werror=unused-function]
3568+
3569+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3570+
3571+2017-11-27 Frediano Ziglio <fziglio@redhat.com>
3572+
3573+ inputs-channel: Remove reds argument from inputs_channel_set_tablet
3574+ All other inputs_channel_set_* functions do not have this
3575+ parameter and get it from the channel.
3576+
3577+ Acked-by: Uri Lublin <uril@redhat.com>
3578+
3579+2017-11-22 Frediano Ziglio <fziglio@redhat.com>
3580+
3581+ inputs-channels: Remove leak using tablet device
3582+ Current code does not free allocated tablet resources.
3583+ When a tablet is added some resources are allocated.
3584+ Resources should be released either removing the tablet or
3585+ freeing spice server object.
3586+ Added a test to check these conditions.
3587+
3588+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3589+
3590+ reds: Do not get time if not needed
3591+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3592+
3593+2017-11-21 Frediano Ziglio <fziglio@redhat.com>
3594+
3595+ tests: Add a test for streaming devices
3596+ Currently create device, open it and pass some messages checking
3597+ they are handled.
3598+
3599+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3600+
3601+ Reuse SPICE_DECLARE_TYPE macro
3602+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3603+
3604+ Remove common/mem.h includes
3605+ common/mem.h contains mainly memory allocation functions.
3606+ As we decided to move to Glib calls directly avoid to include
3607+ function declaration we should not use anymore.
3608+
3609+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3610+
3611+2017-11-09 Frediano Ziglio <fziglio@redhat.com>
3612+
3613+ utils: Check we list all channel names
3614+ This prevent future problems supporting new channels.
3615+
3616+ Acked-by: Victor Toso <victortoso@redhat.com>
3617+
3618+2017-11-08 Frediano Ziglio <fziglio@redhat.com>
3619+
3620+ Use constant variables for image operations
3621+ This reduce the attack surface moving some data into read-only
3622+ sections.
3623+
3624+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3625+
3626+ build: Update spice-common submodule
3627+ Frediano Ziglio (6):
3628+ Make the compiler work out better way to write unaligned memory
3629+ test-marshallers: Use unaligned structure
3630+ test-marshallers: Test demarshalling
3631+ ring: Remove __ring_remove function
3632+ ring: Remove short living temporary variable
3633+ canvas_base: Allow to specify constant operations
3634+
3635+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3636+
3637+ utils: Fill in all possible channel names
3638+ Missing some names cause some debugging messages to be
3639+ generated and some of our tests to fail.
3640+
3641+ This patch was written by Christophe Fergeau.
3642+
3643+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3644+
3645+2017-11-07 Frediano Ziglio <fziglio@redhat.com>
3646+
3647+ ci: Install python3 packages to fix compile on new Fedora
3648+ Fedora 26 removed dependency from python-pyparsing/python-six
3649+ to python but we require the executable to run some scripts
3650+
3651+ Acked-by: Uri Lublin <uril@redhat.com>
3652+
3653+2017-10-31 Jonathon Jongsma <jjongsma@redhat.com>
3654+
3655+ StreamDevice: Fix incomplete header reads
3656+ The code for reading a StreamDevice message from the streaming agent has
3657+ code to handle a situation where you only read a part of the header. If
3658+ we've read only a part of the header, we will try to read the remaining
3659+ n bytes of the header within a loop until the full header is read.
3660+ However, when we try to read the last n bytes, we store it at beginning
3661+ of the header struct, which will overwrite the first part of the header.
3662+
3663+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3664+
3665+2017-10-30 Jonathon Jongsma <jjongsma@redhat.com>
3666+
3667+ Make stream-channel.h self-contained
3668+ Include protocol header file defining StreamMsgFormat which is used in a
3669+ function signature in this header.
3670+
3671+ Acked-by: Victor Toso <victortoso@redhat.com>
3672+ Reviewed-by: Frediano Ziglio <fziglio@redhat.com>
3673+
3674+2017-10-23 Christophe Fergeau <cfergeau@redhat.com>
3675+
3676+ channel: Introduce logging helpers
3677+ This commit adds red_channel_{debug,warning,printerr}() helpers which
3678+ will prepend the log message with "channel-name:id (%p)". It also
3679+ changes various locations which were doing this manually.
3680+
3681+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3682+
3683+ utils: Introduce helpers to map channel types to names
3684+ spice_server_set_channel_security() is already mostly doing that. We can
3685+ make its code more generic, and introduce a red_channel_get_name()
3686+ method. This method will then be used to make debug messages more
3687+ readable by showing the actual channel name rather than its type as
3688+ an int.
3689+
3690+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3691+
3692+2017-10-21 Jonathon Jongsma <jjongsma@redhat.com>
3693+
3694+ Use standard "Red" namespace
3695+ The objects RedsStream and RedsSASL are currently using the namespace
3696+ "Reds" rather than the standard "Red" namespace used throughout the rest
3697+ of the project. Change these to be consistent. This also means changing
3698+ method names and some related enumeration types.
3699+
3700+ The files were also renamed to reflect the change:
3701+ reds-stream.[ch] -> red-stream.[ch]
3702+
3703+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3704+
3705+2017-10-19 Jonathon Jongsma <jjongsma@redhat.com>
3706+
3707+ RedsStream: make some functions static
3708+ These were not used outside of reds-stream.c, so make them static and
3709+ remove them from the header.
3710+
3711+ Acked-by: Frediano Ziglio <fziglio@redhat.com>
3712+
3713+2017-10-18 Frediano Ziglio <fziglio@redhat.com>
3714+
3715+ reds-stream: Remove useless debug
3716+ There are already other debugging code showing channel closure.
3717+ Not closed file descriptors can easily be detected with other
3718+ tools (like netstat or /proc file system).
3719+
3720+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3721+
3722+ reds-stream: Removed unused "username" field
3723+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3724+
3725+2017-10-17 Frediano Ziglio <fziglio@redhat.com>
3726+
3727+ red-qxl: Enforce boolean for QXLDevSurfaceCreate::mouse_mode
3728+ In some cases mouse_mode is a bit field.
3729+ However for this structure is used always as a boolean
3730+ value.
3731+
3732+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3733+
3734+ red-qxl: Remove surface_create field
3735+ This field was used just to store a value and retrieve again
3736+ while we can just pass it instead.
3737+
3738+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3739+
3740+2017-10-16 Frediano Ziglio <fziglio@redhat.com>
3741+
3742+ stream-channel: Activate streaming report from client
3743+ Setting the capability is not enough, each stream must be enabled
3744+ so do so if client support them.
3745+
3746+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3747+
3748+ stream-device: Limit sending queue from guest to server
3749+ Do not allow the guest to fill host memory.
3750+ Also having a huge queue mainly cause to have a higher video
3751+ latency.
3752+
3753+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3754+
3755+ stream-device: Create channel when needed
3756+ This allows a better id allocation as devices are created after
3757+ fixed ones.
3758+ Also will allow to support more easily multiple monitor.
3759+
3760+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3761+
3762+ stream-device: Start supporting resetting device when close/open on guest
3763+ When guest close the device the host device has to be reset too.
3764+ This make easier to restart the guest device which can happen in case
3765+ of reboot, agent issues or if we want to update the agent.
3766+
3767+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3768+
3769+ char-device: Do not stop and clear interface on reset
3770+ Currently, red_char_device_reset() stops the device, clears all pending
3771+ messages, and clears its device instance. After this function is called,
3772+ the char device will not work again until it is assigned a new device
3773+ instance and restarted. This is fine for the vdagent char device, which
3774+ is currently the only user of this function. But for the stream device,
3775+ we want to be able to reset the char device to a working state (e.g.
3776+ clear all pending messages, etc) without stopping or disabling the char
3777+ device. So this function will now only reset the char device to a clean
3778+ working state, and the _stop() and _reset_dev_instance() calls will be
3779+ moved up to the caller.
3780+
3781+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3782+
3783+ stream-channel: Do not show an empty blank screen on start
3784+ Start showing something when we have a surface and stream
3785+ instead of showing a blank screen which is now not useful.
3786+ Was useful for debugging purposes to understand that the
3787+ new channel was sending messages correctly to client and
3788+ client could handle them.
3789+
3790+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3791+
3792+ stream-channel: Support client connection/disconnection
3793+ When a new client is connected we must restart the stream so new
3794+ clients can receive correct data without having to wait for the
3795+ next full screen (which on idle screen could take ages).
3796+ On disconnection we should tell the guest to stop streaming
3797+ not wasting resources to stream not needed data.
3798+
3799+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3800+
3801+ stream-channel: Allows to register callback to get new stream request
3802+ The channel needs to communicate when it receive a new
3803+ stream request from the guest.
3804+
3805+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3806+
3807+ stream-channel: Allows not fixed size
3808+ Remove the fixed size stream and support any display size.
3809+
3810+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3811+
3812+ stream-device: Handle streaming data from device to channel
3813+ Handle stream data from device sending to the channel.
3814+ The StreamChannel will forward the data to the clients using standard
3815+ DisplayChannel messages, and will create and destroy streams as
3816+ necessary.
3817+
3818+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3819+
3820+ stream-device: Create channel for stream device
3821+ So can be used by the device to communicate with the clients.
3822+
3823+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3824+
3825+ stream-channel: Start implementing DisplayChannel properly
3826+ Handle messages from clients.
3827+ Send some messages to clients.
3828+
3829+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3830+
3831+ stream-channel: Write a base channel to implement the streaming
3832+ Currently only compile, not used and not much sense
3833+
3834+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3835+
3836+ stream-device: Start parsing new protocol from guest
3837+ Parse the data sent from the guest to the streaming device.
3838+ At the moment, the data is simply discarded after it is parsed.
3839+
3840+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3841+
3842+ stream-device: Add device to handle streaming
3843+ Add a stub device in guest.
3844+ The aim of this device is to make it possible for the guest to send a
3845+ stream through a DisplayChannel (in the sense of protocol channel).
3846+ This stub allows the guest to send some data and you can see some debug
3847+ lines of data arrived on host logs.
3848+
3849+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3850+
3851+ Notify client of the creation of new channels dynamically
3852+ This allows the server to add channels after the client is connected.
3853+
3854+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3855+
3856+2017-10-13 Frediano Ziglio <fziglio@redhat.com>
3857+
3858+ tests: Check leaks registering migration interface
3859+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3860+
3861+ reds: Remove leak allocating migration state
3862+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3863+
3864+2017-10-12 Frediano Ziglio <fziglio@redhat.com>
3865+
3866+ red-channel: Remove red_channel_init_outgoing_messages_window
3867+ This function does not make much sense anymore.
3868+ Is called by RedVmcChannel which doesn't use RedChannelClient ACKs
3869+ so the variable changed are not used.
3870+ Moreover, at red_vmc_channel_constructed() time, there will be no
3871+ clients yet, so red_channel_init_outgoing_messages() will be a no-op.
3872+
3873+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3874+
3875+ inputs-channel: Check message size handling migration data
3876+ Prevent possible buffer reading overflow.
3877+ Note that message pointer must be valid and data are checked
3878+ value by value so even on overflow you just get an error.
3879+
3880+ Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3881+
3882+2017-10-11 Frediano Ziglio <fziglio@redhat.com>
3883+
3884+ red-pipe-item: Use GLib memory functions
3885+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3886+
3887+ parse-qxl: Use GLib memory functions
3888+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3889+
3890+ pixmap-cache: Use GLib memory functions
3891+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3892+
3893+ image-cache: Use GLib memory functions
3894+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3895+
3896+ inputs-channel: Use GLib memory functions
3897+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3898+
3899+ tree: Use GLib memory functions
3900+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3901+
3902+ worker: Use GLib memory functions
3903+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3904+
3905+ replay-qxl: Use GLib memory functions
3906+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3907+
3908+ display-channel: Use GLib memory functions
3909+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3910+
3911+ dcc: Use GLib memory functions
3912+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3913+
3914+ reds: Use GLib memory functions for ChannelSecurityOptions
3915+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3916+
3917+ reds: Use GLib memory functions for link message
3918+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3919+
3920+ Use GLib memory functions for SpiceChannelEventInfo
3921+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3922+
3923+ dispatcher: Use GLib memory functions
3924+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3925+
3926+ event-loop: Use GLib memory functions
3927+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3928+
3929+ char-device: Use GLib memory functions
3930+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3931+
3932+ gstreamer-encoder: Use GLib memory functions
3933+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3934+
3935+ spicevmc: Use GLib memory functions
3936+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3937+
3938+ stream: Use GLib memory functions
3939+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3940+
3941+ smartcard: Use GLib memory functions
3942+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3943+
3944+ reds-stream: Use GLib memory functions
3945+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3946+
3947+ mjpeg: Use GLib memory functions
3948+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3949+
3950+ lz4-encoder: Use GLib memory functions
3951+ Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3952+
3953 2017-10-11 Christophe Fergeau <cfergeau@redhat.com>
3954
3955 spice-server 0.14.0 release
3956@@ -2400,6 +6303,8 @@
3957
3958 Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3959
3960+2017-02-28 Frediano Ziglio <fziglio@redhat.com>
3961+
3962 display-channel: Clean more stuff on finalize
3963 Release surfaces, cache and monitor configurations.
3964
3965@@ -2410,8 +6315,6 @@
3966
3967 Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3968
3969-2017-02-28 Frediano Ziglio <fziglio@redhat.com>
3970-
3971 reds: Check that we do not free the wrong agent device
3972 Do not assume the device passed as an argument to
3973 spice_server_char_device_remove_interface() is the same as the current
3974@@ -3658,7 +7561,7 @@
3975
3976 Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3977
3978-2016-12-06 Frediano Ziglio <fziglio@redhat.com>
3979+2016-12-05 Frediano Ziglio <fziglio@redhat.com>
3980
3981 Support QXL remove on spice_server_remove_interface
3982 Allow to dynamically remove QXL interfaces. This could be used to
3983@@ -6134,7 +10037,7 @@
3984
3985 Acked-by: Christophe Fergeau <cfergeau@redhat.com>
3986
3987-2016-06-16 Frediano Ziglio <fziglio@redhat.com>
3988+2016-06-15 Frediano Ziglio <fziglio@redhat.com>
3989
3990 Remove message_buf from EncoderData
3991 This buffer was just written and then used, no reason to store into
3992@@ -6142,7 +10045,7 @@
3993
3994 Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
3995
3996-2016-06-16 Eduardo Lima (Etrunko) <etrunko@redhat.com>
3997+2016-06-15 Eduardo Lima (Etrunko) <etrunko@redhat.com>
3998
3999 configure: Better wording hasn't -> has not
4000 Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
4001@@ -6380,7 +10283,7 @@
4002 Add a structure to hold ImageEncoders shared data
4003 Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
4004
4005-2016-06-14 snir sheriber <ssheribe@redhat.com>
4006+2016-06-13 snir sheriber <ssheribe@redhat.com>
4007
4008 LZ4 compression is now available at the Spicevmc channel
4009 Compressed message type is CompressedData which contains compression
4010@@ -6509,6 +10412,8 @@
4011
4012 Acked-by: Christophe Fergeau <cfergeau@redhat.com>
4013
4014+2016-06-07 Frediano Ziglio <fziglio@redhat.com>
4015+
4016 Move dcc glz field initialization into dcc_new
4017 There is no reason to initialize these fields in two different places.
4018 Note that an usage between dcc_new and the function where these
4019@@ -6516,8 +10421,6 @@
4020
4021 Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
4022
4023-2016-06-07 Frediano Ziglio <fziglio@redhat.com>
4024-
4025 record: Make red_record_cursor_cmd static
4026 This function is never used outside this compile unit.
4027
4028@@ -7098,6 +11001,8 @@
4029 Extend it's usage.
4030 This for instance leads to the removal of release_item callback.
4031
4032+2016-05-17 Frediano Ziglio <fziglio@redhat.com>
4033+
4034 Use reference counting for RedPipeItem
4035 Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
4036
4037@@ -7190,8 +11095,6 @@
4038 Remove unused refs field
4039 Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
4040
4041-2016-05-17 Frediano Ziglio <fziglio@redhat.com>
4042-
4043 remove only written num_mig_target_clients field in RedsState
4044 Acked-by: Christophe Fergeau <cfergeau@redhat.com>
4045
4046@@ -8652,6 +12555,8 @@
4047
4048 Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
4049
4050+2016-02-11 Frediano Ziglio <fziglio@redhat.com>
4051+
4052 CommonChannel: hold a reference to QXLInstance instead of RedWorker
4053 CommonChannel does not need to know about RedWorker.
4054 This reduce a bit dependencies between objects.
4055@@ -8807,8 +12712,6 @@
4056
4057 Acked-by: Jonathon Jongsma <jjongsma at redhat.com>
4058
4059-2016-02-11 Frediano Ziglio <fziglio@redhat.com>
4060-
4061 dispatcher: remove unused async_commands ring
4062 The only usage of this ring was to have a message when there was no
4063 commands on the list.
4064@@ -9477,6 +13380,8 @@
4065
4066 Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
4067
4068+2016-01-19 Frediano Ziglio <fziglio@redhat.com>
4069+
4070 tests: test removed triggered timers are not called
4071 This could happen for instance if a given timer remove all clients
4072 which have associated timers.
4073@@ -10220,7 +14125,7 @@
4074 Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
4075 Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
4076
4077-2015-12-04 Frediano Ziglio <fziglio@redhat.com>
4078+2015-12-03 Frediano Ziglio <fziglio@redhat.com>
4079
4080 server: rename files
4081 Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
4082@@ -11830,7 +15735,7 @@
4083 Acked-by: Frediano Ziglio <fziglio@redhat.com>
4084 Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
4085
4086-2015-08-28 Frediano Ziglio <fziglio@redhat.com>
4087+2015-08-27 Frediano Ziglio <fziglio@redhat.com>
4088
4089 Simplify set_surface_release_info
4090 Acked-by: Christophe Fergeau <cfergeau@redhat.com>
4091@@ -13861,12 +17766,12 @@
4092
4093 Release 0.12.4
4094
4095+2013-07-16 Uri Lublin <uril@redhat.com>
4096+
4097 Update spice-common submodule (get spice-protocol 0.12.6)
4098
4099 syntax-check: trailing whitespaces -- ignore binary files
4100
4101-2013-07-16 Uri Lublin <uril@redhat.com>
4102-
4103 syntax-check: remove trailing whitespaces
4104 Only whitespace changes in this commit.
4105
4106@@ -17090,7 +20995,7 @@
4107 Also fixup the header of server/red_parse_qxl.c, which still contained
4108 some GPL (program rather then library) text in its header.
4109
4110-2011-12-14 Marc-André Lureau <marcandre.lureau@redhat.com>
4111+2011-12-13 Marc-André Lureau <marcandre.lureau@redhat.com>
4112
4113 spelling: s/cupture/capture
4114
4115@@ -22475,14 +26380,14 @@
4116
4117 Still some room to improvment but later...
4118
4119+2010-04-05 Izik Eidus <ieidus@redhat.com>
4120+
4121 spice server: remove surface_id and surfaces_dest[3] from guest mem
4122 Validate the surface_ids just once and keep them in safe
4123 memory area
4124
4125 Make things simpler
4126
4127-2010-04-05 Izik Eidus <ieidus@redhat.com>
4128-
4129 spice: common: gdi_canvas fix gdi objects leak
4130 BitmapMask was used by the draw_text function as well
4131 therefore we need to mark from_surface = 0 if we want
4132diff --git a/INSTALL b/INSTALL
4133index 2099840..8865734 100644
4134--- a/INSTALL
4135+++ b/INSTALL
4136@@ -1,8 +1,8 @@
4137 Installation Instructions
4138 *************************
4139
4140-Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
4141-Inc.
4142+ Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software
4143+Foundation, Inc.
4144
4145 Copying and distribution of this file, with or without modification,
4146 are permitted in any medium without royalty provided the copyright
4147@@ -12,97 +12,96 @@ without warranty of any kind.
4148 Basic Installation
4149 ==================
4150
4151- Briefly, the shell command `./configure && make && make install'
4152+ Briefly, the shell command './configure && make && make install'
4153 should configure, build, and install this package. The following
4154-more-detailed instructions are generic; see the `README' file for
4155+more-detailed instructions are generic; see the 'README' file for
4156 instructions specific to this package. Some packages provide this
4157-`INSTALL' file but do not implement all of the features documented
4158+'INSTALL' file but do not implement all of the features documented
4159 below. The lack of an optional feature in a given package is not
4160 necessarily a bug. More recommendations for GNU packages can be found
4161 in *note Makefile Conventions: (standards)Makefile Conventions.
4162
4163- The `configure' shell script attempts to guess correct values for
4164+ The 'configure' shell script attempts to guess correct values for
4165 various system-dependent variables used during compilation. It uses
4166-those values to create a `Makefile' in each directory of the package.
4167-It may also create one or more `.h' files containing system-dependent
4168-definitions. Finally, it creates a shell script `config.status' that
4169+those values to create a 'Makefile' in each directory of the package.
4170+It may also create one or more '.h' files containing system-dependent
4171+definitions. Finally, it creates a shell script 'config.status' that
4172 you can run in the future to recreate the current configuration, and a
4173-file `config.log' containing compiler output (useful mainly for
4174-debugging `configure').
4175+file 'config.log' containing compiler output (useful mainly for
4176+debugging 'configure').
4177
4178- It can also use an optional file (typically called `config.cache'
4179-and enabled with `--cache-file=config.cache' or simply `-C') that saves
4180-the results of its tests to speed up reconfiguring. Caching is
4181-disabled by default to prevent problems with accidental use of stale
4182-cache files.
4183+ It can also use an optional file (typically called 'config.cache' and
4184+enabled with '--cache-file=config.cache' or simply '-C') that saves the
4185+results of its tests to speed up reconfiguring. Caching is disabled by
4186+default to prevent problems with accidental use of stale cache files.
4187
4188 If you need to do unusual things to compile the package, please try
4189-to figure out how `configure' could check whether to do them, and mail
4190-diffs or instructions to the address given in the `README' so they can
4191+to figure out how 'configure' could check whether to do them, and mail
4192+diffs or instructions to the address given in the 'README' so they can
4193 be considered for the next release. If you are using the cache, and at
4194-some point `config.cache' contains results you don't want to keep, you
4195+some point 'config.cache' contains results you don't want to keep, you
4196 may remove or edit it.
4197
4198- The file `configure.ac' (or `configure.in') is used to create
4199-`configure' by a program called `autoconf'. You need `configure.ac' if
4200-you want to change it or regenerate `configure' using a newer version
4201-of `autoconf'.
4202+ The file 'configure.ac' (or 'configure.in') is used to create
4203+'configure' by a program called 'autoconf'. You need 'configure.ac' if
4204+you want to change it or regenerate 'configure' using a newer version of
4205+'autoconf'.
4206
4207 The simplest way to compile this package is:
4208
4209- 1. `cd' to the directory containing the package's source code and type
4210- `./configure' to configure the package for your system.
4211+ 1. 'cd' to the directory containing the package's source code and type
4212+ './configure' to configure the package for your system.
4213
4214- Running `configure' might take a while. While running, it prints
4215+ Running 'configure' might take a while. While running, it prints
4216 some messages telling which features it is checking for.
4217
4218- 2. Type `make' to compile the package.
4219+ 2. Type 'make' to compile the package.
4220
4221- 3. Optionally, type `make check' to run any self-tests that come with
4222+ 3. Optionally, type 'make check' to run any self-tests that come with
4223 the package, generally using the just-built uninstalled binaries.
4224
4225- 4. Type `make install' to install the programs and any data files and
4226+ 4. Type 'make install' to install the programs and any data files and
4227 documentation. When installing into a prefix owned by root, it is
4228 recommended that the package be configured and built as a regular
4229- user, and only the `make install' phase executed with root
4230+ user, and only the 'make install' phase executed with root
4231 privileges.
4232
4233- 5. Optionally, type `make installcheck' to repeat any self-tests, but
4234+ 5. Optionally, type 'make installcheck' to repeat any self-tests, but
4235 this time using the binaries in their final installed location.
4236 This target does not install anything. Running this target as a
4237- regular user, particularly if the prior `make install' required
4238+ regular user, particularly if the prior 'make install' required
4239 root privileges, verifies that the installation completed
4240 correctly.
4241
4242 6. You can remove the program binaries and object files from the
4243- source code directory by typing `make clean'. To also remove the
4244- files that `configure' created (so you can compile the package for
4245- a different kind of computer), type `make distclean'. There is
4246- also a `make maintainer-clean' target, but that is intended mainly
4247+ source code directory by typing 'make clean'. To also remove the
4248+ files that 'configure' created (so you can compile the package for
4249+ a different kind of computer), type 'make distclean'. There is
4250+ also a 'make maintainer-clean' target, but that is intended mainly
4251 for the package's developers. If you use it, you may have to get
4252 all sorts of other programs in order to regenerate files that came
4253 with the distribution.
4254
4255- 7. Often, you can also type `make uninstall' to remove the installed
4256+ 7. Often, you can also type 'make uninstall' to remove the installed
4257 files again. In practice, not all packages have tested that
4258 uninstallation works correctly, even though it is required by the
4259 GNU Coding Standards.
4260
4261- 8. Some packages, particularly those that use Automake, provide `make
4262+ 8. Some packages, particularly those that use Automake, provide 'make
4263 distcheck', which can by used by developers to test that all other
4264- targets like `make install' and `make uninstall' work correctly.
4265+ targets like 'make install' and 'make uninstall' work correctly.
4266 This target is generally not run by end users.
4267
4268 Compilers and Options
4269 =====================
4270
4271 Some systems require unusual options for compilation or linking that
4272-the `configure' script does not know about. Run `./configure --help'
4273+the 'configure' script does not know about. Run './configure --help'
4274 for details on some of the pertinent environment variables.
4275
4276- You can give `configure' initial values for configuration parameters
4277-by setting variables in the command line or in the environment. Here
4278-is an example:
4279+ You can give 'configure' initial values for configuration parameters
4280+by setting variables in the command line or in the environment. Here is
4281+an example:
4282
4283 ./configure CC=c99 CFLAGS=-g LIBS=-lposix
4284
4285@@ -113,21 +112,21 @@ Compiling For Multiple Architectures
4286
4287 You can compile the package for more than one kind of computer at the
4288 same time, by placing the object files for each architecture in their
4289-own directory. To do this, you can use GNU `make'. `cd' to the
4290+own directory. To do this, you can use GNU 'make'. 'cd' to the
4291 directory where you want the object files and executables to go and run
4292-the `configure' script. `configure' automatically checks for the
4293-source code in the directory that `configure' is in and in `..'. This
4294-is known as a "VPATH" build.
4295+the 'configure' script. 'configure' automatically checks for the source
4296+code in the directory that 'configure' is in and in '..'. This is known
4297+as a "VPATH" build.
4298
4299- With a non-GNU `make', it is safer to compile the package for one
4300+ With a non-GNU 'make', it is safer to compile the package for one
4301 architecture at a time in the source code directory. After you have
4302-installed the package for one architecture, use `make distclean' before
4303+installed the package for one architecture, use 'make distclean' before
4304 reconfiguring for another architecture.
4305
4306 On MacOS X 10.5 and later systems, you can create libraries and
4307 executables that work on multiple system types--known as "fat" or
4308-"universal" binaries--by specifying multiple `-arch' options to the
4309-compiler but only a single `-arch' option to the preprocessor. Like
4310+"universal" binaries--by specifying multiple '-arch' options to the
4311+compiler but only a single '-arch' option to the preprocessor. Like
4312 this:
4313
4314 ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
4315@@ -136,105 +135,104 @@ this:
4316
4317 This is not guaranteed to produce working output in all cases, you
4318 may have to build one architecture at a time and combine the results
4319-using the `lipo' tool if you have problems.
4320+using the 'lipo' tool if you have problems.
4321
4322 Installation Names
4323 ==================
4324
4325- By default, `make install' installs the package's commands under
4326-`/usr/local/bin', include files under `/usr/local/include', etc. You
4327-can specify an installation prefix other than `/usr/local' by giving
4328-`configure' the option `--prefix=PREFIX', where PREFIX must be an
4329+ By default, 'make install' installs the package's commands under
4330+'/usr/local/bin', include files under '/usr/local/include', etc. You
4331+can specify an installation prefix other than '/usr/local' by giving
4332+'configure' the option '--prefix=PREFIX', where PREFIX must be an
4333 absolute file name.
4334
4335 You can specify separate installation prefixes for
4336 architecture-specific files and architecture-independent files. If you
4337-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
4338+pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
4339 PREFIX as the prefix for installing programs and libraries.
4340 Documentation and other data files still use the regular prefix.
4341
4342 In addition, if you use an unusual directory layout you can give
4343-options like `--bindir=DIR' to specify different values for particular
4344-kinds of files. Run `configure --help' for a list of the directories
4345-you can set and what kinds of files go in them. In general, the
4346-default for these options is expressed in terms of `${prefix}', so that
4347-specifying just `--prefix' will affect all of the other directory
4348+options like '--bindir=DIR' to specify different values for particular
4349+kinds of files. Run 'configure --help' for a list of the directories
4350+you can set and what kinds of files go in them. In general, the default
4351+for these options is expressed in terms of '${prefix}', so that
4352+specifying just '--prefix' will affect all of the other directory
4353 specifications that were not explicitly provided.
4354
4355 The most portable way to affect installation locations is to pass the
4356-correct locations to `configure'; however, many packages provide one or
4357+correct locations to 'configure'; however, many packages provide one or
4358 both of the following shortcuts of passing variable assignments to the
4359-`make install' command line to change installation locations without
4360+'make install' command line to change installation locations without
4361 having to reconfigure or recompile.
4362
4363 The first method involves providing an override variable for each
4364-affected directory. For example, `make install
4365+affected directory. For example, 'make install
4366 prefix=/alternate/directory' will choose an alternate location for all
4367 directory configuration variables that were expressed in terms of
4368-`${prefix}'. Any directories that were specified during `configure',
4369-but not in terms of `${prefix}', must each be overridden at install
4370-time for the entire installation to be relocated. The approach of
4371-makefile variable overrides for each directory variable is required by
4372-the GNU Coding Standards, and ideally causes no recompilation.
4373-However, some platforms have known limitations with the semantics of
4374-shared libraries that end up requiring recompilation when using this
4375-method, particularly noticeable in packages that use GNU Libtool.
4376-
4377- The second method involves providing the `DESTDIR' variable. For
4378-example, `make install DESTDIR=/alternate/directory' will prepend
4379-`/alternate/directory' before all installation names. The approach of
4380-`DESTDIR' overrides is not required by the GNU Coding Standards, and
4381+'${prefix}'. Any directories that were specified during 'configure',
4382+but not in terms of '${prefix}', must each be overridden at install time
4383+for the entire installation to be relocated. The approach of makefile
4384+variable overrides for each directory variable is required by the GNU
4385+Coding Standards, and ideally causes no recompilation. However, some
4386+platforms have known limitations with the semantics of shared libraries
4387+that end up requiring recompilation when using this method, particularly
4388+noticeable in packages that use GNU Libtool.
4389+
4390+ The second method involves providing the 'DESTDIR' variable. For
4391+example, 'make install DESTDIR=/alternate/directory' will prepend
4392+'/alternate/directory' before all installation names. The approach of
4393+'DESTDIR' overrides is not required by the GNU Coding Standards, and
4394 does not work on platforms that have drive letters. On the other hand,
4395 it does better at avoiding recompilation issues, and works well even
4396-when some directory options were not specified in terms of `${prefix}'
4397-at `configure' time.
4398+when some directory options were not specified in terms of '${prefix}'
4399+at 'configure' time.
4400
4401 Optional Features
4402 =================
4403
4404 If the package supports it, you can cause programs to be installed
4405-with an extra prefix or suffix on their names by giving `configure' the
4406-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
4407-
4408- Some packages pay attention to `--enable-FEATURE' options to
4409-`configure', where FEATURE indicates an optional part of the package.
4410-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
4411-is something like `gnu-as' or `x' (for the X Window System). The
4412-`README' should mention any `--enable-' and `--with-' options that the
4413+with an extra prefix or suffix on their names by giving 'configure' the
4414+option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
4415+
4416+ Some packages pay attention to '--enable-FEATURE' options to
4417+'configure', where FEATURE indicates an optional part of the package.
4418+They may also pay attention to '--with-PACKAGE' options, where PACKAGE
4419+is something like 'gnu-as' or 'x' (for the X Window System). The
4420+'README' should mention any '--enable-' and '--with-' options that the
4421 package recognizes.
4422
4423- For packages that use the X Window System, `configure' can usually
4424+ For packages that use the X Window System, 'configure' can usually
4425 find the X include and library files automatically, but if it doesn't,
4426-you can use the `configure' options `--x-includes=DIR' and
4427-`--x-libraries=DIR' to specify their locations.
4428+you can use the 'configure' options '--x-includes=DIR' and
4429+'--x-libraries=DIR' to specify their locations.
4430
4431 Some packages offer the ability to configure how verbose the
4432-execution of `make' will be. For these packages, running `./configure
4433+execution of 'make' will be. For these packages, running './configure
4434 --enable-silent-rules' sets the default to minimal output, which can be
4435-overridden with `make V=1'; while running `./configure
4436+overridden with 'make V=1'; while running './configure
4437 --disable-silent-rules' sets the default to verbose, which can be
4438-overridden with `make V=0'.
4439+overridden with 'make V=0'.
4440
4441 Particular systems
4442 ==================
4443
4444- On HP-UX, the default C compiler is not ANSI C compatible. If GNU
4445-CC is not installed, it is recommended to use the following options in
4446+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC
4447+is not installed, it is recommended to use the following options in
4448 order to use an ANSI C compiler:
4449
4450 ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
4451
4452 and if that doesn't work, install pre-built binaries of GCC for HP-UX.
4453
4454- HP-UX `make' updates targets which have the same time stamps as
4455-their prerequisites, which makes it generally unusable when shipped
4456-generated files such as `configure' are involved. Use GNU `make'
4457-instead.
4458+ HP-UX 'make' updates targets which have the same time stamps as their
4459+prerequisites, which makes it generally unusable when shipped generated
4460+files such as 'configure' are involved. Use GNU 'make' instead.
4461
4462 On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
4463-parse its `<wchar.h>' header file. The option `-nodtk' can be used as
4464-a workaround. If GNU CC is not installed, it is therefore recommended
4465-to try
4466+parse its '<wchar.h>' header file. The option '-nodtk' can be used as a
4467+workaround. If GNU CC is not installed, it is therefore recommended to
4468+try
4469
4470 ./configure CC="cc"
4471
4472@@ -242,26 +240,26 @@ and if that doesn't work, try
4473
4474 ./configure CC="cc -nodtk"
4475
4476- On Solaris, don't put `/usr/ucb' early in your `PATH'. This
4477+ On Solaris, don't put '/usr/ucb' early in your 'PATH'. This
4478 directory contains several dysfunctional programs; working variants of
4479-these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
4480-in your `PATH', put it _after_ `/usr/bin'.
4481+these programs are available in '/usr/bin'. So, if you need '/usr/ucb'
4482+in your 'PATH', put it _after_ '/usr/bin'.
4483
4484- On Haiku, software installed for all users goes in `/boot/common',
4485-not `/usr/local'. It is recommended to use the following options:
4486+ On Haiku, software installed for all users goes in '/boot/common',
4487+not '/usr/local'. It is recommended to use the following options:
4488
4489 ./configure --prefix=/boot/common
4490
4491 Specifying the System Type
4492 ==========================
4493
4494- There may be some features `configure' cannot figure out
4495+ There may be some features 'configure' cannot figure out
4496 automatically, but needs to determine by the type of machine the package
4497 will run on. Usually, assuming the package is built to be run on the
4498-_same_ architectures, `configure' can figure that out, but if it prints
4499+_same_ architectures, 'configure' can figure that out, but if it prints
4500 a message saying it cannot guess the machine type, give it the
4501-`--build=TYPE' option. TYPE can either be a short name for the system
4502-type, such as `sun4', or a canonical name which has the form:
4503+'--build=TYPE' option. TYPE can either be a short name for the system
4504+type, such as 'sun4', or a canonical name which has the form:
4505
4506 CPU-COMPANY-SYSTEM
4507
4508@@ -270,101 +268,101 @@ where SYSTEM can have one of these forms:
4509 OS
4510 KERNEL-OS
4511
4512- See the file `config.sub' for the possible values of each field. If
4513-`config.sub' isn't included in this package, then this package doesn't
4514+ See the file 'config.sub' for the possible values of each field. If
4515+'config.sub' isn't included in this package, then this package doesn't
4516 need to know the machine type.
4517
4518 If you are _building_ compiler tools for cross-compiling, you should
4519-use the option `--target=TYPE' to select the type of system they will
4520+use the option '--target=TYPE' to select the type of system they will
4521 produce code for.
4522
4523 If you want to _use_ a cross compiler, that generates code for a
4524 platform different from the build platform, you should specify the
4525 "host" platform (i.e., that on which the generated programs will
4526-eventually be run) with `--host=TYPE'.
4527+eventually be run) with '--host=TYPE'.
4528
4529 Sharing Defaults
4530 ================
4531
4532- If you want to set default values for `configure' scripts to share,
4533-you can create a site shell script called `config.site' that gives
4534-default values for variables like `CC', `cache_file', and `prefix'.
4535-`configure' looks for `PREFIX/share/config.site' if it exists, then
4536-`PREFIX/etc/config.site' if it exists. Or, you can set the
4537-`CONFIG_SITE' environment variable to the location of the site script.
4538-A warning: not all `configure' scripts look for a site script.
4539+ If you want to set default values for 'configure' scripts to share,
4540+you can create a site shell script called 'config.site' that gives
4541+default values for variables like 'CC', 'cache_file', and 'prefix'.
4542+'configure' looks for 'PREFIX/share/config.site' if it exists, then
4543+'PREFIX/etc/config.site' if it exists. Or, you can set the
4544+'CONFIG_SITE' environment variable to the location of the site script.
4545+A warning: not all 'configure' scripts look for a site script.
4546
4547 Defining Variables
4548 ==================
4549
4550 Variables not defined in a site shell script can be set in the
4551-environment passed to `configure'. However, some packages may run
4552+environment passed to 'configure'. However, some packages may run
4553 configure again during the build, and the customized values of these
4554 variables may be lost. In order to avoid this problem, you should set
4555-them in the `configure' command line, using `VAR=value'. For example:
4556+them in the 'configure' command line, using 'VAR=value'. For example:
4557
4558 ./configure CC=/usr/local2/bin/gcc
4559
4560-causes the specified `gcc' to be used as the C compiler (unless it is
4561+causes the specified 'gcc' to be used as the C compiler (unless it is
4562 overridden in the site shell script).
4563
4564-Unfortunately, this technique does not work for `CONFIG_SHELL' due to
4565-an Autoconf limitation. Until the limitation is lifted, you can use
4566-this workaround:
4567+Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
4568+Autoconf limitation. Until the limitation is lifted, you can use this
4569+workaround:
4570
4571 CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
4572
4573-`configure' Invocation
4574+'configure' Invocation
4575 ======================
4576
4577- `configure' recognizes the following options to control how it
4578+ 'configure' recognizes the following options to control how it
4579 operates.
4580
4581-`--help'
4582-`-h'
4583- Print a summary of all of the options to `configure', and exit.
4584+'--help'
4585+'-h'
4586+ Print a summary of all of the options to 'configure', and exit.
4587
4588-`--help=short'
4589-`--help=recursive'
4590+'--help=short'
4591+'--help=recursive'
4592 Print a summary of the options unique to this package's
4593- `configure', and exit. The `short' variant lists options used
4594- only in the top level, while the `recursive' variant lists options
4595- also present in any nested packages.
4596+ 'configure', and exit. The 'short' variant lists options used only
4597+ in the top level, while the 'recursive' variant lists options also
4598+ present in any nested packages.
4599
4600-`--version'
4601-`-V'
4602- Print the version of Autoconf used to generate the `configure'
4603+'--version'
4604+'-V'
4605+ Print the version of Autoconf used to generate the 'configure'
4606 script, and exit.
4607
4608-`--cache-file=FILE'
4609+'--cache-file=FILE'
4610 Enable the cache: use and save the results of the tests in FILE,
4611- traditionally `config.cache'. FILE defaults to `/dev/null' to
4612+ traditionally 'config.cache'. FILE defaults to '/dev/null' to
4613 disable caching.
4614
4615-`--config-cache'
4616-`-C'
4617- Alias for `--cache-file=config.cache'.
4618+'--config-cache'
4619+'-C'
4620+ Alias for '--cache-file=config.cache'.
4621
4622-`--quiet'
4623-`--silent'
4624-`-q'
4625+'--quiet'
4626+'--silent'
4627+'-q'
4628 Do not print messages saying which checks are being made. To
4629- suppress all normal output, redirect it to `/dev/null' (any error
4630+ suppress all normal output, redirect it to '/dev/null' (any error
4631 messages will still be shown).
4632
4633-`--srcdir=DIR'
4634+'--srcdir=DIR'
4635 Look for the package's source code in directory DIR. Usually
4636- `configure' can determine that directory automatically.
4637+ 'configure' can determine that directory automatically.
4638
4639-`--prefix=DIR'
4640- Use DIR as the installation prefix. *note Installation Names::
4641- for more details, including other options available for fine-tuning
4642- the installation locations.
4643+'--prefix=DIR'
4644+ Use DIR as the installation prefix. *note Installation Names:: for
4645+ more details, including other options available for fine-tuning the
4646+ installation locations.
4647
4648-`--no-create'
4649-`-n'
4650+'--no-create'
4651+'-n'
4652 Run the configure checks, but stop before creating any output
4653 files.
4654
4655-`configure' also accepts some other, not widely useful, options. Run
4656-`configure --help' for more details.
4657+'configure' also accepts some other, not widely useful, options. Run
4658+'configure --help' for more details.
4659diff --git a/Makefile.am b/Makefile.am
4660index 9a073a1..7106e8d 100644
4661--- a/Makefile.am
4662+++ b/Makefile.am
4663@@ -1,7 +1,7 @@
4664 NULL =
4665 ACLOCAL_AMFLAGS = -I m4
4666
4667-SUBDIRS = spice-common server docs tools
4668+SUBDIRS = subprojects/spice-common server docs tools
4669
4670 check-valgrind:
4671 $(MAKE) -C server check-valgrind
4672@@ -10,14 +10,17 @@ pkgconfigdir = $(libdir)/pkgconfig
4673 pkgconfig_DATA = spice-server.pc
4674
4675 DISTCHECK_CONFIGURE_FLAGS = \
4676- --enable-automated-tests \
4677+ --disable-celt051 \
4678 --enable-smartcard \
4679 --with-sasl \
4680 --enable-manual \
4681 $(NULL)
4682
4683 EXTRA_DIST = \
4684+ meson.build \
4685+ meson_options.txt \
4686 build-aux/git-version-gen \
4687+ build-aux/meson/check-spice-common \
4688 .version \
4689 $(NULL)
4690
4691diff --git a/Makefile.in b/Makefile.in
4692index 6a56634..4378449 100644
4693--- a/Makefile.in
4694+++ b/Makefile.in
4695@@ -1,7 +1,7 @@
4696-# Makefile.in generated by automake 1.15 from Makefile.am.
4697+# Makefile.in generated by automake 1.16.1 from Makefile.am.
4698 # @configure_input@
4699
4700-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
4701+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
4702
4703 # This Makefile.in is free software; the Free Software Foundation
4704 # gives unlimited permission to copy and/or distribute it,
4705@@ -99,7 +99,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_valgrind_check.m4 \
4706 $(top_srcdir)/m4/virt-linker-no-indirect.m4 \
4707 $(top_srcdir)/m4/virt-linker-relro.m4 \
4708 $(top_srcdir)/m4/warnings.m4 \
4709- $(top_srcdir)/spice-common/m4/spice-deps.m4 \
4710+ $(top_srcdir)/subprojects/spice-common/m4/spice-deps.m4 \
4711 $(top_srcdir)/configure.ac
4712 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
4713 $(ACLOCAL_M4)
4714@@ -174,7 +174,7 @@ am__recursive_targets = \
4715 $(RECURSIVE_CLEAN_TARGETS) \
4716 $(am__extra_recursive_targets)
4717 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
4718- cscope distdir dist dist-all distcheck
4719+ cscope distdir distdir-am dist dist-all distcheck
4720 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
4721 $(LISP)config.h.in
4722 # Read a list of newline-separated strings from the standard input,
4723@@ -199,7 +199,7 @@ CSCOPE = cscope
4724 DIST_SUBDIRS = $(SUBDIRS)
4725 am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
4726 $(srcdir)/spice-server.pc.in AUTHORS COPYING ChangeLog INSTALL \
4727- NEWS README compile config.guess config.sub install-sh \
4728+ NEWS README compile config.guess config.sub depcomp install-sh \
4729 ltmain.sh missing
4730 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
4731 distdir = $(PACKAGE)-$(VERSION)
4732@@ -278,6 +278,8 @@ ENABLE_VALGRIND_memcheck = @ENABLE_VALGRIND_memcheck@
4733 ENABLE_VALGRIND_sgcheck = @ENABLE_VALGRIND_sgcheck@
4734 EXEEXT = @EXEEXT@
4735 FGREP = @FGREP@
4736+GIO_UNIX_CFLAGS = @GIO_UNIX_CFLAGS@
4737+GIO_UNIX_LIBS = @GIO_UNIX_LIBS@
4738 GLIB2_CFLAGS = @GLIB2_CFLAGS@
4739 GLIB2_LIBS = @GLIB2_LIBS@
4740 GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@
4741@@ -343,6 +345,7 @@ SET_MAKE = @SET_MAKE@
4742 SHELL = @SHELL@
4743 SMARTCARD_CFLAGS = @SMARTCARD_CFLAGS@
4744 SMARTCARD_LIBS = @SMARTCARD_LIBS@
4745+SPICE_COMMON_DIR = @SPICE_COMMON_DIR@
4746 SPICE_LT_VERSION = @SPICE_LT_VERSION@
4747 SPICE_NONPKGCONFIG_CFLAGS = @SPICE_NONPKGCONFIG_CFLAGS@
4748 SPICE_NONPKGCONFIG_LIBS = @SPICE_NONPKGCONFIG_LIBS@
4749@@ -419,18 +422,21 @@ valgrind_enabled_tools = @valgrind_enabled_tools@
4750 valgrind_tools = @valgrind_tools@
4751 NULL =
4752 ACLOCAL_AMFLAGS = -I m4
4753-SUBDIRS = spice-common server docs tools
4754+SUBDIRS = subprojects/spice-common server docs tools
4755 pkgconfigdir = $(libdir)/pkgconfig
4756 pkgconfig_DATA = spice-server.pc
4757 DISTCHECK_CONFIGURE_FLAGS = \
4758- --enable-automated-tests \
4759+ --disable-celt051 \
4760 --enable-smartcard \
4761 --with-sasl \
4762 --enable-manual \
4763 $(NULL)
4764
4765 EXTRA_DIST = \
4766+ meson.build \
4767+ meson_options.txt \
4768 build-aux/git-version-gen \
4769+ build-aux/meson/check-spice-common \
4770 .version \
4771 $(NULL)
4772
4773@@ -460,8 +466,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
4774 echo ' $(SHELL) ./config.status'; \
4775 $(SHELL) ./config.status;; \
4776 *) \
4777- echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
4778- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
4779+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
4780+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
4781 esac;
4782
4783 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
4784@@ -626,7 +632,10 @@ distclean-tags:
4785 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
4786 -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
4787
4788-distdir: $(DISTFILES)
4789+distdir: $(BUILT_SOURCES)
4790+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
4791+
4792+distdir-am: $(DISTFILES)
4793 $(am__remove_distdir)
4794 test -d "$(distdir)" || mkdir "$(distdir)"
4795 @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
4796diff --git a/NEWS b/NEWS
4797index 51bb4a2..168e20d 100644
4798--- a/NEWS
4799+++ b/NEWS
4800@@ -1,3 +1,56 @@
4801+Major Changes in 0.14.2:
4802+========================
4803+
4804+Main changes are support for Meson build and graphic device info
4805+messages allowing to better support multi-monitor configurations.
4806+
4807+* CVE-2019-3813: fix off-by-one error in group/slot boundary check
4808+* support H265 in stream-channel
4809+* add support for building with meson/ninja
4810+* minor tests fixes improving CI
4811+* set char device state for smartcard, allowing Qemu optimization
4812+* improve red-parse-qxl.c interface making it more consistent
4813+* add some instrumentation for streaming device
4814+* QXL interface: add a function to identify monitors in the guest
4815+ (spice_qxl_set_device_info)
4816+* add support for GraphicsDeviceInfo messages
4817+* video-stream: prevent crash on stream reattach
4818+* make channel client callbacks virtual functions
4819+* bumped minimum required glib version to 2.38
4820+* attempt to have a reliable led state for keyboard modifiers
4821+
4822+Major Changes in 0.14.1:
4823+========================
4824+
4825+The main change in this release is the addition of a new protocol extension
4826+in order to support streaming the remote display as a video stream rather than
4827+going through the QXL protocol. Together with spice-streaming-agent, and/or with
4828+more work on the qemu/spice-server side, this should allow streaming of 3D
4829+accelerated VMs in the future. At this point, this part of spice-server is
4830+still a work in progress (multi-monitor support and various features are
4831+missing).
4832+
4833+* add new org.spice-space.stream.0 channel used for passing an encoded video
4834+ stream from the guest to the client
4835+* add support for TCP_CORK to reduce the amount of packets that we send
4836+* fix CVE-2018-10873
4837+* fix cursor related migration crash
4838+* fix regression causing sound recording to be muted after
4839+ client disconnection/reconnection (introduced in 0.13.90)
4840+* fix regression in corner cases where images could be sent uncompressed
4841+ when they used to be compressed with QUIC
4842+* disable TLS 1.0 support
4843+* CELT 0.5.1 support is now disabled by default. If celt051-devel is installed
4844+ at build-time, --enable-celt051/--disable-celt051 must be explicitly specified
4845+* drop support for unsupported OpenSSL version. OpenSSL 1.0.0 or newer is now
4846+ required
4847+* bumped minimum required glib version to 2.32
4848+* endianness fixes
4849+* (small) leak fixes
4850+* usual round of code cleanups
4851+* not directly related to this release, but the upstream git repository is now
4852+ hosted on gitlab.freedesktop.org
4853+
4854 Major Changes in 0.14.0:
4855 ========================
4856
4857diff --git a/README b/README
4858index 4aaf6a7..59d2367 100644
4859--- a/README
4860+++ b/README
4861@@ -27,7 +27,7 @@ Or to install into a private user specific location
4862 The following mandatory dependencies are required in order to
4863 build SPICE
4864
4865- Spice protocol >= 0.12.13
4866+ Spice protocol >= 0.14.0
4867 Pixman >= 0.17.7
4868 OpenSSL
4869 libjpeg
4870@@ -37,7 +37,7 @@ The following optional dependencies increase the available
4871 functionality
4872
4873 Cyrus-SASL
4874- libcacard >= 0.1.2 (Smartcard support)
4875+ libcacard >= 2.5.1 (Smartcard support)
4876 Opus >= 1.0.0 (Opus audio encoding support)
4877 LZ4 (LZ4 compression support)
4878 GStreamer >= 1.0.0
4879@@ -56,14 +56,14 @@ There is also a mailing list for new release announcements:
4880
4881 To view known bugs, or report new bugs, in SPICE visit
4882
4883- https://bugs.freedesktop.org/describecomponents.cgi?product=Spice
4884+ https://gitlab.freedesktop.org/spice/spice/issues/new?
4885
4886 Bugs found when using an OS distribution's binary packages should
4887 be reported to the OS vendors' own bug tracker first.
4888
4889 The latest SPICE code can be found in GIT at:
4890
4891- https://cgit.freedesktop.org/spice/
4892+ https://gitlab.freedesktop.org/spice/
4893
4894 Licensing
4895 ---------
4896diff --git a/aclocal.m4 b/aclocal.m4
4897index 6462a22..9a3219a 100644
4898--- a/aclocal.m4
4899+++ b/aclocal.m4
4900@@ -1,6 +1,6 @@
4901-# generated automatically by aclocal 1.15 -*- Autoconf -*-
4902+# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
4903
4904-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
4905+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
4906
4907 # This file is free software; the Free Software Foundation
4908 # gives unlimited permission to copy and/or distribute it,
4909@@ -364,7 +364,7 @@ AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"],
4910 [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])])
4911 ])dnl PKG_HAVE_DEFINE_WITH_MODULES
4912
4913-# Copyright (C) 2002-2014 Free Software Foundation, Inc.
4914+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
4915 #
4916 # This file is free software; the Free Software Foundation
4917 # gives unlimited permission to copy and/or distribute it,
4918@@ -376,10 +376,10 @@ AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"],
4919 # generated from the m4 files accompanying Automake X.Y.
4920 # (This private macro should not be called outside this file.)
4921 AC_DEFUN([AM_AUTOMAKE_VERSION],
4922-[am__api_version='1.15'
4923+[am__api_version='1.16'
4924 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
4925 dnl require some minimum version. Point them to the right macro.
4926-m4_if([$1], [1.15], [],
4927+m4_if([$1], [1.16.1], [],
4928 [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
4929 ])
4930
4931@@ -395,14 +395,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
4932 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
4933 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
4934 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
4935-[AM_AUTOMAKE_VERSION([1.15])dnl
4936+[AM_AUTOMAKE_VERSION([1.16.1])dnl
4937 m4_ifndef([AC_AUTOCONF_VERSION],
4938 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
4939 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
4940
4941 # AM_AUX_DIR_EXPAND -*- Autoconf -*-
4942
4943-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
4944+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
4945 #
4946 # This file is free software; the Free Software Foundation
4947 # gives unlimited permission to copy and/or distribute it,
4948@@ -452,9 +452,46 @@ AC_DEFUN([AM_AUX_DIR_EXPAND],
4949 am_aux_dir=`cd "$ac_aux_dir" && pwd`
4950 ])
4951
4952+# AM_COND_IF -*- Autoconf -*-
4953+
4954+# Copyright (C) 2008-2018 Free Software Foundation, Inc.
4955+#
4956+# This file is free software; the Free Software Foundation
4957+# gives unlimited permission to copy and/or distribute it,
4958+# with or without modifications, as long as this notice is preserved.
4959+
4960+# _AM_COND_IF
4961+# _AM_COND_ELSE
4962+# _AM_COND_ENDIF
4963+# --------------
4964+# These macros are only used for tracing.
4965+m4_define([_AM_COND_IF])
4966+m4_define([_AM_COND_ELSE])
4967+m4_define([_AM_COND_ENDIF])
4968+
4969+# AM_COND_IF(COND, [IF-TRUE], [IF-FALSE])
4970+# ---------------------------------------
4971+# If the shell condition COND is true, execute IF-TRUE, otherwise execute
4972+# IF-FALSE. Allow automake to learn about conditional instantiating macros
4973+# (the AC_CONFIG_FOOS).
4974+AC_DEFUN([AM_COND_IF],
4975+[m4_ifndef([_AM_COND_VALUE_$1],
4976+ [m4_fatal([$0: no such condition "$1"])])dnl
4977+_AM_COND_IF([$1])dnl
4978+if test -z "$$1_TRUE"; then :
4979+ m4_n([$2])[]dnl
4980+m4_ifval([$3],
4981+[_AM_COND_ELSE([$1])dnl
4982+else
4983+ $3
4984+])dnl
4985+_AM_COND_ENDIF([$1])dnl
4986+fi[]dnl
4987+])
4988+
4989 # AM_CONDITIONAL -*- Autoconf -*-
4990
4991-# Copyright (C) 1997-2014 Free Software Foundation, Inc.
4992+# Copyright (C) 1997-2018 Free Software Foundation, Inc.
4993 #
4994 # This file is free software; the Free Software Foundation
4995 # gives unlimited permission to copy and/or distribute it,
4996@@ -485,7 +522,7 @@ AC_CONFIG_COMMANDS_PRE(
4997 Usually this means the macro was only invoked conditionally.]])
4998 fi])])
4999
5000-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches