summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2014-08-13gnutlsgnutlsChristophe Fergeau1-1/+78
2014-08-13GNUTLSChristophe Fergeau2-23/+302
2014-05-15gnutls supportChristophe Fergeau4-0/+229
2014-04-29Include glib-compat.h in spice-option.cChristophe Fergeau1-0/+1
Commit 8c89485 added a call to g_clear_pointer().
2014-04-24option: check that default ca-file existsMarc-André Lureau1-0/+2
Don't set default ca-file path if the file doesn't exists.
2014-04-23option: use more portable default ca-file pathMarc-André Lureau1-1/+1
If no CA path is given, a default one is set. Use g_build_filename() to set a more portable and valid default path.
2014-04-17Fix leak in spice_gtk_session_sync_keyboard_modifiers()Christophe Fergeau1-0/+1
The list of channels returned by spice_session_get_channels() must be freed after use.
2014-04-15display: signal primary-destroy when clearing all surfacesMarc-André Lureau1-0/+6
When destroying the primary surface, we need to signal it, since listeners might be referencing the data pointer. Currently, this only happens during channel finalize(). This could help with rhbz#1082555.
2014-04-15gtk-session: always sync modifiers for client eventsMarc-André Lureau1-8/+11
The channel state is not synchronous. It may happen that we want to set and unset quickly a modifier, but the guest modifier state hasn't been updated yet, and will still be seen as unset, preventing the last unset change.
2014-04-15gtk-session: s/g_debug/CHANNEL_DEBUGMarc-André Lureau1-2/+3
2014-04-15Include gtk-compat.h in spice-gtk-session.cChristophe Fergeau1-0/+1
GDK_IS_X11_DISPLAY is not available on gtk+ 2.x, but it already has a fallback definition in gtk-compat.h
2014-04-15Gather gtk+ compatibility code in a single fileChristophe Fergeau5-42/+60
There are gtk+ version checks in several source files to add compatibility implementations of gtk3 functions not available in gtk2. This commit gathers all of them in a gtk-compat.h header, similar to what is done for glib-compat.h
2014-04-15Add compat implementation of g_queue_free_full()Christophe Fergeau2-0/+25
This was introduced in glib 2.32 and the webdav channel uses it.
2014-04-08Use correct printf format modifier for gssizeChristophe Fergeau1-1/+1
This fixes this warning/error: channel-webdav.c: In function 'demux_to_client': channel-webdav.c:318:5: error: format '%ld' expects argument of type 'long int', but argument 5 has type 'gssize' [-Werror=format=] CHANNEL_DEBUG(self, "pushing %ld to client %p", size, client);
2014-04-08Add man pageChristophe Fergeau4-1/+213
Spice-GTK provides SPICE-specific command line options. This man page describes these options as well as the format of SPICE URIs.
2014-04-03Use GdkKeymap to listen for keyboard modifier changesJonathon Jongsma1-0/+9
Connect to the GdkKeymap::state-changed signal to detect when the client keyboard modifiers have changed. This keeps the client and the guest in sync even when the SpiceDisplay widget isn't focused. New values are only sent down to the guest if the new value is different than the current value.
2014-04-03Ensure keyboard modifiers are synchronized properlyJonathon Jongsma3-89/+100
In certain circumstances, the keyboard modifiers get out-of-sync between the guest and the client. This is easy to reproduce with the following steps: - launch virt-viewer with a guest that is not running - start the guest - while guest is booting, enable CAPS LOCK on the client - after guest finishes booting, it will set its modifiers to a default value (e.g. numlock on, capslock off) - now capslock is OFF in the guest, but ON in the client - toggle caps lock - now capslock is ON in the guest, but OFF in the client This moves the responsibility for synchronizing client and guest modifiers into SpiceGtkSession. It can't be handled easily within the SpiceDisplay widget since there can be multiple display widgets for each inputs channel. A new function (spice_gtk_session_sync_keyboard_modifiers()) was added so that synchronization can be triggered manually if desired. But it also registers a signal handler for the InputsChannel::inputs-modifiers signal to detect when the guest has changed its modifiers. The signal handler simply overrides the guests modifiers and sets them back to the value from the client.
2014-04-02Update NEWS for v0.25Marc-André Lureau1-0/+7
2014-04-02Make phodav an optional external dependencyMarc-André Lureau8-11/+31
Now that upstream provides a stable/versioned API, it will be easier to deal with than with submodules.
2014-04-02build-sys: re-organize summary to show major info firstMarc-André Lureau1-2/+2
2014-04-02build-sys: add missing soup substMarc-André Lureau1-0/+3
2014-03-31Fix missing SPICE_GTK_MICRO_VERSION valueJonathon Jongsma1-1/+1
configure.ac tries to assign a default value of 0 to the micro version if it's empty, but the shell variable assignemnt doesn't work because there's whitespace around the '=' sign. This results in SPICE_GTK_MICRO_VERSION being defined to (), which causes a compilation failure in files that include it.
2014-03-25Update NEWS for v0.24Marc-André Lureau2-1/+2
2014-03-25Update phodavMarc-André Lureau1-0/+0
2014-03-25Advertise SASL cap from clientChristophe Fergeau1-0/+3
A client setting this capability indicates to the server that it's able to handle SASL authentication, and it also indicates that if SASL is to be used for authentication, then it won't expect a valid 'pub_key' field in SpiceLinkReply. The reason for making guarantees about not looking at the pub_key field is that its presence and size is hardcoded in the protocol, but in some hardened setups (using fips mode), generating a RSA 1024 bit key as expected is forbidden and fails. With this new capability, the server knows the client will be able to handle SASL if needed, and can skip the generation of the key altogether. This means that on the setups described above, SASL authentication has to be used.
2014-03-20webdav: use some more explicit namesMarc-André Lureau1-9/+10
Address Alon's review from http://lists.freedesktop.org/archives/spice-devel/2014-March/016383.html
2014-03-19Start NEWS fileMarc-André Lureau1-0/+15
2014-03-19session: add shared-dir property and optionMarc-André Lureau4-3/+62
Allow to specify the shared directory from the command line, or at runtime via properties. (still default to xdg public share, if none specified)
2014-03-19Add webdav channelMarc-André Lureau18-4/+851
See spice-common for protocol details. phodav, a webdav server library, is imported thanks to a submodule, until this project has a stable API and releases. The webdav channel is reponsible for handling port events and multiplexing the request streams. Extra care has been made to avoid blocking and to enable some fairness between concurrent streams, however this has been particularly tricky and is likely to have some issues left. The webdav server is run in a seperate thread, using libsoup. The client communication is done via a local tcp socket, but protected to only accept local connection and with a pretty strong password. The home directory is exported for the remote to browse, which seems to be a sensible default atm.
2014-03-18mingw64: Fix gssize printf-format warningsChristophe Fergeau2-5/+8
When building with mingw64, several warnings about using the wrong format specifier for gssize/gsize occur similar to: win-usb-dev.c: In function 'g_udev_client_list_devices': win-usb-dev.c:145:21: error: format '%i' expects argument of type 'int', but argument 7 has type 'gssize' [-Werror=format=] name, errstr, rc); This commit makes use of the G_GSIZE_FORMAT/G_GSSIZE_FORMAT macros provided by glib to silence these warnings. I've checked that this does not introduce new warnings on linux and mingw32 builds.
2014-03-14Fix spice_display_get_pixbuf() with offset areaMarc-André Lureau1-2/+3
Fix screenshot of secondary displays, with an area position != (0,0). This has never been working correctly since the surface display "area" was introducted in: commit e3bb7b1cfd162fcb8943e9d582dab43eeec6ce41 Author: Marc-André Lureau <marcandre.lureau@redhat.com> Date: Tue Jun 12 19:24:47 2012 +0200 display: learn to restrict display to an area https://bugzilla.redhat.com/show_bug.cgi?id=1029761
2014-03-14Silence some gcc warningsMarc-André Lureau1-1/+1
cc1: warnings being treated as errors spice-uri.c: In function ‘spice_uri_parse’: spice-uri.c:105: error: ‘saveptr’ may be used uninitialized in this function [-Wuninitialized] spice-uri.c:105: error: ‘saveptr2’ may be used uninitialized in this function [-Wuninitialized]
2014-03-13sasl: Rework memory handling in spice_channel_perform_auth_sasl()Christophe Fergeau1-10/+11
While looking at the SASL code, I noticed some memory leaks in error paths. This commit adds a cleanup: block to free some of the memory dynamically allocated in that function, and remove the corresponding g_free() from the regular code flow. This should ensure that both the regular path and the error paths free the same memory. This fixes at least this 'mechlist' leak which I got during regular SASL PLAIN authentication: ==3452== 6 bytes in 1 blocks are definitely lost in loss record 140 of 11,706 ==3452== at 0x4A0645D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.s ==3452== by 0x35BAC4EE6E: g_malloc (gmem.c:104) ==3452== by 0x5BF7CAA: spice_channel_perform_auth_sasl (spice-channel.c:1440) ==3452== by 0x5BF9033: spice_channel_recv_link_msg (spice-channel.c:1727) ==3452== by 0x5BFAECD: spice_channel_coroutine (spice-channel.c:2348) ==3452== by 0x5C35D6D: coroutine_trampoline (coroutine_ucontext.c:63) ==3452== by 0x5C35A1B: continuation_trampoline (continuation.c:51) ==3452== by 0x31342479BF: ??? (in /usr/lib64/libc-2.18.so) ==3452== by 0x75F2940591224CFF: ??? ==3452== by 0xE756E5F: ??? ==3452== by 0xE7589BF: ??? ==3452== by 0xFFEFFF78F: ??? ==3452== by 0x5BFCD92: g_io_wait_helper (gio-coroutine.c:43) =
2014-03-13Make sure config.h is included first in all .c filesChristophe Fergeau26-15/+50
This is recommended by autoconf documentation http://nondot.org/sabre/Mirrored/autoconf-2.12/autoconf_3.html#SEC15 and some #defines in config.h can change what happens in system headers, so config.h has to be included first. The only file which does not get this treatment is gtk/spice-client-gtk-module.c as this breaks the build on gtk+2: CC SpiceClientGtk_la-spice-client-gtk-module.lo In file included from /usr/include/python2.7/pyconfig.h:6:0, from /usr/include/python2.7/Python.h:8, from /usr/include/pygtk-2.0/pygobject.h:5, from spice-client-gtk-module.c:20: /usr/include/python2.7/pyconfig-64.h:1182:0: error: "_POSIX_C_SOURCE" redefined [-Werror] #define _POSIX_C_SOURCE 200112L ^ In file included from /usr/include/limits.h:25:0, from /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include/limits.h:168, from /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include/syslimits.h:7, from /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include/limits.h:34, from /usr/lib64/glib-2.0/include/glibconfig.h:11, from /usr/include/glib-2.0/glib/gtypes.h:34, from /usr/include/glib-2.0/glib/galloca.h:34, from /usr/include/glib-2.0/glib.h:32, from /usr/include/glib-2.0/gobject/gbinding.h:30, from /usr/include/glib-2.0/glib-object.h:25, from ./glib-compat.h:24, from ../config.h:201, from spice-client-gtk-module.c:18: /usr/include/features.h:228:0: note: this is the location of the previous definition # define _POSIX_C_SOURCE 200809L ^ cc1: all warnings being treated as errors
2014-03-10build-sys: Fix setting of SPICE_GTK_MICRO_VERSIONChristophe Fergeau1-1/+1
After e124a3b2e which added the SPICE_GTK_CHECK_VERSION macro, a non-fatal './configure: line 15251: x24: command not found' appears in configure output. This is because [ ] is not interpreted as the 'test' command by autoconf, but is rather used as a way to quote configure.ac content. This commit replaces the use of [] with a more typical AS_IF.
2014-02-27Add missing #include "glib-compat.h"Christophe Fergeau2-0/+2
wocky-http-proxy.c and vmcstream.c make use of functions that were not available in glib 2.26 so we need fallback for them through glib-compat.h or spice-gtk won't build with older glibs.
2014-02-25display: fix crash when releasing primary surfaceMarc-André Lureau1-1/+1
Since 1fcaaa15f8aca362f9e6afc87fb43cfbccf6ff62, display_surface is allocated using gslice. However MSG_DISPLAY_MODE handler didn't allocate using GSlice. This can eventually lead to a crash when freeing, such as: Thread no. 1 (6 frames) #2 g_slice_free1 at gslice.c:1097 #3 iter_remove_or_steal at ghash.c:787 #4 clear_surfaces at /lib64/libspice-client-glib-2.0.so.8 #5 spice_display_channel_finalize at /lib64/libspice-client-glib-2.0.so.8 #7 spice_channel_delayed_unref at /lib64/libspice-client-glib-2.0.so.8 #12 gtk_main at gtkmain.c:1158 https://bugzilla.redhat.com/show_bug.cgi?id=1069546
2014-02-24Add a SPICE_GTK_CHECK_VERSION macroMarc-André Lureau5-0/+89
2014-02-21spice-common: revert last changeMarc-André Lureau1-0/+0
2014-02-21session: add spice_session_get_proxy_uri()Marc-André Lureau5-0/+18
Learn to return the currently configured proxy, to allow client to tweak parameters, such as username and password.
2014-02-21channel: add spice_channel_get_error()Marc-André Lureau9-7/+43
Add a function to retrieve the last GError from a channel, this may be useful to provide additional error details to the client.
2014-02-21Make SpiceURI a public APIMarc-André Lureau15-451/+614
Generalize a little bit SpiceProxy to allow easy URI manipulation by clients.
2014-02-21channel: talk to giostream instead of gsocketMarc-André Lureau2-14/+41
2014-02-21channel: simplify has error codeMarc-André Lureau1-17/+11
Get rid of a superflous g_socket_condition_check().
2014-02-21openssl: learn to handle a new kind of BIO based on GIOStreamMarc-André Lureau4-19/+47
Although reusing BIO_new_socket() once again is a hack, it seems to be the easiest way... The proper solution is certainly to start using GTls instead, but that will require a glib 2.28 dep bump.
2014-02-21Fill g_proxy_address_new() with protocol, user and passwordMarc-André Lureau1-2/+5
This way, the call might eventually support more proxy and authentication.
2014-02-21http-proxy: add https proxyMarc-André Lureau3-23/+155
This will require glib 2.28 for GTls support, atm
2014-02-21spice-proxy: parse https protocolMarc-André Lureau1-4/+10
2014-02-21http-proxy: specify Basic schemeMarc-André Lureau1-1/+1
Or Squid will fail with: WARNING: Unsupported or unconfigured/inactive proxy-auth scheme
2014-02-21proxy: parse user and pass from uriMarc-André Lureau1-0/+13