Merge remote-tracking branch 'ajax/server-1.14-abi-churn'
This commit is contained in:
commit
4dd5989d15
|
@ -288,7 +288,7 @@ ProcXF86BigfontQueryVersion(ClientPtr client)
|
|||
.gid = getegid(),
|
||||
#ifdef HAS_SHM
|
||||
.signature = signature,
|
||||
.capabilities = (LocalClient(client) && !client->swapped)
|
||||
.capabilities = (client->local && !client->swapped)
|
||||
? XF86Bigfont_CAP_LocalShm : 0
|
||||
#else
|
||||
.signature = 0,
|
||||
|
@ -357,7 +357,7 @@ ProcXF86BigfontQueryFont(ClientPtr client)
|
|||
#else
|
||||
switch (client->req_len) {
|
||||
case 2: /* client with version 1.0 libX11 */
|
||||
stuff_flags = (LocalClient(client) &&
|
||||
stuff_flags = (client->local &&
|
||||
!client->swapped ? XF86Bigfont_FLAGS_Shm : 0);
|
||||
break;
|
||||
case 3: /* client with version 1.1 libX11 */
|
||||
|
|
|
@ -3499,14 +3499,16 @@ ProcInitialConnection(ClientPtr client)
|
|||
REQUEST(xReq);
|
||||
xConnClientPrefix *prefix;
|
||||
int whichbyte = 1;
|
||||
char order;
|
||||
|
||||
prefix = (xConnClientPrefix *) ((char *) stuff + sz_xReq);
|
||||
if ((prefix->byteOrder != 'l') && (prefix->byteOrder != 'B'))
|
||||
return client->noClientException = -1;
|
||||
if (((*(char *) &whichbyte) && (prefix->byteOrder == 'B')) ||
|
||||
(!(*(char *) &whichbyte) && (prefix->byteOrder == 'l'))) {
|
||||
client->swapped = TRUE;
|
||||
SwapConnClientPrefix(prefix);
|
||||
prefix = (xConnClientPrefix *) ((char *)stuff + sz_xReq);
|
||||
order = prefix->byteOrder;
|
||||
if (order != 'l' && order != 'B' && order != 'r' && order != 'R')
|
||||
return client->noClientException = -1;
|
||||
if (((*(char *) &whichbyte) && (order == 'B' || order == 'R')) ||
|
||||
(!(*(char *) &whichbyte) && (order == 'l' || order == 'r'))) {
|
||||
client->swapped = TRUE;
|
||||
SwapConnClientPrefix(prefix);
|
||||
}
|
||||
stuff->reqType = 2;
|
||||
stuff->length += bytes_to_int32(prefix->nbytesAuthProto) +
|
||||
|
@ -3514,6 +3516,9 @@ ProcInitialConnection(ClientPtr client)
|
|||
if (client->swapped) {
|
||||
swaps(&stuff->length);
|
||||
}
|
||||
if (order == 'r' || order == 'R') {
|
||||
client->local = FALSE;
|
||||
}
|
||||
ResetCurrentRequest(client);
|
||||
return Success;
|
||||
}
|
||||
|
|
|
@ -561,7 +561,7 @@ ProcXF86DRIQueryDirectRenderingCapable(register ClientPtr client)
|
|||
return BadValue;
|
||||
}
|
||||
|
||||
if (!LocalClient(client) || client->swapped)
|
||||
if (!client->local || client->swapped)
|
||||
isCapable = 0;
|
||||
|
||||
rep = (xXF86DRIQueryDirectRenderingCapableReply) {
|
||||
|
@ -1229,7 +1229,7 @@ ProcXF86DRIDispatch(register ClientPtr client)
|
|||
}
|
||||
}
|
||||
|
||||
if (!LocalClient(client))
|
||||
if (!client->local)
|
||||
return DRIErrorBase + XF86DRIClientNotLocal;
|
||||
|
||||
switch (stuff->data) {
|
||||
|
|
|
@ -2095,7 +2095,7 @@ ProcXDGADispatch(ClientPtr client)
|
|||
{
|
||||
REQUEST(xReq);
|
||||
|
||||
if (!LocalClient(client))
|
||||
if (!client->local)
|
||||
return DGAErrorBase + XF86DGAClientNotLocal;
|
||||
|
||||
#ifdef DGA_REQ_DEBUG
|
||||
|
|
|
@ -80,7 +80,7 @@ typedef enum {
|
|||
* mask is 0xFFFF0000.
|
||||
*/
|
||||
#define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 4)
|
||||
#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(13, 0)
|
||||
#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(14, 0)
|
||||
#define ABI_XINPUT_VERSION SET_ABI_VERSION(18, 0)
|
||||
#define ABI_EXTENSION_VERSION SET_ABI_VERSION(7, 0)
|
||||
#define ABI_FONT_VERSION SET_ABI_VERSION(0, 6)
|
||||
|
|
|
@ -1590,7 +1590,7 @@ ProcXF86VidModeGetPermissions(ClientPtr client)
|
|||
return BadValue;
|
||||
|
||||
if (xf86GetVidModeEnabled() &&
|
||||
(xf86GetVidModeAllowNonLocal() || LocalClient(client))) {
|
||||
(xf86GetVidModeAllowNonLocal() || client->local)) {
|
||||
rep.permissions |= XF86VM_WRITE_PERMISSION;
|
||||
}
|
||||
if (client->swapped) {
|
||||
|
@ -1659,7 +1659,7 @@ ProcXF86VidModeDispatch(ClientPtr client)
|
|||
default:
|
||||
if (!xf86GetVidModeEnabled())
|
||||
return VidModeErrorBase + XF86VidModeExtensionDisabled;
|
||||
if (xf86GetVidModeAllowNonLocal() || LocalClient(client)) {
|
||||
if (xf86GetVidModeAllowNonLocal() || client->local) {
|
||||
switch (stuff->data) {
|
||||
case X_XF86VidModeAddModeLine:
|
||||
return ProcXF86VidModeAddModeLine(client);
|
||||
|
@ -2083,7 +2083,7 @@ SProcXF86VidModeDispatch(ClientPtr client)
|
|||
default:
|
||||
if (!xf86GetVidModeEnabled())
|
||||
return VidModeErrorBase + XF86VidModeExtensionDisabled;
|
||||
if (xf86GetVidModeAllowNonLocal() || LocalClient(client)) {
|
||||
if (xf86GetVidModeAllowNonLocal() || client->local) {
|
||||
switch (stuff->data) {
|
||||
case X_XF86VidModeAddModeLine:
|
||||
return SProcXF86VidModeAddModeLine(client);
|
||||
|
|
|
@ -118,7 +118,7 @@ ProcXF86DRIQueryDirectRenderingCapable(register ClientPtr client)
|
|||
return BadValue;
|
||||
}
|
||||
|
||||
if (!LocalClient(client) || client->swapped)
|
||||
if (!client->local || client->swapped)
|
||||
isCapable = 0;
|
||||
|
||||
rep = (xXF86DRIQueryDirectRenderingCapableReply) {
|
||||
|
@ -528,7 +528,7 @@ ProcXF86DRIDispatch(register ClientPtr client)
|
|||
return ProcXF86DRIQueryDirectRenderingCapable(client);
|
||||
}
|
||||
|
||||
if (!LocalClient(client))
|
||||
if (!client->local)
|
||||
return DRIErrorBase + XF86DRIClientNotLocal;
|
||||
|
||||
switch (stuff->data) {
|
||||
|
|
|
@ -588,7 +588,7 @@ ProcDRI2Dispatch(ClientPtr client)
|
|||
return ProcDRI2QueryVersion(client);
|
||||
}
|
||||
|
||||
if (!LocalClient(client))
|
||||
if (!client->local)
|
||||
return BadRequest;
|
||||
|
||||
switch (stuff->data) {
|
||||
|
|
|
@ -612,7 +612,7 @@ ProcAppleWMDispatch(register ClientPtr client)
|
|||
return ProcAppleWMQueryVersion(client);
|
||||
}
|
||||
|
||||
if (!LocalClient(client))
|
||||
if (!client->local)
|
||||
return WMErrorBase + AppleWMClientNotLocal;
|
||||
|
||||
switch (stuff->data) {
|
||||
|
@ -684,7 +684,7 @@ SProcAppleWMDispatch(register ClientPtr client)
|
|||
REQUEST(xReq);
|
||||
|
||||
/* It is bound to be non-local when there is byte swapping */
|
||||
if (!LocalClient(client))
|
||||
if (!client->local)
|
||||
return WMErrorBase + AppleWMClientNotLocal;
|
||||
|
||||
/* only local clients are allowed WM access */
|
||||
|
|
|
@ -129,7 +129,7 @@ ProcAppleDRIQueryDirectRenderingCapable(register ClientPtr client)
|
|||
}
|
||||
rep.isCapable = isCapable;
|
||||
|
||||
if (!LocalClient(client))
|
||||
if (!client->local)
|
||||
rep.isCapable = 0;
|
||||
|
||||
if (client->swapped) {
|
||||
|
@ -354,7 +354,7 @@ ProcAppleDRIDispatch(register ClientPtr client)
|
|||
return ProcAppleDRIQueryDirectRenderingCapable(client);
|
||||
}
|
||||
|
||||
if (!LocalClient(client))
|
||||
if (!client->local)
|
||||
return DRIErrorBase + AppleDRIClientNotLocal;
|
||||
|
||||
switch (stuff->data) {
|
||||
|
@ -469,7 +469,7 @@ SProcAppleDRIDispatch(register ClientPtr client)
|
|||
return SProcAppleDRIQueryDirectRenderingCapable(client);
|
||||
}
|
||||
|
||||
if (!LocalClient(client))
|
||||
if (!client->local)
|
||||
return DRIErrorBase + AppleDRIClientNotLocal;
|
||||
|
||||
switch (stuff->data) {
|
||||
|
|
|
@ -525,7 +525,7 @@ ProcWindowsWMDispatch(ClientPtr client)
|
|||
return ProcWindowsWMQueryVersion(client);
|
||||
}
|
||||
|
||||
if (!LocalClient(client))
|
||||
if (!client->local)
|
||||
return WMErrorBase + WindowsWMClientNotLocal;
|
||||
|
||||
switch (stuff->data) {
|
||||
|
@ -575,7 +575,7 @@ SProcWindowsWMDispatch(ClientPtr client)
|
|||
REQUEST(xReq);
|
||||
|
||||
/* It is bound to be non-local when there is byte swapping */
|
||||
if (!LocalClient(client))
|
||||
if (!client->local)
|
||||
return WMErrorBase + WindowsWMClientNotLocal;
|
||||
|
||||
/* only local clients are allowed WM access */
|
||||
|
|
|
@ -56,8 +56,7 @@ ReplyNotSwappd(ClientPtr /* pClient */ ,
|
|||
void * /* pbuf */ ) _X_NORETURN;
|
||||
|
||||
typedef enum { ClientStateInitial,
|
||||
/* 1 is unused now, was ClientStateAuthenticating */
|
||||
ClientStateRunning = 2,
|
||||
ClientStateRunning,
|
||||
ClientStateRetained,
|
||||
ClientStateGone
|
||||
} ClientState;
|
||||
|
@ -86,26 +85,29 @@ typedef struct _Window *SaveSetElt;
|
|||
#endif
|
||||
|
||||
typedef struct _Client {
|
||||
int index;
|
||||
Mask clientAsMask;
|
||||
pointer requestBuffer;
|
||||
pointer osPrivate; /* for OS layer, including scheduler */
|
||||
Bool swapped;
|
||||
Mask clientAsMask;
|
||||
short index;
|
||||
unsigned char majorOp, minorOp;
|
||||
int swapped:1;
|
||||
int local:1;
|
||||
int big_requests:1; /* supports large requests */
|
||||
int clientGone:1;
|
||||
int closeDownMode:2;
|
||||
int clientState:2;
|
||||
char smart_priority;
|
||||
short noClientException; /* this client died or needs to be killed */
|
||||
int priority;
|
||||
ReplySwapPtr pSwapReplyFunc;
|
||||
XID errorValue;
|
||||
int sequence;
|
||||
int closeDownMode;
|
||||
int clientGone;
|
||||
int noClientException; /* this client died or needs to be
|
||||
* killed */
|
||||
int ignoreCount; /* count for Attend/IgnoreClient */
|
||||
SaveSetElt *saveSet;
|
||||
int numSaved;
|
||||
SaveSetElt *saveSet;
|
||||
int (**requestVector) (ClientPtr /* pClient */ );
|
||||
CARD32 req_len; /* length of current request */
|
||||
Bool big_requests; /* supports large requests */
|
||||
int priority;
|
||||
ClientState clientState;
|
||||
unsigned int replyBytesRemaining;
|
||||
PrivateRec *devPrivates;
|
||||
unsigned short xkbClientFlags;
|
||||
unsigned short mapNotifyMask;
|
||||
|
@ -113,15 +115,12 @@ typedef struct _Client {
|
|||
unsigned short vMajor, vMinor;
|
||||
KeyCode minKC, maxKC;
|
||||
|
||||
unsigned long replyBytesRemaining;
|
||||
int smart_priority;
|
||||
long smart_start_tick;
|
||||
long smart_stop_tick;
|
||||
long smart_check_tick;
|
||||
int smart_start_tick;
|
||||
int smart_stop_tick;
|
||||
int smart_check_tick;
|
||||
|
||||
DeviceIntPtr clientPtr;
|
||||
ClientIdPtr clientIds;
|
||||
unsigned short majorOp, minorOp;
|
||||
} ClientRec;
|
||||
|
||||
/*
|
||||
|
|
|
@ -406,9 +406,6 @@ typedef struct sockaddr *sockaddrPtr;
|
|||
extern _X_EXPORT int
|
||||
InvalidHost(sockaddrPtr /*saddr */ , int /*len */ , ClientPtr client);
|
||||
|
||||
extern _X_EXPORT int
|
||||
LocalClient(ClientPtr /* client */ );
|
||||
|
||||
extern _X_EXPORT int
|
||||
LocalClientCred(ClientPtr, int *, int *);
|
||||
|
||||
|
|
|
@ -86,8 +86,8 @@ typedef struct _WindowOpt {
|
|||
struct _OtherClients *otherClients; /* default: NULL */
|
||||
struct _GrabRec *passiveGrabs; /* default: NULL */
|
||||
PropertyPtr userProps; /* default: NULL */
|
||||
unsigned long backingBitPlanes; /* default: ~0L */
|
||||
unsigned long backingPixel; /* default: 0 */
|
||||
CARD32 backingBitPlanes; /* default: ~0L */
|
||||
CARD32 backingPixel; /* default: 0 */
|
||||
RegionPtr boundingShape; /* default: NULL */
|
||||
RegionPtr clipShape; /* default: NULL */
|
||||
RegionPtr inputShape; /* default: NULL */
|
||||
|
|
10
os/access.c
10
os/access.c
|
@ -1007,14 +1007,6 @@ ComputeLocalClient(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
|
||||
*
|
||||
|
@ -1176,7 +1168,7 @@ AuthorizedClient(ClientPtr client)
|
|||
if (rc != Success)
|
||||
return rc;
|
||||
|
||||
return LocalClient(client) ? Success : BadAccess;
|
||||
return client->local ? Success : BadAccess;
|
||||
}
|
||||
|
||||
/* Add a host to the access control list. This is the external interface
|
||||
|
|
|
@ -764,7 +764,7 @@ AllocNewConnection(XtransConnInfo trans_conn, int fd, CARD32 conn_time)
|
|||
free(oc);
|
||||
return NullClient;
|
||||
}
|
||||
oc->local_client = ComputeLocalClient(client);
|
||||
client->local = ComputeLocalClient(client);
|
||||
#if !defined(WIN32)
|
||||
ConnectionTranslation[fd] = client->index;
|
||||
#else
|
||||
|
@ -894,7 +894,7 @@ ErrorConnMax(XtransConnInfo trans_conn)
|
|||
xConnSetupPrefix csp;
|
||||
char pad[3] = { 0, 0, 0 };
|
||||
struct iovec iov[3];
|
||||
char byteOrder = 0;
|
||||
char order = 0;
|
||||
int whichbyte = 1;
|
||||
struct timeval waittime;
|
||||
fd_set mask;
|
||||
|
@ -907,15 +907,15 @@ ErrorConnMax(XtransConnInfo trans_conn)
|
|||
FD_SET(fd, &mask);
|
||||
(void) Select(fd + 1, &mask, NULL, NULL, &waittime);
|
||||
/* try to read the byte-order of the connection */
|
||||
(void) _XSERVTransRead(trans_conn, &byteOrder, 1);
|
||||
if ((byteOrder == 'l') || (byteOrder == 'B')) {
|
||||
(void) _XSERVTransRead(trans_conn, &order, 1);
|
||||
if (order == 'l' || order == 'B' || order == 'r' || order == 'R') {
|
||||
csp.success = xFalse;
|
||||
csp.lengthReason = sizeof(NOROOM) - 1;
|
||||
csp.length = (sizeof(NOROOM) + 2) >> 2;
|
||||
csp.majorVersion = X_PROTOCOL;
|
||||
csp.minorVersion = X_PROTOCOL_REVISION;
|
||||
if (((*(char *) &whichbyte) && (byteOrder == 'B')) ||
|
||||
(!(*(char *) &whichbyte) && (byteOrder == 'l'))) {
|
||||
if (((*(char *) &whichbyte) && (order == 'B' || order == 'R')) ||
|
||||
(!(*(char *) &whichbyte) && (order == 'l' || order == 'r'))) {
|
||||
swaps(&csp.majorVersion);
|
||||
swaps(&csp.minorVersion);
|
||||
swaps(&csp.length);
|
||||
|
@ -1038,8 +1038,8 @@ CloseDownConnection(ClientPtr client)
|
|||
if (FlushCallback)
|
||||
CallCallbacks(&FlushCallback, NULL);
|
||||
|
||||
if (oc->output && oc->output->count)
|
||||
FlushClient(client, oc, (char *) NULL, 0);
|
||||
if (oc->output)
|
||||
FlushClient(client, oc, (char *) NULL, 0);
|
||||
#ifdef XDMCP
|
||||
XdmcpCloseDisplay(oc->fd);
|
||||
#endif
|
||||
|
|
21
os/io.c
21
os/io.c
|
@ -82,6 +82,23 @@ SOFTWARE.
|
|||
CallbackListPtr ReplyCallback;
|
||||
CallbackListPtr FlushCallback;
|
||||
|
||||
typedef struct _connectionInput {
|
||||
struct _connectionInput *next;
|
||||
char *buffer; /* contains current client input */
|
||||
char *bufptr; /* pointer to current start of data */
|
||||
int bufcnt; /* count of bytes in buffer */
|
||||
int lenLastReq;
|
||||
int size;
|
||||
unsigned int ignoreBytes; /* bytes to ignore before the next request */
|
||||
} ConnectionInput, *ConnectionInputPtr;
|
||||
|
||||
typedef struct _connectionOutput {
|
||||
struct _connectionOutput *next;
|
||||
unsigned char *buf;
|
||||
int size;
|
||||
int count;
|
||||
} ConnectionOutput, *ConnectionOutputPtr;
|
||||
|
||||
static ConnectionInputPtr AllocateInputBuffer(void);
|
||||
static ConnectionOutputPtr AllocateOutputBuffer(void);
|
||||
|
||||
|
@ -845,8 +862,8 @@ FlushClient(ClientPtr who, OsCommPtr oc, const void *__extraBuf, int extraCount)
|
|||
long notWritten;
|
||||
long todo;
|
||||
|
||||
if (!oco)
|
||||
return 0;
|
||||
if (!oco || !oco->count)
|
||||
return 0;
|
||||
written = 0;
|
||||
padsize = padding_for_int32(extraCount);
|
||||
notWritten = oco->count + extraCount + padsize;
|
||||
|
|
19
os/osdep.h
19
os/osdep.h
|
@ -107,22 +107,8 @@ typedef Bool (*AddAuthorFunc) (unsigned name_length, const char *name,
|
|||
unsigned data_length, char *data);
|
||||
#endif
|
||||
|
||||
typedef struct _connectionInput {
|
||||
struct _connectionInput *next;
|
||||
char *buffer; /* contains current client input */
|
||||
char *bufptr; /* pointer to current start of data */
|
||||
int bufcnt; /* count of bytes in buffer */
|
||||
int lenLastReq;
|
||||
int size;
|
||||
unsigned int ignoreBytes; /* bytes to ignore before the next request */
|
||||
} ConnectionInput, *ConnectionInputPtr;
|
||||
|
||||
typedef struct _connectionOutput {
|
||||
struct _connectionOutput *next;
|
||||
int size;
|
||||
unsigned char *buf;
|
||||
int count;
|
||||
} ConnectionOutput, *ConnectionOutputPtr;
|
||||
typedef struct _connectionInput *ConnectionInputPtr;
|
||||
typedef struct _connectionOutput *ConnectionOutputPtr;
|
||||
|
||||
struct _osComm;
|
||||
|
||||
|
@ -162,7 +148,6 @@ typedef struct _osComm {
|
|||
XID auth_id; /* authorization id */
|
||||
CARD32 conn_time; /* timestamp if not established, else 0 */
|
||||
struct _XtransConnInfo *trans_conn; /* transport connection object */
|
||||
Bool local_client;
|
||||
} OsCommRec, *OsCommPtr;
|
||||
|
||||
extern int FlushClient(ClientPtr /*who */ ,
|
||||
|
|
Loading…
Reference in New Issue
Block a user