Commit Graph

504 Commits

Author SHA1 Message Date
Alon Levy
ce3efca360 server/red_channe: make hold_item take a channel arg 2011-03-02 17:27:50 +02:00
Alon Levy
73858b93dc server/red_worker: introduce red_peer_handle_outgoing and OutgoingHandler
From red_channel.
2011-03-02 17:27:50 +02:00
Alon Levy
29a7bcd596 server/red_worker: introduce common_channel_config_socket 2011-03-02 17:27:50 +02:00
Alon Levy
beba2c7206 server/red_worker: line width fix 2011-03-02 17:27:50 +02:00
Alon Levy
724348ce49 server/red_worker: don't push to NULL channel (called from device input) 2011-03-02 17:27:50 +02:00
Alon Levy
705254b399 server/red_worker: introduce red_channel_pipe_clear
No more common_release_pipe_item
2011-03-02 17:27:50 +02:00
Alon Levy
a0a9718423 server/red_worker: add red_channel_push 2011-03-02 17:27:50 +02:00
Alon Levy
111cf51103 server/red_worker: add send_item 2011-03-02 17:27:50 +02:00
Alon Levy
f7a99f858e server/red_worker: red_channel renames
The renames are part of refactoring red_worker's RedChannel to reuse
red_channel.h's RedChannel at the end.

s/red_send_data/red_channel_send/
s/red_pipe_get/red_channel_pipe_get/
s/recive_data/incoming/
s/red_receive/red_channel_receive/
s/channel_handle_message/red_channel_handle_message/
s/channel_is_connected/red_channel_is_connected/
s/red_pipe_add_type/red_channel_pipe_add_type/
2011-03-02 17:27:49 +02:00
Alon Levy
b3ea0bec3d server/red_tunnel_worker: use message_serial setter and getter
fixes breakage in --enable-tunnel compilation.
2011-03-02 17:27:49 +02:00
Marc-André Lureau
8f9cbd19db server: add SASL support
We introduce 2 public functions to integrate with the library user.

spice_server_set_sasl() - turn on SASL
spice_server_set_sasl_appname() - specify the name of the app (It is
used for where to find the default configuration file)

The patch for QEMU is on its way.

https://bugs.freedesktop.org/show_bug.cgi?id=34795
2011-02-28 16:36:35 +01:00
Marc-André Lureau
f4dddc50f0 server: add auth mechanism selection
https://bugs.freedesktop.org/show_bug.cgi?id=34795
2011-02-28 16:36:35 +01:00
Marc-André Lureau
4f983b2c9c server: add reds_channel_dispose()
Try to have a common base dispose() method for channels. For now, it
just free the caps.

Make use of it in snd_worker, and in sync_write() - sync_write() is
going to have default caps later on.

https://bugs.freedesktop.org/show_bug.cgi?id=34795
2011-02-28 16:36:35 +01:00
Marc-André Lureau
09c01c9516 server: simplify and constify sync_write()
+ symplify, improving style of code using it.

https://bugs.freedesktop.org/show_bug.cgi?id=34795
2011-02-28 16:36:35 +01:00
Marc-André Lureau
37dbb8aec9 server: pull out reds_handle_link(), for future reuse
+ a couple of indent, style change

https://bugs.freedesktop.org/show_bug.cgi?id=34795
2011-02-28 16:36:35 +01:00
Marc-André Lureau
414e1de720 build: add --with-sasl
Using cyrus SASL library (same as gtk-vnc/qemu).

https://bugs.freedesktop.org/show_bug.cgi?id=34795
2011-02-28 16:36:35 +01:00
Marc-André Lureau
2ced8996c8 server/reds: make writev fallback more generic
We are going to reuse it for SASL/SSF encode write().

https://bugs.freedesktop.org/show_bug.cgi?id=34795
2011-02-28 16:36:35 +01:00
Marc-André Lureau
76dc27f08a server: rename s/peer/stream
This is stylish change again. We are talking about a RedStream object,
so let's just name the variable "stream" everywhere, to avoid
confusion with a non existent RedPeer object.

