diff --git a/libvncserver/auth.c b/libvncserver/auth.c index 98dc48e..e8de22f 100755 --- a/libvncserver/auth.c +++ b/libvncserver/auth.c @@ -33,16 +33,18 @@ * Handle security types */ +static rfbSecurityHandler* securityHandlers = NULL; + void -rfbRegisterSecurityHandler(rfbScreenInfoPtr server, rfbSecurityHandler* handler) +rfbRegisterSecurityHandler(rfbSecurityHandler* handler) { rfbSecurityHandler* last = handler; while(last->next) last = last->next; - last->next = server->securityHandlers; - server->securityHandlers = handler; + last->next = securityHandlers; + securityHandlers = handler; } @@ -93,10 +95,10 @@ rfbSendSecurityTypeList(rfbClientPtr cl, int primaryType) handler->type = primaryType; handler->handler = rfbVncAuthSendChallenge; handler->next = NULL; - rfbRegisterSecurityHandler(cl->screen, handler); + rfbRegisterSecurityHandler(handler); } - for (handler = cl->screen->securityHandlers; + for (handler = securityHandlers; handler && sizenext) { buffer[size] = handler->type; size++; @@ -227,7 +229,7 @@ rfbProcessClientSecurityType(rfbClientPtr cl) /* Make sure it was present in the list sent by the server. */ - for (handler = cl->screen->securityHandlers; handler; + for (handler = securityHandlers; handler; handler = handler->next) if (chosenType == handler->type) { handler->handler(cl); diff --git a/libvncserver/main.c b/libvncserver/main.c index 5a3d248..a9161ce 100644 --- a/libvncserver/main.c +++ b/libvncserver/main.c @@ -668,7 +668,6 @@ rfbScreenInfoPtr rfbGetScreen(int* argc,char** argv, screen->newClientHook = rfbDefaultNewClientHook; screen->displayHook = NULL; screen->processCustomClientMessage = rfbDefaultProcessCustomClientMessage; - screen->securityHandlers = NULL; /* initialize client list and iterator mutex */ rfbClientListInit(screen); diff --git a/rfb/rfb.h b/rfb/rfb.h index a63badf..4254016 100644 --- a/rfb/rfb.h +++ b/rfb/rfb.h @@ -278,8 +278,6 @@ typedef struct _rfbScreenInfo rfbProcessCustomClientMessageProcPtr processCustomClientMessage; in_addr_t listenInterface; - - rfbSecurityHandler* securityHandlers; } rfbScreenInfo, *rfbScreenInfoPtr; @@ -601,8 +599,7 @@ extern void rfbHttpCheckFds(rfbScreenInfoPtr rfbScreen); extern void rfbAuthNewClient(rfbClientPtr cl); extern void rfbAuthProcessClientMessage(rfbClientPtr cl); -extern void rfbRegisterSecurityHandler(rfbScreenInfoPtr server, - rfbSecurityHandler* handler); +extern void rfbRegisterSecurityHandler(rfbSecurityHandler* handler); /* rre.c */