- only pend the irp if we got a pending return from tcpip.
afd/info.c:
- info stub for blocking mode info.
afd/main.c:
- added disconnect plumbing.
- some reformatting, add break after each inactive case.
afd/read.c:
- early return for already closed socket.
- function to correctly complete pending recv irps on a closed socket.
- fixed read completion bug, content properly zeroed before buffer is
replenished.
- only attempt to fulfill read irps if we got data back.
- call ProcessClose in the no data case.
- major changes to AfdConnectedSocketRead due to connection close. we now
recognize the case where the request to tcpip returns zero bytes immediately
and take action, doing processclose.
afd/tdi.c:
- Added TdiDisconnect.
route.c:
- router: fixed routing bug. we used to reject the default route if the
address didn't match at least one bit of the target network, even if the
netmask is zero.
if.c:
- change RouterGetRoute to RouteGetRouteToDestination
tcp.c:
- simplify TCPReceiveData by removing eof clause. not needed.
- added SEL_FIN branch in signalling.
- added TCPTranslateError to TCPConnect
- added TCPDisconnect
dispatch.c:
- Implement disconnect
ip_output.c:
- Make a contiguous area from each output packet. We need to streamline this.
msafd:
- Added MsafdReturnWithErrno
- streamlined function returns with standardize errno selection.
svn path=/trunk/; revision=11933
- Added a DEBUG_LOCK that shows lock activity.
- Moved crummy externs from event.c to tcp.h
- Withdraw TCPCancelReceiveRequest: i didn't mean to commit that
- Added signalled sockets list to TCP so that we don't do reentrant stuff from
inside oskit. The signal list holds sockets that have been identified by
oskit as needing service.
- After packet receive and on the timer we drain this list, designalling each
socket and completing relevant irps.
- According to msdn, the io cancellation routine must release the cancel spin
lock, but we're entered with it acquired. Our implementation in ntoskrnl
matches this so the tcpip implementation was wrong. Removed acquire.
- DDKAPI on DispCancelRequest. Avoid some stack corruption on DPCs that now
shows up.
- Make sure to IpMarkIrpPending and not edit flags by hand on Irps in dispatch.
svn path=/trunk/; revision=11884
Make sure MiniQueueDpc is not called from PASSIVE_LEVEL.
Moved NdisMQueryInformationComplete so that the function and not the macro
is called from the DPC. This was breaking stuff severely.
The adapter lock needn't be held when doing MiniDequeueWorkItem because we're
at DISPATCH_LEVEL already by virtue of being in a DPC target.
protocol:
Make sure MiniQueueWorkItem is called at DISPATCH_LEVEL.
svn path=/trunk/; revision=11883