https://bugs.freedesktop.org/show_bug.cgi?id=34795
2011-02-28 16:36:35 +01:00
Marc-André Lureau
1a4923c210 server/reds: remove the void* ctx field
https://bugs.freedesktop.org/show_bug.cgi?id=34795
2011-02-28 16:36:35 +01:00
Marc-André Lureau
fc5d7f7625 server: use the new reds_stream_{read,write}
https://bugs.freedesktop.org/show_bug.cgi?id=34795
2011-02-28 16:36:28 +01:00
Marc-André Lureau
f32503258f server: remove cb_free, not needed anymore
https://bugs.freedesktop.org/show_bug.cgi?id=34795
2011-02-27 18:26:19 +01:00
Marc-André Lureau
07d6dd6108 server: use reds_{link,stream}_free()
Be carefull removing the watch before, like __release_link

https://bugs.freedesktop.org/show_bug.cgi?id=34795
2011-02-27 18:26:19 +01:00
Marc-André Lureau
fca602124d server: use reds_stream_remove_watch() helper
https://bugs.freedesktop.org/show_bug.cgi?id=34795
2011-02-27 18:26:18 +01:00
Marc-André Lureau
b79e7320de server: add reds_stream_{read,write,free,remove_watch}()
https://bugs.freedesktop.org/show_bug.cgi?id=34795
2011-02-27 18:26:15 +01:00
Marc-André Lureau
d47912241f server: s/RedsStreamContext/RedsStream
https://bugs.freedesktop.org/show_bug.cgi?id=34795
2011-02-27 16:55:22 +01:00
Marc-André Lureau
29be54f6d3 server/reds: remove unused readv
Let's not bother with it since nobody uses it, and it's not implemented for SSL anyway

https://bugs.freedesktop.org/show_bug.cgi?id=34795
2011-02-27 16:55:22 +01:00
Marc-André Lureau
0e64e2d02c build: make it silent
This patch make it easier to spot warnings in compilation.  It should
work with older versions of automake that don't support silent rules.

If you want verbose build, make V=1.

Signed-off-by: Uri Lublin <uril@redhat.com>

https://bugs.freedesktop.org/show_bug.cgi?id=34795
2011-02-27 16:55:22 +01:00
Alon Levy
0f4a0aa07e server/tests/basic_event_loop: fix bzero warning 2011-02-11 19:13:03 +02:00
Alon Levy
0b687d9b23 server/red_worker: cursor_channel_send_item: don't downcast 2011-02-11 15:32:21 +02:00
Alon Levy
bb7cbceb97 server/red_worker: match channel_release_pipe_item_proc to red_channel 2011-02-11 15:32:21 +02:00
Alon Levy
53f5cf43ce server/red_worker: introduce an outgoing struct around out_bytes_counter 2011-02-11 15:32:21 +02:00
Alon Levy
d7521edac1 server/red_worker: renames to add channel_ prefix and consistent sig
s/disconnect_channel_proc/channel_disconnect_proc/
s/release_item_proc/channel_release_pipe_item_proc/
s/handle_message_proc/channel_handle_parsed_proc/

Adds RedChannel* channel as first parameter to hold_pipe_item_proc
2011-02-11 15:32:21 +02:00
Alon Levy
f8d3345ef7 server/red_worker: split cursor_channel_send_item
Split from cursor_channel_push
2011-02-11 15:32:21 +02:00
Alon Levy
67b3bf20d0 server/red_worker: use red_channel begin_send_message
s/red_begin_send_message/red_channel_begin_send_message/
2011-02-11 15:32:21 +02:00
Alon Levy
7d53a51da0 server/red_worker: add red_channel_init_send_data
Changes semantics of send to always hold/release regardless of block, like
red_channel. A hold is just a reference count increment or nop.
2011-02-11 15:32:21 +02:00
Alon Levy
859aa15806 server/red_worker: split display_channel_send_item
Split it out of display_channel_push.
2011-02-11 15:32:21 +02:00
Alon Levy
f8262c80ad server/red_worker: extract common_release_pipe_item from red_pipe_clear 2011-02-11 15:32:21 +02:00
Alon Levy
e588176dab server/red_worker: use red_channel pipe add versions
s/red_pipe_add/red_channel_pipe_add/
s/red_pipe_add_after/red_channel_pipe_add_after/
2011-02-11 15:32:21 +02:00
Alon Levy
a0a958c77b server/red_worker: shorten some lines using alias variables 2011-02-11 15:32:21 +02:00
Alon Levy
e8698ea0f8 server/red_worker: introduce CommonChannel
with everything (almost) not in red_channel's RedChannel

