X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FIPStack%2Flink.c;h=07234df05b0ece0c7c770efde8bdeb31b0399a3d;hb=f429a25f24ffd4762d59bee5f7122ac06881f3ca;hp=8316b638c7404a2a2d7cbd694f7e0c67c8d15d29;hpb=586a47ab9343a85c944a2cf7b27a74cf459a8423;p=tpg%2Facess2.git diff --git a/Modules/IPStack/link.c b/Modules/IPStack/link.c index 8316b638..07234df0 100644 --- a/Modules/IPStack/link.c +++ b/Modules/IPStack/link.c @@ -17,6 +17,7 @@ void Link_WatchDevice(tAdapter *Adapter); // === GLOBALS === int giRegisteredTypes = 0; + int giRegisteredTypeSpace = 0; struct { Uint16 Type; tPacketCallback Callback; @@ -50,17 +51,18 @@ void Link_RegisterType(Uint16 Type, tPacketCallback Callback) if(i == -1) { - tmp = realloc(gaRegisteredTypes, (giRegisteredTypes+1)*sizeof(*gaRegisteredTypes)); + giRegisteredTypeSpace += 5; + tmp = realloc(gaRegisteredTypes, giRegisteredTypeSpace*sizeof(*gaRegisteredTypes)); if(!tmp) { Log_Warning("NET", "Out of heap space! (Attempted to allocate %i)", - (giRegisteredTypes+1)*sizeof(*gaRegisteredTypes) + giRegisteredTypeSpace*sizeof(*gaRegisteredTypes) ); return ; } + gaRegisteredTypes = tmp; i = giRegisteredTypes; giRegisteredTypes ++; - gaRegisteredTypes = tmp; } gaRegisteredTypes[i].Callback = Callback; @@ -122,6 +124,7 @@ void Link_WatchDevice(tAdapter *Adapter) Uint32 checksum; // Wait for a packet (Read on a network device is blocking) + Log_Debug("NET", "Waiting on adapter FD#0x%x", Adapter->DeviceFD); ret = VFS_Read(Adapter->DeviceFD, MAX_PACKET_SIZE, buf); if(ret == -1) break;