X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=Usermode%2FApplications%2Faxwin2_src%2FWM%2Fmessages.c;h=f4aa3142d30daf2409702e5ccfc4b85688815b91;hb=ad2ec62655e1d6eb8f2b4a4684eb5d7952aea0fb;hp=14718abef20fb947333903838d612243002dce40;hpb=524b2b8fac4cc652c707bb0cddcb730dede3d7b1;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin2_src/WM/messages.c b/Usermode/Applications/axwin2_src/WM/messages.c index 14718abe..f4aa3142 100644 --- a/Usermode/Applications/axwin2_src/WM/messages.c +++ b/Usermode/Applications/axwin2_src/WM/messages.c @@ -13,7 +13,6 @@ #define STATICBUF_SIZE 64 // === TYPES === -typedef void tMessages_Handle_Callback(void*, size_t, void*); // === PROTOTYPES === void IPC_Init(void); @@ -21,7 +20,7 @@ void IPC_FillSelect(int *nfds, fd_set *set); void IPC_HandleSelect(fd_set *set); void Messages_RespondDatagram(void *Ident, size_t Length, void *Data); void Messages_RespondIPC(void *Ident, size_t Length, void *Data); -void Messages_Handle(void *Ident, int MsgLen, tAxWin_Message *Msg, tMessages_Handle_Callback *Respond); +void Messages_Handle(void *Ident, size_t MsgLen, tAxWin_Message *Msg, tMessages_Handle_Callback *Respond); // === GLOBALS === int giNetworkFileHandle = -1; @@ -88,20 +87,33 @@ void Messages_RespondIPC(void *Ident, size_t Length, void *Data) SysSendMessage( *(tid_t*)Ident, Length, Data ); } -void Messages_Handle(void *Ident, int MsgLen, tAxWin_Message *Msg, tMessages_Handle_Callback *Respond) +void Messages_Handle(void *Ident, size_t MsgLen, tAxWin_Message *Msg, tMessages_Handle_Callback *Respond) { + if( MsgLen < sizeof(tAxWin_Message) ) + return ; + if( MsgLen < sizeof(tAxWin_Message) + Msg->Size ) + return ; + switch(Msg->ID) { - #if 0 case MSG_SREQ_PING: + if( MsgLen < sizeof(tAxWin_Message) + 4 ) return; Msg->ID = MSG_SRSP_VERSION; - Msg->Size = 2; + Msg->Size = 4; Msg->Data[0] = 0; Msg->Data[1] = 1; *(uint16_t*)&Msg->Data[2] = -1; Respond(Ident, sizeof(Msg->ID), Msg); break; - #endif + + case MSG_SREQ_REGISTER: + if( Msg->Len == strnlen(Msg->Len, Msg->Data) ) { + // Special handling? + return ; + } + + break; + default: fprintf(stderr, "WARNING: Unknown message %i (%p)\n", Msg->ID, Respond); _SysDebug("WARNING: Unknown message %i (%p)\n", Msg->ID, Respond);