As a result of CommonChannel a free cb is added to EventHandler,
to take care of non zero offset for embedded EventHandler.
2011-02-11 15:32:20 +02:00
Alon Levy
9330dbac13 server/red_worker: use ack_data struct
start of move to red_channel based channels
2011-02-11 15:32:20 +02:00
Alon Levy
a185c1daf0 server/red_worker: change hold_item sig, drop the void*
changed to PipeItem *
2011-02-11 15:32:20 +02:00
Alon Levy
51da06793c server/smartcard: don't push our own error on reader add
The device already sends one. There are actually two connections going
on:
 server to client - this is the smartcard channel, it reuses the VSC protocol.
 server to device - this is an internal connection using VSC too.

We generally just passthrough all messages from the client to the device,
and from the device to the client. We only rewrite the reader_id because
the device knows about a single id (it is actually a card id), and we
may manage more then one in the future.

Bottom line is that there was an extra VSC_Error message reaching the client.
2011-02-09 12:11:51 +02:00
Alon Levy
c7c6f9aed0 server/smartcard: ignore VSC_Init from client 2011-02-07 21:32:40 +02:00
Alon Levy
612f9744df server/smartcard: print instead of assert on bad reader_id in smartcard_char_device_on_message_from_device 2011-02-07 21:32:40 +02:00
Alon Levy
fe83d01162 server/smartcard: libcacard uses network byte order, so we must too 2011-02-07 21:32:40 +02:00
Alon Levy
9d75e43226 server/smartcard: libcacard removed ReaderAddResponse 2011-02-07 21:31:23 +02:00
Alon Levy
4e48f65dc4 server/smartcard: s/reader_id_t/uint32_t/ (libcacard changed) 2011-02-07 20:27:35 +02:00
Alon Levy
8c17f83940 server/red_channel: style fix in red_channel_init_send_data 2011-02-07 19:22:44 +02:00
Alon Levy
c4d028510d server/red_channel: red_channel_pipe_clear: assert on NULL channel 2011-02-07 19:22:44 +02:00
Alon Levy
e9103c67ad server/red_channel: add TODO 2011-02-07 19:22:44 +02:00
Alon Levy
e655c5d26e server/red_channel: export red_channel_send 2011-02-07 19:22:44 +02:00
Alon Levy
10692e20ca server/red_channel: add red_channel_waiting_for_ack
small inline function to have the ack window logic.
2011-02-07 19:22:44 +02:00
Alon Levy
f45d17d68b server/red_channel: protect red_channel_push from NULL 2011-02-07 19:22:44 +02:00
Alon Levy
3476fe428d server/red_channel: reset pipe_size on clear (from red_worker) 2011-02-07 19:22:44 +02:00
Alon Levy
5062433d8a server/red_channel: red_channel_event: push on blocked
try to push either on signal (write available) or when blocked
and read signaled. From red_worker, copied for compatibility when
switching later to RedChannel in red_worker. Doesn't make a lot of
sense (but works), see comment in patch.
2011-02-07 19:22:44 +02:00
Alon Levy
23f13aa983 server/red_channel: use red_channel_receive 2011-02-07 19:22:44 +02:00
Alon Levy
a5afee2842 server/red_channel: add empty handle of SPICE_MSGC_DISCONNECTING
Simply ignored in red_channel_handle_message
2011-02-07 19:22:44 +02:00
Alon Levy
74d7405493 server/red_channel: add red_channel_receive (for red_worker) 2011-02-07 19:22:44 +02:00
Alon Levy
c0b7abaa48 server/red_channel: unstatic red_channel_pipe_clear (for red_worker) 2011-02-07 19:22:44 +02:00
Alon Levy
a30a602654 server/red_channel: unstatic red_channel_push (for red_worker) 2011-02-07 19:22:44 +02:00
Alon Levy
57b719b991 server/red_channel: two 80 column fixes 2011-02-07 19:22:44 +02:00
Alon Levy
33bede823a server/red_channel: add public red_channel_default_peer_on_error
for later use in red_worker
2011-02-07 19:22:44 +02:00
Alon Levy
c322873cf0 server/red_channel: add red_channel_pipe_add_after (from red_worker) 2011-02-07 19:22:44 +02:00
Alon Levy
23f37df548 server/red_channel: make client ack window configurable
from red_worker
2011-02-07 19:22:44 +02:00
Alon Levy
0512726b68 server/red_channel (tunnel): change sig of red_channel_handle_message
for later usage with red_worker
2011-02-07 19:22:44 +02:00
Alon Levy
26dda37c27 server/red_channel: make MAX_SEND_VEC 100
MAX_SEND_VEC was 100 for DisplayChannel's RedChannel implementation which is being replaced
with RedChannel in red_channel. So changing from 50 to 100 in red_channel
(make this configurble?) - effectively increased memory usage by:
(100-50)*sizeof(iovec)*(num_of_channels-2) ==(arch 64bit) 50*16*6 ~ 5k
Not terrible.
2011-02-07 19:22:44 +02:00
Alon Levy
b4c3b8a586 server/red_channel: reflect SpiceDataHeader fields in handle_parsed_proc 2011-02-07 19:22:44 +02:00
Alon Levy
194a6be5f7 server/red_channel: add red_channel_pipe_add_push 2011-02-07 19:22:44 +02:00
Alon Levy
7dfd7a0c77 server/red_channel: add hold_item (from red_worker)
hold_item called on init_send_data, matching release.
This is not the behavior of red_worker - we ref++ (==hold_item) when
sending the item, and --refs when releasing it, instead of only holding
if the send is blocked.

