summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
fb4eec0)
svn path=/branches/aicom-network-branch/; revision=45004
USHORT RemotePort;
NTSTATUS Status;
PNEIGHBOR_CACHE_ENTRY NCE;
USHORT RemotePort;
NTSTATUS Status;
PNEIGHBOR_CACHE_ENTRY NCE;
TI_DbgPrint(MID_TRACE,("Sending Datagram(%x %x %x %d)\n",
AddrFile, ConnInfo, BufferData, DataSize));
TI_DbgPrint(MID_TRACE,("Sending Datagram(%x %x %x %d)\n",
AddrFile, ConnInfo, BufferData, DataSize));
TI_DbgPrint(MID_TRACE,("About to get route to destination\n"));
TI_DbgPrint(MID_TRACE,("About to get route to destination\n"));
+ LockObject(AddrFile, &OldIrql);
+
LocalAddress = AddrFile->Address;
if (AddrIsUnspecified(&LocalAddress))
{
LocalAddress = AddrFile->Address;
if (AddrIsUnspecified(&LocalAddress))
{
* interface we're sending over
*/
if(!(NCE = RouteGetRouteToDestination( &RemoteAddress )))
* interface we're sending over
*/
if(!(NCE = RouteGetRouteToDestination( &RemoteAddress )))
+ {
+ UnlockObject(AddrFile, OldIrql);
return STATUS_NETWORK_UNREACHABLE;
return STATUS_NETWORK_UNREACHABLE;
LocalAddress = NCE->Interface->Unicast;
}
else
{
if(!(NCE = NBLocateNeighbor( &LocalAddress )))
LocalAddress = NCE->Interface->Unicast;
}
else
{
if(!(NCE = NBLocateNeighbor( &LocalAddress )))
+ {
+ UnlockObject(AddrFile, OldIrql);
return STATUS_INVALID_PARAMETER;
return STATUS_INVALID_PARAMETER;
}
Status = PrepareICMPPacket( NCE->Interface,
}
Status = PrepareICMPPacket( NCE->Interface,
DataSize );
if( !NT_SUCCESS(Status) )
DataSize );
if( !NT_SUCCESS(Status) )
+ {
+ UnlockObject(AddrFile, OldIrql);
TI_DbgPrint(MID_TRACE,("About to send datagram\n"));
if (!NT_SUCCESS(Status = IPSendDatagram( &Packet, NCE, ICMPSendPacketComplete, NULL )))
{
TI_DbgPrint(MID_TRACE,("About to send datagram\n"));
if (!NT_SUCCESS(Status = IPSendDatagram( &Packet, NCE, ICMPSendPacketComplete, NULL )))
{
+ UnlockObject(AddrFile, OldIrql);
FreeNdisPacket(Packet.NdisPacket);
return Status;
}
TI_DbgPrint(MID_TRACE,("Leaving\n"));
FreeNdisPacket(Packet.NdisPacket);
return Status;
}
TI_DbgPrint(MID_TRACE,("Leaving\n"));
+ UnlockObject(AddrFile, OldIrql);
+