aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver
Commit message (Collapse)AuthorAgeFilesLines
* dix/os: Merge priority computation into SmartScheduleClientKeith Packard2017-03-212-48/+18
| | | | | | | | | | | | | | | | | | | Backported from X.org: commit 7762a602c1dfdd8cfcf2b8c2281cf4d683d05216 Author: Keith Packard <keithp@keithp.com> Date: Thu May 19 15:05:55 2016 -0700 dix/os: Merge priority computation into SmartScheduleClient Instead of having scheduling done in two places (one in WaitForSomething, and the other in SmartScheduleClient), just stick all of the scheduling in SmartScheduleClient. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Backported-to-NX-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
* os: Fix a memory leakPauli Nieminen2017-03-211-4/+6
| | | | | | | | | | | | | | | | Backported from X.org (+ coding style fixes in other free() calls): commit 617b7d22115ccaaaa7ec69c99885054d33a3bc37 Author: Pauli Nieminen <ext-pauli.nieminen@nokia.com> Date: Thu Dec 30 19:19:42 2010 +0200 os: Fix a memory leak Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Daniel Stone <daniel@fooishbar.org> Backported-to-NX-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
* Rework local client id finding code to be more uniformAlan Coopersmith2017-03-214-69/+160
| | | | | | | | | | | | | | | | | | | | | Backport of X.org commit: commit 2d93e69690d2c5d4a89a795ede6423796528e5df Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Sep 27 16:47:06 2007 -0700 Rework local client id finding code to be more uniform Backported-to-NX-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Note: This commit also switches client_uid_string's size from 32 to 64 chars, as found in this X.org commit (spotted by Mihai Moldovan during code review): commit a7b944f0d96c3e0e15e75378a04def1ac96089fb Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Nov 1 16:17:49 2006 -0800 If getpeerucred() is available, include pid & zoneid in audit messages too
* AUDIT messages should contain uid for local accesses (X.org bug #1997)Alan Coopersmith2017-03-211-5/+16
| | | | | | | | | | commit fbfb35189ef6666707097704b43e052cb2f919ae Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Nov 1 15:11:48 2006 -0800 Bug #1997: AUDIT messages should contain uid for local accesses <https://bugs.freedesktop.org/show_bug.cgi?id=1997>
* LBX clean-up: Drop forgotten passage in Xserver/os/connection.c.Mike Gabriel2017-03-211-4/+0
|
* Xserver/os/: Drop not-used-anymore MNX_TCPCONN macro.Mike Gabriel2017-03-212-10/+9
|
* Xserver/os/Imakefile: Introduce the NULL variable and line-wrap various ↵Mike Gabriel2017-03-211-32/+91
| | | | variable definitions for the sake of better readability.
* Don't crash on unconfigured interfaces. (X.org bug #5218, Andrei Barbu)Adam Jackson2017-03-201-0/+2
| | | | | | | | | | commit 9d62d1e6903ccc095f784279a699b3f40a8f0cf8 Author: Adam Jackson <ajax@nwnk.net> Date: Sat Jan 7 00:45:17 2006 +0000 Bug #5218: Don't crash on unconfigured interfaces. (Andrei Barbu) Backported-to-NX-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
* Set padding bytes to 0 in WriteToClientAlan Coopersmith2017-03-201-1/+5
| | | | | | | | | | | | | | | | | commit bed610fcae41ddfe21fa9acde599b17d1d15f5d1 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Jul 9 19:12:44 2012 -0700 Set padding bytes to 0 in WriteToClient Clear them out when needed instead of leaving whatever values were present in previously sent messages. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Keith Packard <keithp@keithp.com> Tested-by: Daniel Stone <daniel@fooishbar.org> Backported-to-NX-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
* os: Return BadLength instead of disconnecting BigReq clients (#4565)Aaron Plattner2017-03-202-3/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Backported from X.org: commit 67c66606c760c263d7a4c2d1bba43ed6225a4e7c Author: Robert Morell <rmorell@nvidia.com> Date: Thu May 9 13:09:02 2013 -0700 os: Reset input buffer's 'ignoreBytes' field If a client sends a request larger than maxBigRequestSize, the server is supposed to ignore it. Before commit cf88363d, the server would simply disconnect the client. After that commit, it attempts to gracefully ignore the request by remembering how long the client specified the request to be, and ignoring that many bytes. However, if a client sends a BigReq header with a large size and disconnects before actually sending the rest of the specified request, the server will reuse the ConnectionInput buffer without resetting the ignoreBytes field. This makes the server ignore new X clients' requests. This fixes that behavior by resetting the ignoreBytes field when putting the ConnectionInput buffer back on the FreeInputs list. Signed-off-by: Robert Morell <rmorell@nvidia.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit c80c41767eb101e9dbd8393d8cca7764b4e248a4 Author: Aaron Plattner <aplattner@nvidia.com> Date: Mon Oct 25 22:01:32 2010 -0700 os: Fix BigReq ignoring when another request is pending Commit cf88363db0ebb42df7cc286b85d30d7898aea840 fixed the handling of BigReq requests that are way too large and handles the case where the read() syscall returns a short read. However, it neglected to handle the case where it returns a long read, which happens when the client has another request in the queue after the bogus large one. Handle the long read case by subtracting the smaller of 'needed' and 'gotnow' from oci->ignoreBytes. If needed < gotnow, simply subtract the two, leaving gotnow equal to the number of extra bytes read. Since the code immediately following the (oci->ignoreBytes > 0) block tries to handle the next request, advance oci->bufptr immediately instead of setting oci->lenLastReq and letting the next call to ReadRequestFromClient do it. Fixes the XTS pChangeKeyboardMapping-3 test. CASES TESTS PASS UNSUP UNTST NOTIU WARN FIP FAIL UNRES UNIN ABORT -Xproto 122 389 367 2 19 0 0 0 1 0 0 0 +Xproto 122 389 368 2 19 0 0 0 0 0 0 0 Signed-off-by: Aaron Plattner <aplattner@nvidia.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com> commit cf88363db0ebb42df7cc286b85d30d7898aea840 Author: Aaron Plattner <aplattner@nvidia.com> Date: Fri Aug 27 10:20:29 2010 -0700 os: Return BadLength instead of disconnecting BigReq clients (#4565) If a client sends a big request that's too big (i.e. bigger than maxBigRequestSize << 2 bytes), the server just disconnects it. This makes the client receive SIGPIPE the next time it tries to send something. The X Test Suite sends requests that are too big when the test specifies the TOO_LONG test type. When the client receives SIGPIPE, XTS marks it as UNRESOLVED, which counts as a failure. Instead, remember how long the request is supposed to be and then return that size. Dispatch() checks the length and sends BadLength to the client. Then, whenever oci->ignoreBytes is nonzero, ignore the data read instead of trying to process it as a request. Signed-off-by: Aaron Plattner <aplattner@nvidia.com> Reviewed-by: Keith Packard <keithp@keithp.com> Signed-off-by: Keith Packard <keithp@keithp.com> Backported-to-NX-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
* Fix overflow of ConnectionOutput->size and ->countPeter Harris2017-03-201-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | commit 4b0d0df34f10a88c10cb23dd50087b59f5c4fece Author: Peter Harris <pharris@opentext.com> Date: Mon Nov 17 14:31:24 2014 -0500 Fix overflow of ConnectionOutput->size and ->count When (long) is larger than (int), and when realloc succeeds with sizes larger than INT_MAX, ConnectionOutput->size and ConnectionOutput->count overflow and become negative. When ConnectionOutput->count is negative, InsertIOV does not actually insert an IOV, and FlushClient goes into an infinite loop of writev(fd, iov, 0) [an empty list]. Avoid this situation by killing the client when it has more than INT_MAX unread bytes of data. Signed-off-by: Peter Harris <pharris@opentext.com> Reviewed-by: Keith Packard <keithp@keithp.com> Signed-off-by: Keith Packard <keithp@keithp.com> Backported-to-NX-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
* dix: Pass ClientPtr to FlushCallbackMichel Dänzer2017-03-202-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Backported X.org commits: commit b380f3ac51f40ffefcde7d3db5c4c149f274246d Author: Michel Dänzer <michel.daenzer@amd.com> Date: Tue Aug 2 17:53:01 2016 +0900 dix: Pass ClientPtr to FlushCallback This change has two effects: 1. Only calls FlushCallbacks when we're actually flushing data to a client. The unnecessary FlushCallback calls could cause significant performance degradation with compositing, which is significantly reduced even without any driver changes. 2. By passing the ClientPtr to FlushCallbacks, drivers can completely eliminate unnecessary flushing of GPU commands by keeping track of whether we're flushing any XDamageNotify events to the client for which the corresponding rendering commands haven't been flushed to the GPU yet. Reviewed-by: Adam Jackson <ajax@redha.com> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> commit c65f610e12f9df168d5639534ed3c2bd40afffc8 Author: Kristian Høgsberg <krh@bitplanet.net> Date: Thu Jul 29 18:52:35 2010 -0400 Always call the flush callback chain when we flush client buffers We were missing the callback in a couple of places. Drivers may use the flush callback to submit batched up rendering before events (for example, damage events) are sent out, to ensure that the rendering has been queued when the client receives the event. Signed-off-by: Kristian Høgsberg <krh@bitplanet.net> Reviewed-by: Keith Packard <keithp@keithp.com> Backported-to-NX-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
* Xserver/os/io.c: Bail out early from FlushClient if nothing needs to be written.Keith Packard2017-03-191-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Found in X.org commit: commit d5bf6f95f31037bd49b11348b500c3c13b7e0c99 Author: Keith Packard <keithp@keithp.com> Date: Thu Oct 4 14:42:37 2012 -0700 Fix FlushClient to write extraBuf when provided (regression fix) In commit: commit 092c57ab173c8b71056f6feb3b9d04d063a46579 Author: Adam Jackson <ajax@redhat.com> Date: Fri Jun 17 14:03:01 2011 -0400 os: Hide the Connection{In,Out}put implementation details Reviewed-by: Daniel Stone <daniel@fooishbar.org> Signed-off-by: Adam Jackson <ajax@redhat.com> the check for an empty output buffer was moved from one calling location into the FlushClient implementation itself. However, this neglected the possibility that additional data, in the form of 'extraBuf' would be passed to FlushClient from other code paths. If the output buffer happened to be empty at that time, the extra data would never be written to the client. This is fixed by checking the total data to be written, which includes both pending and extra data, instead of just the pending data. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Julien Cristau <jcristau@debian.org> Backported-to-NX-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
* os: Immediately queue initial WriteToClientChris Wilson2017-03-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Backported from X.org: commit 9bf46610a9d20962854016032de4567974e87957 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 21 22:58:31 2013 +0100 os: Immediately queue initial WriteToClient If we immediately put the WriteToClient() buffer into the socket's write queue, not only do we benefit from sending the response back to client earlier, but we also avoid the overhead of copying the data into our own staging buffer and causing extra work in the next select(). The write is effectively free as typically we may only send one reply per client per select() call, so the cost of the FlushClient() is the same. shmget10: 26400 -> 110000 getimage10: 25000 -> 108000 shmget500: 3160 -> 13500 getimage500: 1000 -> 1010 The knock-on effect is that on a mostly idle composited desktop, the CPU overhead is dominated by the memmove in WriteToClient, which is in turn eliminated by this patch. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Backported-to-NX-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
* os/xdmcp: Remove dead 'restart' codeMike Gabriel2017-03-191-10/+0
| | | | | | | | | | | | | | | | | | | | | | | | Completing the below X.org commit: commit a3a40291330bad10401fe2bcdbc097ce742b026a Author: Keith Packard <keithp@keithp.com> Date: Mon Sep 21 07:16:16 2015 +0100 os/xdmcp: Remove dead 'restart' code The X server used to wait for the user to hit a key or move the mouse before restarting the session after a keepalive failure. This, presumably, was to avoid having the X server continuously spew XDMCP protocol on the network while the XDM server was dead. Switching into this state was removed from the server some time before XFree86 4.3.99.16, so the remaining bits of code have been dead for over a decade, and no-one ever noticed. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com> Backported-to-NX-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
* Keystroke.c: ignore CapsLock and NumLock most of the timeUlrich Sibiller2017-03-193-3/+32
| | | | | | CapsLock and NumLock will only be taken into account for keystrokes that explicitly require them. This is implemented for convenience and fixes ArcticaProject/nx-libs#397
* os: Initialize NotifyFds earlier in startupMike Gabriel2017-03-171-1/+5
| | | | | | | | | | | | | | | | | | | | | Backported from X.org: commit ce6546337487c052b5dd3c04d3d8d4b09d691c3d Author: Keith Packard <keithp@keithp.com> Date: Tue May 31 09:38:17 2016 -0700 os: Initialize NotifyFds earlier in startup If the server calls AbortServer during the first-time initialization (which can happen if you start the server on an already using DISPLAY), then the dbus code will shut down and call the notify fd interface. If the notify fd list hasn't been initialized, the server will crash. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Backported-to-NX-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
* os: Implement support for NotifyFd X_NOTIFY_WRITE and removal of ↵Keith Packard2017-03-175-56/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | AddEnabledDevices/RemoveEnabledDevices Backported from X.org: commit be5a513fee6cbf29ef7570e57eb0436d70fbd88c Author: Keith Packard <keithp@keithp.com> Date: Mon Dec 7 15:12:14 2015 -0800 Remove AddEnabledDevice and AddGeneralSocket APIs All uses of these interfaces should instead be using the NotifyFd API instead. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Adam Jackson <ajax@redhat.com> commit 4020aacd1fc5b9c63369f011aeb9120af9c55218 Author: Keith Packard <keithp@keithp.com> Date: Wed Nov 11 22:02:03 2015 -0800 os: Implement support for NotifyFd X_NOTIFY_WRITE This adds the ability to be notified when a file descriptor is available for writing. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com> Backported-to-NX-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
* Move the code for resetting the DPMS mode in response to input events, from ↵Fredrik Höglund2017-03-172-4/+14
| | | | | | | | | | | | | | | | | WaitForSomething to mieqProcessInputEvents. Backported from X.org: commit 3b5b7ef5c2ab1d196806f6359e0972fd78d204dd Author: Fredrik Höglund <fredrik@kde.org> Date: Wed Jan 3 21:05:35 2007 +0100 Move the code for resetting the DPMS mode in response to input events, from WaitForSomething to mieqProcessInputEvents. mieqProcessInputEvents already handles resetting the screen saver. Backported-to-NX-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
* nxagent: Use SetNotifyFd to receive events.Mike Gabriel2017-03-174-3/+12
| | | | | | | | | | | | | Inspired by X.org commit: commit 55c2e1a3aa587c58a74066724e11e30b3df267b8 Author: Keith Packard <keithp@keithp.com> Date: Mon Dec 7 15:11:33 2015 -0800 xnest: Use SetNotifyFd to receive events Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Adam Jackson <ajax@redhat.com>
* os: Add NotifyFd interfacesKeith Packard2017-03-155-0/+118
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Backported from X.org: commit 0c41b7af4ab0c8d22b88f201293f59524d1e7317 Author: Keith Packard <keithp@keithp.com> Date: Wed Nov 11 22:02:02 2015 -0800 os: Add NotifyFd interfaces This provides a callback-based interface to monitor file descriptors beyond the usual client and device interfaces. Modules within the server using file descriptors for reading and/or writing can call Bool SetNotifyFd(int fd, NotifyFdProcPtr notify_fd, int mask, void *data); mask can be any combination of X_NOTIFY_READ and X_NOTIFY_WRITE. When 'fd' becomes readable or writable, the notify_fd function will be called with the 'fd', the ready conditions and 'data' values as arguments, When the module no longer needs to monitor the fd, it will call void RemoveNotifyFd(int fd); RemoveNotifyFd may be called from the notify function. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com> Backported-to-NX-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
* Xserver/include/list.h: Add list.h from X.org (from X.org commit 63f83d1).Mike Gabriel2017-03-152-0/+495
|
* os/xdmcp: Just send XDMCP keepalive packets once every three minuteKeith Packard2017-03-151-22/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Backported from X.org: commit db1089eafc1c5371fa0030202de588d2e2b4f8e5 Author: Keith Packard <keithp@keithp.com> Date: Mon Sep 21 07:16:17 2015 +0100 os/xdmcp: Just send XDMCP keepalive packets once every three minutes There was a complicated scheme to increase the time between keepalives from 3 minutes up to as much as 24 hours in an attempt to reduce network traffic from idle X terminals. X terminals receiving X traffic, or receiving user input would use the 3 minute value; X terminals without any network traffic would use a longer value. However, this was actually broken -- any activity in the X server, either client requests or user input, would end up resetting the keepalive timeout, so a user mashing on the keyboard would never discover that the XDMCP master had disappeared and have the session terminated, which was precisely the design goal of the XDMCP keepalive mechanism. Instead of attempting to fix this, accept the cost of a pair of XDMCP packets once every three minutes and just perform keepalives regularly. This will also make reworking the block and wakeup handler APIs to eliminate select masks easier. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com> Backported-to-NX-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
* Keystroke.c: remove unneeded capital keys for default keystrokesUlrich Sibiller2017-03-131-11/+0
|
* Keystroke.c: add new keystroke to reread keystroke configUlrich Sibiller2017-03-132-6/+34
| | | | Default is ctrl-alt-k
* Keystroke.c: simplify parse_keystroke_fileUlrich Sibiller2017-03-131-36/+15
|
* Keystroke.c: fix formattingUlrich Sibiller2017-03-131-1/+1
|
* Keystroke.c: use an own environment variable for X2GoUlrich Sibiller2017-03-131-3/+10
|
* Keystroke.c: make nxagentKeystrokeFileParsed localUlrich Sibiller2017-03-131-4/+5
|
* Keystroke.c: add missing Mod5 modifierUlrich Sibiller2017-03-131-0/+1
|
* Keystroke.c: fix code orderUlrich Sibiller2017-03-131-1/+3
| | | | Do not use map before calling parse_keystroke_file() since it will malloc map.
* Keystroke.h: sane struct initUlrich Sibiller2017-03-131-0/+1
| | | | | Correctly use constant for unused structs instead of implicitly setting it through calloc().
* Keyboard.c: Introduce separate masks for Alt and MetaUlrich Sibiller2017-03-131-0/+8
| | | | Unclear why they have been merged at all.
* Keystroke.c: Fix modifier handlingUlrich Sibiller2017-03-131-1/+2
| | | | | | Code could not distinguish between ctrl-alt-shift and ctrl-alt. Fixes ArcticaProject/nx-libs#395
* Keystroke.c: more/fixed debug outputUlrich Sibiller2017-03-131-2/+17
|
* Keystroke: whitespace fixesUlrich Sibiller2017-03-132-2/+2
|
* Keystroke.c: arrange switch_all_screens and fullscreen close togetherUlrich Sibiller2017-03-132-17/+17
| | | | | Both use the same keystroke 'f' (with different modifiers) for a very similar function.
* Keystroke.c: print keystroke name in TEST modeUlrich Sibiller2017-03-131-2/+6
|
* Keystroke.c: improve TEST outputUlrich Sibiller2017-03-131-3/+3
|
* Keystroke.c: add another FIXMEUlrich Sibiller2017-03-131-0/+2
|
* Keystroke.c: Simplify read_binding_from_xmlnodeUlrich Sibiller2017-03-131-16/+17
|
* Keystroke.c: use symbols instead of integersUlrich Sibiller2017-03-131-2/+4
| | | | We have defined them, so use them!
* Keystroke.c: Boolify read_binding_from_xmlnodeUlrich Sibiller2017-03-132-45/+45
|
* Keystroke.c: Boolify nxagentCheckSpecialKeystrokeUlrich Sibiller2017-03-132-8/+8
|
* Keystroke.c: reorder parse_keystroke_fileUlrich Sibiller2017-03-131-7/+5
| | | | for better readability
* Keystroke.c: handle parsing state in parse_keystroke_file()Ulrich Sibiller2017-03-131-5/+6
|
* Keystroke.c: simplify nxagentCheckSpecialKeystrokeUlrich Sibiller2017-03-131-19/+3
|
* Keystroke.c: fix code formattingUlrich Sibiller2017-03-131-5/+4
|
* Keystroke.c: rework read_binding_from_xmlnode()Ulrich Sibiller2017-03-111-54/+30
| | | | code cleanup
* Keystroke.c: use Bool type where appropriateUlrich Sibiller2017-03-111-4/+4
|