Note 1: Naming: hold_pipe_item is the proc name, the variable is called
hold_item, this is similar to release_item/release_pipe_item naming.

Note 2: All channels have empty implementation, we later use this when
red_worker get's RedChannelized.
2011-02-07 19:21:21 +02:00
Alon Levy
e571b5ebbb server/red_channel: add out_bytes_counter (unused) 2011-02-07 19:06:52 +02:00
Alon Levy
31db6ef8c2 server/red_worker: fix used but uninitialized warning (gcc 4.6.0) 2011-02-07 15:10:36 +02:00
Alon Levy
46c70521d5 client/server: warning fixes (gcc 4.6.0)
gcc 4.6.0 added "[-Werror=unused-but-set-variable]", this and the next
few fixes tend to that. Mostly harmless.
2011-01-25 17:22:48 +02:00
Alon Levy
d3b22d86f0 client/server: add missing USE_TUNNEL
disable some code that only makes sense when USE_TUNNEL is defined
in client and server channel security level setting.
2011-01-25 17:16:27 +02:00
Alon Levy
5a2ef3b21c client/server: add missing smartchannel channel security handling
The name to channel id mapping for the smartcard channel is missing,
add it in client and server.
2011-01-25 17:16:18 +02:00
Hans de Goede
c29e4f9dd8 Update license header for server/red_parse_qxl.c
This one mistakenly had a GPL header rather then an LGPL header.
2011-01-21 15:37:04 +01:00
Alon Levy
f16c2fccdd server/red_channel: fix segfault on red_channel_destroy if peer already removed 2011-01-16 11:59:08 +02:00
Alon Levy
2809d84724 server/inputs_channel: use outgoing marshaller in red_channel/RedChannel 2011-01-16 11:59:06 +02:00
Alon Levy
8fabff2a1e server/main_channel: use red_channel (most code is pipe send/marshall separation) 2011-01-15 20:54:48 +02:00
Alon Levy
444b322cab server/red_channel: no need for extra loop 2011-01-15 20:54:48 +02:00
Alon Levy
90c93eb3c1 server/red_channel: go marshaller for outgoing (copied from red_worker) 2011-01-13 06:56:54 +02:00
Alon Levy
e7e667f81d server/reds: don't remove agent if it's not connected 2011-01-13 06:56:54 +02:00
Alon Levy
26cd666be5 server/reds: protect reds_update_mouse_mode when main_channel is disconnected 2011-01-13 06:56:54 +02:00
Alon Levy
42522e0db9 server/reds: don't call close on NULL channel on atexit callback 2011-01-13 06:56:54 +02:00
Alon Levy
cd6c57e337 server/reds: fix possible segfault when accessing vdagent from reds_update_mouse_mode after vdagent set to NULL 2011-01-13 06:56:53 +02:00
Alon Levy
cdfa261dbb server/reds: s/reds_push_migrate_data_item/reds_marshall_migrate_data_item/ 2011-01-13 06:56:53 +02:00
Alon Levy
685f82a48e server: split main_channel from reds 2011-01-13 06:56:51 +02:00
Alon Levy
293f5f0df8 server/tests: split test_display_no_ssl to test_display_base, add streaming test 2011-01-10 14:11:37 +02:00
Alon Levy
2c16ef8f26 server/tests/test_display_no_ssl: add update_area, COPY_BITS to tested functions, make a queue of QXLCommandExt waiting (cursor still with production at get_command) 2011-01-10 14:11:37 +02:00
Alon Levy
92e4ab6d68 server/tests/test_display_no_ssl: add surface create/destroy test (commented out), and square mode (default) 2011-01-10 14:11:37 +02:00
Alon Levy
2124818788 server/tests: fix timer reset to allow setting next call during callback 2011-01-10 14:11:37 +02:00
Alon Levy
c1846506de server/tests/test_display_no_ssl: change color every circle 2011-01-10 14:11:37 +02:00
Alon Levy
618d13d4d1 server/tests/test_display_no_ssl: restart notify timer 2011-01-10 14:11:37 +02:00
Alon Levy
0707feca43 server/tests: basic_event_loop: reset timer after firing it 2011-01-10 14:11:37 +02:00
Alon Levy
9cdeac5da5 server/tests/test_display_no_ssl: disable cursor test until it works correctly 2011-01-10 14:11:22 +02:00
Alon Levy
4dcacefb06 server/test/test_display_no_ssl: add beginning of basic cursor item test. doesn't actually show anything on client. also, leaks. 2011-01-10 14:10:44 +02:00
Alon Levy
e62f4b6fc7 server/tests/test_display_no_ssl: make window 320x320, two colored updates, one in notify batch 2011-01-10 14:10:38 +02:00
Alon Levy
0438742dcc server/red_worker: use 1, not 4 when lz_encoding a top down image 2011-01-07 17:47:33 +02:00
Hans de Goede
c86fa96924 server: Update SPICE_SERVER_VERSION 2010-12-17 14:15:47 +01:00
Hans de Goede
926ee7a361 Makefiles: fix server/tests/test_util.h not being included in make dist 2010-12-17 14:14:39 +01:00
Hans de Goede
a96cea646a server: Update SPICE_SERVER_VERSION 2010-12-17 13:52:17 +01:00
Gerd Hoffmann
7bbc2ba090 move chardevs out of experimental
While we are at it:  There is no reason for chardev
support to stay in the experimental area, so move it out.
qemu should not need the "spice-experimental.h" file.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2010-12-16 09:16:10 +01:00
Gerd Hoffmann
6acb817071 move switch-host migration out of experimental
seamless stays in the experimental area.
comments updates too.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2010-12-16 09:16:10 +01:00
Gerd Hoffmann
4b1ea4e102 client migration: switch host
Implement server-side support for switch-host client migration.  Client
side support is present already in the tree.

