summaryrefslogtreecommitdiffstats
path: root/server
Commit message (Collapse)AuthorAgeFilesLines
* server: fix segfault on client disconnectAlon Levy2012-02-261-2/+1
| | | | | ..as a result of missing initialization of newly introduced pre_disconnect in main channel.
* Enabling cursor in server/testsFabiano Fidêncio2012-02-261-31/+48
| | | | | | Now, cursor is being shown in all tests as a white rectangle and is running in the screen doing a diagonal movement. It's a very simple way to test cursor commands and is sufficient for our tests.
* Use standard IOV_MAX definition where applicableDan McGee2012-02-214-9/+15
| | | | | | | | This is provided by <limits.h> on all platforms as long as _XOPEN_SOURCE is defined. On Linux, this is 1024, on Solaris, this is 16, and on any other platform, we now respect the value supported by the OS. Signed-off-by: Dan McGee <dpmcgee@gmail.com>
* Respect IOV_MAX if definedDan McGee2012-02-211-1/+26
| | | | | | | | | | | Solaris has a pitiful maximum writev vector size of only 16, so the ping request at initial startup destroyed this call and broke things immediately. Reimplement stream_writev_cb() to respect IOV_MAX and break the writev() calls into chunks as necessary. Care was taken to return the correct values as necessary so the EAGAIN handling logic can determine where to resume the writev call the next time around. Signed-off-by: Dan McGee <dpmcgee@gmail.com>
* red_worker: reimplement event loop using poll()Dan McGee2012-02-214-42/+69
| | | | | | | | | | | | | | | | | | This removes the epoll dependency we had in red_worker, which was the last Linux-specific call we were using in the entire Spice server. Given we never have more than 10 file descriptors involved, there is little performance gain had here by using epoll() over poll(). The biggest change is introduction of a new pre_disconnect callback; this is because poll, unlike epoll, cannot automatically remove file descriptors as they are closed from the pollfd set. This cannot be done in the existing on_disconnect callback; that is too late as the stream has already been closed and the file descriptor lost. The on_disconnect callback can not be moved before the close and other operations easily because of some behavior that relies on client_num being set to a certain value. Signed-off-by: Dan McGee <dpmcgee@gmail.com>
* Use memcpy call in red_channel_createDan McGee2012-02-211-8/+1
| | | | | | | | | Rather than assign the callbacks one-by-one, we can just memcpy the struct into the one we have allocated in our RedChannel object, which is much more efficient, not to mention future-proof when more callbacks are added. Signed-off-by: Dan McGee <dpmcgee@gmail.com>
* Cleanup definitions of disconnect methodsDan McGee2012-02-212-23/+5
| | | | | | | | | We had multiple stub methods that simply called other disconnect methods, making my head hurt with the indirection. Call the right methods at the right time and rip out the stub methods; if they are truely needed later they can be added again. Signed-off-by: Dan McGee <dpmcgee@gmail.com>
* red_worker: rename epoll_timeout to event_timeoutDan McGee2012-02-211-10/+11
| | | | | | | | | With future patches in mind that will allow for some other non-Linux-specific event polling sytem to be used, rename this to a more generic name. All of the select/poll/epoll/kqueue family of calls are related to evented I/O, so 'event_' makes sense in this case. Signed-off-by: Dan McGee <dpmcgee@gmail.com>
* Add configure-time check for -Wl, --version-script optionDan McGee2012-02-211-4/+8
| | | | | | | | | This is supported by the GNU linker, but not the Solaris linker, which is used as the default on that platform even when compiling with GCC. Omit passing the option to the linker on platforms that do not support it. Signed-off-by: Dan McGee <dpmcgee@gmail.com>
* server/spicevmc: Don't destroy the rcc twiceHans de Goede2012-02-203-3/+6
| | | | | | | | | | | | | | | | | | | | | | | spicevmc calls red_channel_client_destroy() on the rcc when it disconnects since we don't want to delay the destroy until the session gets closed as spicevmc channels can be opened, closed and opened again during a single session. This causes red_channel_client_destroy() to get called twice, triggering an assert, when a connected channel gets destroyed. This was fixed with commit ffc4de01e6f9ea0676f17b10e45a137d7e15d6ac for the case where: a spicevmc channel was open on client disconnected, and the main channel disconnect gets handled first. But the channel can also be destroyed when the chardev gets unregistered with the spice-server. This path still triggers the assert. This patch fixes this by adding a destroying flag to the rcc struct, and also moves the previous fix over to the same, more clean, method of detecting this special case. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* server/tests/basic_event_loop: print something on channel_eventAlon Levy2012-02-151-1/+2
|
* server, separate SpiceChannelEventInfo from RedStreamAlon Levy2012-02-153-22/+30
| | | | | | | | | | fixes rhbz 790749 use after free of SpiceChannelEventInfo. The lifetime of the SpiceChannelEventInfo was that of RedsStream, but it is used by main_dispatcher_handle_channel_event after the RedsStream is freed for the cursor and display channels. Making SCEI allocation be at RedsStream allocation, and deallocation after the DESTROY event is processed by core->channel_event, fixes use after free.
* Remove all usages of bzero()Dan McGee2012-02-143-6/+6
| | | | | | As recommended by modern C practice, we should just be using memset(). Signed-off-by: Dan McGee <dpmcgee@gmail.com>
* Remove extra '\n' from red_printf() callsDan McGee2012-02-143-8/+8
| | | | | | | red_printf() takes care of adding a newline to all messages; remove the extra newline from all messages and macros that were doubling them up. Signed-off-by: Dan McGee <dpmcgee@gmail.com>
* server/tests: use getopt_longAlon Levy2012-02-143-22/+32
|
* Adding image to be used as "correct" in regression testsFabiano Fidêncio2012-02-141-0/+0
|
* Adding support to automated testsFabiano Fidêncio2012-02-146-9/+156
| | | | | | | As suggested by Alon, a simple automated test to try to find regressions in Spice code. To use this, compile Spice with --enable-automated-tests and run test_display_streaming passing --automated-tests as parameter.
* Add casts for compatibility purposesDan McGee2012-02-141-1/+1
| | | | | | | | | | | Some non-Linux platforms return a (caddr_t *) result for the return value of mmap(), which is very unfortunate. Add a (void *) cast to explicitly avoid the warning when compiling with -Werror. For the IO vector related stuff, signed vs. unsigned comes into play so adding a (void *) cast here is technically correct for all platforms. Signed-off-by: Dan McGee <dpmcgee@gmail.com>
* server: support IPV6 addresses in channel events sent to qemuYonit Halperin2012-02-122-4/+23
| | | | | | | | | RHBZ #788444 CC: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Yonit Halperin <yhalperi@redhat.com>
* Release 0.10.1Hans de Goede2012-01-231-1/+1
|
* server/red_channel: red_peer_handle_incoming: comment on null checkAlon Levy2012-01-231-0/+2
| | | | Signed-off-by: Alon Levy <alevy@redhat.com>
* server/tests/test_empty_success: fix warning on bzeroAlon Levy2012-01-231-0/+2
| | | | Signed-off-by: Alon Levy <alevy@redhat.com>
* server: don't complain if setsockopt(SO_PRIORITY) call failsNahum Shalman2012-01-231-1/+7
| | | | | | | | | | dc7855967f4e did this for the TCP_NODELAY and IP_TOS calls; we should do it for priority as well if necessary. We also #ifdef the setting of the low-level socket priority based on whether we have a definition of SO_PRIORITY available. This option is not available on Illumos/Solaris platforms; however, since we set IP_TOS anyway it is not a big deal to omit it here.
* server/inputs_channel: don't set O_ASYNC option on socketDan McGee2012-01-231-7/+2
| | | | | | | | output to send a SIGIO signal to the running program. However, we don't handle this signal anywhere in the code, so setting the option is unnecessary. Signed-off-by: Dan McGee <dpmcgee@gmail.com>
* Update .gitignore with a few more generated filesDan McGee2012-01-231-0/+2
| | | | Signed-off-by: Dan McGee <dpmcgee@gmail.com>
* Fix git commit hook errors in red_workerDan McGee2012-01-231-32/+56
| | | | | | | This ensures all line lengths are down below 100 characters as well as removing some trailing spaces. Signed-off-by: Dan McGee <dpmcgee@gmail.com>
* Fix line length errors in main_channelDan McGee2012-01-231-11/+12
| | | | | | | | | | | | | These are all existing errors; fix them so they don't block future commits in this file unnecessarily. error (1): length @ server/main_channel.c +369 error (2): length @ server/main_channel.c +444 error (3): length @ server/main_channel.c +764 error (4): length @ server/main_channel.c +932 error (5): length @ server/main_channel.c +1044 Signed-off-by: Dan McGee <dpmcgee@gmail.com>
* server/red_channel: avoid segfault if stream == NULLAlon Levy2012-01-221-0/+4
|
* server: Don't complain if setsockopt NODELAY fails on unix socketsHans de Goede2012-01-185-7/+19
| | | | | | | | | | | | With Daniel P. Berrange's patches to allow use of pre-supplied fd's as channels, we can no longer be sure that our connections are TCP sockets, so it makes no sense to complain if a TCP/IP specific setsockopt fails with an errno of ENOTSUP. Note that this extends Daniel's commit 492ddb5d1d595e2d12208f4602b18e4432f4e6b4 which already added the same check to server/inputs_channel.c Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* Remove trailing whitespace from end of linesDaniel P. Berrange2012-01-136-24/+24
|
* Add missing includes of config.hDaniel P. Berrange2012-01-1310-0/+10
| | | | Not all files were including config.h
* Remove bogus include of strings.hDaniel P. Berrange2012-01-134-4/+0
| | | | The tests include strings.h but don't need any of its functions
* Remove trailing blank linesDaniel P. Berrange2012-01-1330-30/+0
| | | | Remove any blank lines at the end of all source files
* Remove 'the the' typosDaniel P. Berrange2012-01-132-2/+2
|
* Remove unused assert.h includeDaniel P. Berrange2012-01-131-1/+0
| | | | The assert.h include was never used in any code
* Rewrite code to avoid triggering warning about casting param to free()Daniel P. Berrange2012-01-131-1/+2
| | | | | | | | Since free() takes a void* parameters do not need to be cast. The existing code here is actally fine, but it trips up the syntax-check rule, so tweak it to an equivalent construct which passes the syntax check
* Remove useless if() before free()Daniel P. Berrange2012-01-134-11/+4
| | | | | The free() function allows NULL to be passed in, so any code which puts a if() before free() is wasting time
* Death to all TABsDaniel P. Berrange2012-01-133-3/+3
| | | | | | Source files should all use spaces instead of tabs for indentation. Update the few files not already in compliance
* smartcard handling: Fix compilation when ASSERT-s are turned onHans de Goede2012-01-131-1/+1
| | | | Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* server: add support for SPICE_COMMON_CAP_MINI_HEADERYonit Halperin2012-01-124-127/+378
| | | | | | | | | Support for a header without a serial and without sub list. red_channel: Support the two types of headers. Keep a consistent consecutive messages serial. red_worker: use urgent marshaller instead of sub list. snd_worker: Sound channels need special support since they still don't use red_channel for sending & receiving.
* server: Limit the access to SpiceDataHeader of messages - only via red_channel.Yonit Halperin2012-01-128-71/+99
|
* server/red_worker: pass remote caps to display/cursor red_channel_client'sYonit Halperin2012-01-123-12/+68
|
* server/red_channel: introduce urgent marshallerYonit Halperin2012-01-122-6/+85
| | | | | | | | | | When red_channel::red_channel_client_begin_send_message is called, the message that is pending in the urgent marshaller will be sent before the one in the main channel. The urgent marshaller should be used if in the middle of marshalling one message, you find out you need to send another message before. This functionality is equivalent to the sub_list messages. It will replace them in the following patches, when sub_list is removed from Spice data header.
* Do not assume that SPICE is using a TCP socketDaniel P. Berrange2012-01-091-2/+4
| | | | | | | | | | If setting the TCP_NODELAY socket option fails with ENOTSUP, then don't treat this is a fatal error. SPICE is likely just running over a UNIX socket instead. * server/inputs_channel.c: Ignore TCP_NODELAY socket opt fails Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
* Allow auth to be skipped when attaching to pre-accepted clientsDaniel P. Berrange2012-01-092-10/+15
| | | | | | | | | | | When an applications passes in a pre-accepted socket for a client, they may well have already performed suitable authentication out of band. They should thus have the option to request that any spice authentication is skipped. * server/reds.c, spice.h: Add flag for skipping auth Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
* Add APIs for injecting a client connection socketDaniel P. Berrange2012-01-093-4/+33
| | | | | | | | | | | Allow applications to pass a pre-accepted client socket file descriptor in. The new APIs are spice_server_add_ssl_client and spice_server_add_client * server/reds.c: Implement new APIs * server/spice.h: Define new APIs Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
* Move SSL setup out of reds_accept_ssl_connectionDaniel P. Berrange2012-01-091-10/+21
| | | | | | | | | | | To allow setup of an SSL client, from a passed in client socket, move all the SSL client initialization code out of reds_accept_ssl_connection and into a new method called reds_init_client_ssl_connection * server/reds.c: Introduce reds_init_client_ssl_connection Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
* Rename __reds_accept_connection into reds_init_client_connectionDaniel P. Berrange2012-01-091-13/+18
| | | | | | | | | | | | Remove the accept() call from __reds_accept_connection and rename it to reds_init_client_connection. The caller is now responsible for accepting the new socket. The method reds_init_client_connection merely initializes it for usage. * server/reds.c: Add reds_init_client_connection Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
* Merge reds_accept_connection into reds_acceptDaniel P. Berrange2012-01-091-18/+8
| | | | | | | | | | Neither reds_accept_connection or reds_accept are very long, so the split is pointless & increases code size for no gain. Merge them together to reduce code size * server/reds.c: Merge reds_accept_connection into reds_accept Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
* spicevmc: Set sockopt nodelay for usbredir channelsHans de Goede2011-12-221-0/+15
| | | | | | We want as little latency as possible with usb channels. Signed-off-by: Hans de goede <hdegoede@redhat.com>