diff options
author | dscho <dscho> | 2005-01-03 22:34:48 +0000 |
---|---|---|
committer | dscho <dscho> | 2005-01-03 22:34:48 +0000 |
commit | e78a41c69c0b8d32c0742c11610f1918c98f35e4 (patch) | |
tree | ca315d0c4fc0b13bba70bad8922a4d71e34e3ad3 | |
parent | 4b89306d17a56210cf7d8c4da93ff585b166b3fb (diff) | |
download | libtdevnc-e78a41c69c0b8d32c0742c11610f1918c98f35e4.tar.gz libtdevnc-e78a41c69c0b8d32c0742c11610f1918c98f35e4.zip |
add hook to allow for custom client messages
-rw-r--r-- | libvncserver/main.c | 6 | ||||
-rw-r--r-- | libvncserver/rfbserver.c | 3 | ||||
-rw-r--r-- | rfb/rfb.h | 5 |
3 files changed, 14 insertions, 0 deletions
diff --git a/libvncserver/main.c b/libvncserver/main.c index 96aeda7..0c87d8e 100644 --- a/libvncserver/main.c +++ b/libvncserver/main.c @@ -498,6 +498,11 @@ enum rfbNewClientAction rfbDefaultNewClientHook(rfbClientPtr cl) return RFB_CLIENT_ACCEPT; } +rfbBool rfbDefaultProcessCustomClientMessage(rfbClientPtr cl,uint8_t type) +{ + return FALSE; +} + /* * Update server's pixel format in screenInfo structure. This * function is called from rfbGetScreen() and rfbNewFramebuffer(). @@ -641,6 +646,7 @@ rfbScreenInfoPtr rfbGetScreen(int* argc,char** argv, screen->setTranslateFunction = rfbSetTranslateFunction; screen->newClientHook = rfbDefaultNewClientHook; screen->displayHook = 0; + screen->processCustomClientMessage = rfbDefaultProcessCustomClientMessage; /* initialize client list and iterator mutex */ rfbClientListInit(screen); diff --git a/libvncserver/rfbserver.c b/libvncserver/rfbserver.c index 33e277d..0e6a4ce 100644 --- a/libvncserver/rfbserver.c +++ b/libvncserver/rfbserver.c @@ -1039,6 +1039,9 @@ rfbProcessClientNormalMessage(cl) default: + if(cl->screen->processCustomClientMessage(cl,msg.type)) + return; + rfbLog("rfbProcessClientNormalMessage: unknown message type %d\n", msg.type); rfbLog(" ... closing connection\n"); @@ -125,6 +125,7 @@ typedef rfbBool (*rfbSetTranslateFunctionProcPtr)(struct _rfbClientRec* cl); typedef rfbBool (*rfbPasswordCheckProcPtr)(struct _rfbClientRec* cl,const char* encryptedPassWord,int len); typedef enum rfbNewClientAction (*rfbNewClientHookPtr)(struct _rfbClientRec* cl); typedef void (*rfbDisplayHookPtr)(struct _rfbClientRec* cl); +typedef rfbBool (*rfbProcessCustomClientMessageProcPtr)(struct _rfbClientRec* cl,uint8_t type); typedef struct { uint32_t count; @@ -291,6 +292,10 @@ typedef struct _rfbScreenInfo * an update should be sent. This should make working on a slow * link more interactive. */ int progressiveSliceHeight; + + /* if LibVNCServer doesn't know the normal message, it calls this + * hook. If the hook handles the message, it returns TRUE. */ + rfbProcessCustomClientMessageProcPtr processCustomClientMessage; } rfbScreenInfo, *rfbScreenInfoPtr; |