Setting the migration information is done using the existing
spice_server_migrate_info() function.  A new
spice_server_migrate_switch() function has been added which triggers
sending out the switch-host message.

Seamless migration functions are left there for now.
spice_server_migrate_start() has been chamnged to just fail
unconditionally though as seamless migration is broken anyway.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2010-12-16 09:16:10 +01:00
Alon Levy
5d2aa8084e server/red_worker: fix worker->drawable_count
drawable_count was becoming negative. It tracks the number of
items in the worker->current_list ring. It was decremented correctly,
but incremented only in several cases. The cases it wasn't incremented
where:
 red_current_add_equal found an equivalent drawable
by moving the increment to where the item is added to current_list, in
__current_add_drawable, the accounting remains correct.

This has no affect other then correct accounting, as drawable_count isn't
used for anything.
2010-12-15 14:43:45 +02:00
Gerd Hoffmann
aafd8eea74 server: improve error handling
We should pass up errors instead of aborting.  Do that at least
for bind() failures which actually happen in real live due to the
tcp port being busy.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2010-12-09 14:50:36 +01:00
Alon Levy
8c6f94a679 server/tests: fix for AM_LDFLAGS introduction 2010-12-08 18:43:23 +02:00
Alon Levy
450278a299 server/tests: Makefile.am: use AM_LDFLAGS instead of LDFLAGS 2010-12-07 21:33:26 +02:00
Alon Levy
96da0a4819 server/inputs: return NULL on alloc_buf request for too large message 2010-12-07 21:32:34 +02:00
Alon Levy
380b5e9dd7 server/red_channel: error channel if alloc_msg_buf fails (returns NULL) 2010-12-07 21:32:34 +02:00
Alon Levy
ec0b90db7f server/inputs_channel: better protection from channel disconnection on keyboard modifiers callback 2010-12-07 21:32:34 +02:00
Alon Levy
1540a64030 server/red_channel: add red_channel_is_connected 2010-12-07 21:32:34 +02:00
Alon Levy
045be6b03a server/inputs_channel: remove unused declaration in inputs_channel.h 2010-12-07 21:32:34 +02:00
Alon Levy
6dfff7b0a5 server/inputs_channel: s/inputs_channel/g_inputs_channel/ 2010-12-07 21:32:34 +02:00
Alon Levy
86a4a0780d server/inputs_channel: initialize inputs_channel to NULL 2010-12-07 21:32:33 +02:00
Alon Levy
5e13eea73c server: reds/inputs_channel: move some structs to inputs_channel 2010-12-07 21:32:33 +02:00
Alon Levy
e662e6a59f server: inputs_channel: use red_channel 2010-12-07 21:32:33 +02:00
Alon Levy
23db8c093c server: red_channel: add optional parser and separate incoming/outgoing error handlers for later inputs/main channel usage 2010-12-07 21:32:33 +02:00
Alon Levy
5ada644f30 server: inputs_channel: s/inputs_state/inputs_channel/ 2010-12-07 21:32:33 +02:00
Alon Levy
347e32177c server: introduce inputs_channel, split from reds.c 2010-12-07 21:32:33 +02:00
Alon Levy
26c40c4196 server/reds: fix typo 2010-12-07 21:32:33 +02:00
Alon Levy
7e0a1dfa75 smartcard: configure option --enable-smartcard 2010-12-07 13:31:44 +02:00
Alon Levy
d99ec6c35b smartcard: server side (not enabled yet) 2010-12-07 13:31:42 +02:00
Alon Levy
7461ee17cf server: add spice_server_char_device_remove_interface 2010-12-07 13:31:28 +02:00
Alon Levy
5220e0a706 server: print subtype when adding CHAR_DEVICE interfaces 2010-12-06 18:09:15 +02:00
Alon Levy
0ac9ca51f4 server: add static to spice_server_char_device_add_interface 2010-12-06 18:09:15 +02:00
Alon Levy
b2f1b80a63 server: fix print text on vdagent interface addition 2010-12-06 18:09:14 +02:00
Alon Levy
673ade8a6f server: add char_device.h header, use in reds.c 2010-12-06 18:09:14 +02:00
Alon Levy
14f2b0f52a spice-experimental.h: add multiple include protection 2010-12-06 18:09:14 +02:00
Alon Levy
dc8946f9f4 server/vdi_port (virtserial): always read data
We erronously ignored data from guest on the serial channel if no client is
connected. This leads to an assert when the guest writes a second time, since
there is still data unconsumed by us (the host).
Fix by reading data anyway, and discarding it after parsing (and reading) whole
messages from the guest.
Net affect is that any messages the agent sends while no client is connected
get discarded, but only full messages are discarded.
This fixes an abort if booting a winxp guest with vdagent without a connected
client.
2010-12-06 13:20:14 +02:00
Alon Levy
3eac546309 server: add char_device.h to Makefile.am for make dist 2010-12-02 17:17:11 +02:00
Alon Levy
9002d3f005 server/tests: add test_display_no_ssl
updates taken from spice vga mode updates, i.e. non cacheable, glz compressed
(depends on whatever settings you apply to the server) opaque draw operations.
 + completed the SpiceCoreInterface implementation (timers)

