diff options
author | Pauli Nieminen <ext-pauli.nieminen@nokia.com> | 2017-02-16 10:35:39 +0100 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2017-03-21 10:58:07 +0100 |
commit | 349b6dec54eaa86b49f3627939c4e7039e3b25f0 (patch) | |
tree | 5a3649f5c2c234653edeb87eaee4513d11f9af8c /nx-X11/programs/Xserver/os/access.c | |
parent | 239fe3d0802b12ce8947741693244ff8154fa559 (diff) | |
download | nx-libs-349b6dec54eaa86b49f3627939c4e7039e3b25f0.tar.gz nx-libs-349b6dec54eaa86b49f3627939c4e7039e3b25f0.tar.bz2 nx-libs-349b6dec54eaa86b49f3627939c4e7039e3b25f0.zip |
os: always check if client is local when connection is accepted
Backported from X.org:
commit 2d67ada3c4079a11c52024a9c3d4138becca5171
Author: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
Date: Thu Dec 30 19:19:43 2010 +0200
os: always check if client is local when connection is accepted
LocalClient is used for all DRI2 requests that makes it frequently
called function. Querying if connection is local or not takes 10-15us
(on ARM) depending on malloc speed.
Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
Backported-to-NX-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
Diffstat (limited to 'nx-X11/programs/Xserver/os/access.c')
-rw-r--r-- | nx-X11/programs/Xserver/os/access.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/nx-X11/programs/Xserver/os/access.c b/nx-X11/programs/Xserver/os/access.c index d745bde3a..e9d5d8ae8 100644 --- a/nx-X11/programs/Xserver/os/access.c +++ b/nx-X11/programs/Xserver/os/access.c @@ -1217,12 +1217,17 @@ ResetHosts (char *display) } /* Is client on the local host */ -Bool LocalClient(ClientPtr client) +Bool +ComputeLocalClient(ClientPtr client) { int alen, family, notused; Xtransaddr *from = NULL; void *addr; register HOST *host; + OsCommPtr oc = (OsCommPtr) client->osPrivate; + + if (!oc->trans_conn) + return FALSE; #ifdef XCSECURITY /* untrusted clients can't change host access */ @@ -1233,8 +1238,7 @@ Bool LocalClient(ClientPtr client) return FALSE; } #endif - if (!_XSERVTransGetPeerAddr (((OsCommPtr)client->osPrivate)->trans_conn, - ¬used, &alen, &from)) + if (!_XSERVTransGetPeerAddr (oc->trans_conn, ¬used, &alen, &from)) { family = ConvertAddr ((struct sockaddr *) from, &alen, (void **)&addr); @@ -1260,6 +1264,13 @@ Bool LocalClient(ClientPtr client) return FALSE; } +Bool LocalClient(ClientPtr client) +{ + if (!client->osPrivate) + return FALSE; + return ((OsCommPtr)client->osPrivate)->local_client; +} + /* * Return the uid and gid of a connected local client * |