* - UDP Handling
*/
#include "ipstack.h"
-#include <tpl_drv_common.h>
+#include <api_drv_common.h>
#include "udp.h"
#define UDP_ALLOC_BASE 0xC000
// Check for remote address restriction
if(chan->RemoteMask)
{
- if(chan->Remote.AddrType != Interface->Type) continue;
+ if(chan->Remote.AddrType != Interface->Type)
+ continue;
if(!IPStack_CompareAddress(Interface->Type, Address,
&chan->Remote.Addr, chan->RemoteMask)
)
else
chan->QueueEnd = chan->Queue = pack;
SHORTREL(&chan->lQueue);
+ VFS_MarkAvaliable(&chan->Node, 1);
Mutex_Release(&glUDP_Channels);
return 1;
}
tUDPEndpoint *ep;
int ofs;
- if(chan->LocalPort == 0) return 0;
+ if(chan->LocalPort == 0) {
+ Log_Notice("UDP", "Channel %p sent with no local port", chan);
+ return 0;
+ }
while(chan->Queue == NULL) Threads_Yield();
ofs = 4 + IPStack_GetAddressSize(pack->Remote.AddrType);
if(Length < ofs) {
free(pack);
+ Log_Notice("UDP", "Insuficient space for header in buffer (%i < %i)", (int)Length, ofs);
return 0;
}
data = (char*)Buffer + ofs;
- UDP_SendPacketTo(chan, ep->AddrType, &ep->Addr, ep->Port, Buffer, (size_t)Length - ofs);
+ UDP_SendPacketTo(chan, ep->AddrType, &ep->Addr, ep->Port, data, (size_t)Length - ofs);
return 0;
}