v1->v2:
 removed test_util.c (Hans)
 replaced mallocz with calloc (Hans)
2010-11-30 21:03:14 +02:00
Alon Levy
74b39efd6e server/tests: Makefile.am fixes
* don't install tests on make install
 * don't forget anything for make dist tarball
2010-11-30 21:01:06 +02:00
Alon Levy
eb79d1e568 add .gitignore for tests 2010-11-30 20:54:49 +02:00
Alon Levy
b6e530f5f3 server/reds: zap unsetting of QEMU_AUDIO_DRV 2010-11-08 17:53:17 +02:00
Alon Levy
6f9ab51509 gitignore: add generated_*, vim temps, pyc 2010-11-08 16:06:55 +02:00
Alon Levy
bd30095c75 reds: remove needless buffer in InputsState 2010-11-08 16:06:49 +02:00
Alon Levy
0ede43e893 server: tests: add basic tests with working do nothing server 2010-11-08 16:04:27 +02:00
Hans de Goede
023d9c0d91 Release 0.6.3 2010-10-18 14:52:43 +02:00
Hans de Goede
bbc079955a Bump version to 0.6.2 2010-10-18 11:22:19 +02:00
Hans de Goede
21f586762f server: remove useless agent send_tokens
We are keeping track of tokens for sending agent data to the client, but
the client send an initial value of ~0, and never gives us new send tokens
so this is all rather useless -> remove it.

Note that it is kept in the migration data struct for compatibility reasons.
2010-10-16 15:46:50 +02:00
Hans de Goede
0b2336cd9c Call read_from_vdi_port() from vdi_read_buf_release()
read_from_vdi_port(), called from vdagent_char_device_wakeup() may
fail to consume all data because no buffers are available in the
read_bufs ring. When this happens we would fail to ever read more data
from the agent on the guest as the port is throttled and stays throttled
until we've consumed all data from the current buffer.

This patch re-enables the call to read_from_vdi_port() from
vdi_read_buf_release(), so that we will try the read again when space
becomes available in the read_bufs ring.

Together with another nasty hack in the linux guest virtio_console
driver, where it waits for a write to be acked by the host before
continuing with the next one, this can lead to a linux guest
getting stuck / hang (until the write is read by the spice-server
which never happens becaus of the above issues).

Note that even with this patch, the guest will still gets stuck due to
a bug in watch_update_mask in spice-core in qemu, which causes writing
to the client to never resume once it blocked. A patch for this has been
submitted to qemu.
2010-10-15 10:22:37 +02:00
Hans de Goede
a52324525d server: always call read_from_vdi_port() in a while loop
read_from_vdi_port() MUST always be called in a while loop until it returns 0.

This is needed because it can cause new data available events and its
recursion protection causes those to get lost. Calling it until it returns 0
ensures that all data has been consumed.

Example scenario where we can fail to read the available data otherwise:
- server/reds.c: vdagent_char_device_wakeup get called
  by hw/spice-vmc.c because data has arrived from the guest,
- hw/spice-vmc.c: vmc_read get calls
- If the vmc_read call depletes the current buffer it calls
  virtio_serial_throttle_port(&svc->port, false)
- This causes vmc_have_data to get called, which if in the
  mean time another buffer has arrived causes
  vdagent_char_device_wakeup to gets called again
  (so recursively)
- vdagent_char_device_wakeup is protected against recursive
  calling and ignores the second call (a nasty hack)
- if no other data arrives, the arrived data will not get read
2010-10-15 10:22:37 +02:00
Hans de Goede
d37adccfa7 Don't crash when a client disconnects while there were pending writes 2010-10-15 10:22:37 +02:00
Gerd Hoffmann
97f33fa86a server: add channel notifications.
This patch adds a channel event callback to the spice core interface.
This new callback will be called for three events:

  (1) A new connection has been established.
  (2) The channel is ready (i.e. authentication is done,
      link message verification passed all tests, channel
      is ready to use).
  (3) Channel was disconnected.

Qemu will use this to send notifications to the management app.
2010-10-12 11:11:26 +02:00
Alexander Larsson
587584a4e4 server: Handle self_image in localize_bitmap
When drawing a drawable with a NULL src bitmap that means we should
be using the previously generated self_bitmap. Not doing this causes
a segfault due to accessing the NULL.
2010-09-21 20:14:50 +02:00
Alexander Larsson
485ba90b03 server: Handle NULL image in red_update_streamable
A NULL src bitmap means self_bitmap, which is not a stream, so abort.
2010-09-21 20:12:51 +02:00
Alexander Larsson
763e05ee30 server: Use the right image size for self_bitmap
The self_bitmap is the size of self_bitmap_area, not the bbox.
This is especially important since we later copy the self_bitmap_area
into the new bitmap, and if that is larger than bbox then we will
overwrite random memory.
2010-09-21 20:11:18 +02:00
Alexander Larsson
5322d43146 server: Don't leak QUIC image chunks
red_put_image() needs to free the chunks for QUIC images, as we
allocate these when creating the image.
2010-09-21 20:09:59 +02:00
Alexander Larsson
a5ce2c0edb server: Ensure we flush the release pipe after an oom
We really need to flush the ring to ensure that we push something on the
release ring. If we don't do this and the ring is not pushed for other
reasons we will timeout in the guest driver waiting for the ring.
2010-09-20 13:30:01 +02:00