mirror of
https://github.com/reactos/reactos.git
synced 2025-05-06 10:28:45 +00:00
Browsing netreg, the http registry server works.
svn path=/trunk/; revision=13111
This commit is contained in:
parent
fc779d75d9
commit
6ef8bebde9
4 changed files with 96 additions and 72 deletions
|
@ -61,7 +61,7 @@ NTSTATUS MakeSocketIntoConnection( PAFD_FCB FCB ) {
|
|||
ReceiveComplete,
|
||||
FCB );
|
||||
}
|
||||
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
|
|
@ -140,6 +140,7 @@ AfdCreateSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
|||
|
||||
VOID DestroySocket( PAFD_FCB FCB ) {
|
||||
UINT i;
|
||||
BOOLEAN ReturnEarly = FALSE;
|
||||
PAFD_IN_FLIGHT_REQUEST InFlightRequest[IN_FLIGHT_REQUESTS];
|
||||
|
||||
AFD_DbgPrint(MIN_TRACE,("Called (%x)\n", FCB));
|
||||
|
@ -161,8 +162,7 @@ VOID DestroySocket( PAFD_FCB FCB ) {
|
|||
FCB->ListenIrp.InFlightRequest,
|
||||
FCB->ReceiveIrp.InFlightRequest,
|
||||
FCB->SendIrp.InFlightRequest));
|
||||
SocketStateUnlock( FCB );
|
||||
return;
|
||||
ReturnEarly = TRUE;
|
||||
}
|
||||
|
||||
/* After PoolReeval, this FCB should not be involved in any outstanding
|
||||
|
@ -181,6 +181,8 @@ VOID DestroySocket( PAFD_FCB FCB ) {
|
|||
}
|
||||
|
||||
SocketStateUnlock( FCB );
|
||||
|
||||
if( ReturnEarly ) return;
|
||||
|
||||
if( FCB->Recv.Window )
|
||||
ExFreePool( FCB->Recv.Window );
|
||||
|
|
|
@ -208,6 +208,12 @@ AfdConnectedSocketWriteData(PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
|||
if( !(SendReq = LockRequest( Irp, IrpSp )) )
|
||||
return UnlockAndMaybeComplete( FCB, STATUS_NO_MEMORY, Irp, 0,
|
||||
NULL, FALSE );
|
||||
|
||||
/* Must lock buffers before handing off user data */
|
||||
SendReq->BufferArray = LockBuffers( SendReq->BufferArray,
|
||||
SendReq->BufferCount,
|
||||
NULL, NULL,
|
||||
FALSE, FALSE );
|
||||
|
||||
TdiBuildConnectionInfo( &TargetAddress, FCB->RemoteAddress );
|
||||
|
||||
|
@ -260,7 +266,7 @@ AfdConnectedSocketWriteData(PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
|||
SendReq->BufferCount,
|
||||
NULL, NULL,
|
||||
FALSE, FALSE );
|
||||
|
||||
|
||||
AFD_DbgPrint(MID_TRACE,("FCB->Send.BytesUsed = %d\n",
|
||||
FCB->Send.BytesUsed));
|
||||
|
||||
|
|
|
@ -82,74 +82,6 @@ VOID DispCancelComplete(
|
|||
}
|
||||
|
||||
|
||||
VOID DDKAPI DispCancelRequest(
|
||||
PDEVICE_OBJECT Device,
|
||||
PIRP Irp)
|
||||
/*
|
||||
* FUNCTION: Cancels an IRP
|
||||
* ARGUMENTS:
|
||||
* Device = Pointer to device object
|
||||
* Irp = Pointer to an I/O request packet
|
||||
*/
|
||||
{
|
||||
PIO_STACK_LOCATION IrpSp;
|
||||
PTRANSPORT_CONTEXT TranContext;
|
||||
PFILE_OBJECT FileObject;
|
||||
UCHAR MinorFunction;
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
|
||||
TI_DbgPrint(DEBUG_IRP, ("Called.\n"));
|
||||
|
||||
IrpSp = IoGetCurrentIrpStackLocation(Irp);
|
||||
FileObject = IrpSp->FileObject;
|
||||
TranContext = (PTRANSPORT_CONTEXT)FileObject->FsContext;
|
||||
MinorFunction = IrpSp->MinorFunction;
|
||||
|
||||
TI_DbgPrint(DEBUG_IRP, ("IRP at (0x%X) MinorFunction (0x%X) IrpSp (0x%X).\n", Irp, MinorFunction, IrpSp));
|
||||
|
||||
#ifdef DBG
|
||||
if (!Irp->Cancel)
|
||||
TI_DbgPrint(MIN_TRACE, ("Irp->Cancel is FALSE, should be TRUE.\n"));
|
||||
#endif
|
||||
|
||||
IoReleaseCancelSpinLock(Irp->CancelIrql);
|
||||
|
||||
/* Try canceling the request */
|
||||
switch(MinorFunction) {
|
||||
case TDI_SEND:
|
||||
case TDI_RECEIVE:
|
||||
/* FIXME: Close connection */
|
||||
break;
|
||||
|
||||
case TDI_SEND_DATAGRAM:
|
||||
if (FileObject->FsContext2 != (PVOID)TDI_TRANSPORT_ADDRESS_FILE) {
|
||||
TI_DbgPrint(MIN_TRACE, ("TDI_SEND_DATAGRAM, but no address file.\n"));
|
||||
break;
|
||||
}
|
||||
|
||||
/*DGCancelSendRequest(TranContext->Handle.AddressHandle, Irp);*/
|
||||
break;
|
||||
|
||||
case TDI_RECEIVE_DATAGRAM:
|
||||
if (FileObject->FsContext2 != (PVOID)TDI_TRANSPORT_ADDRESS_FILE) {
|
||||
TI_DbgPrint(MIN_TRACE, ("TDI_RECEIVE_DATAGRAM, but no address file.\n"));
|
||||
break;
|
||||
}
|
||||
|
||||
/*DGCancelReceiveRequest(TranContext->Handle.AddressHandle, Irp);*/
|
||||
break;
|
||||
|
||||
default:
|
||||
TI_DbgPrint(MIN_TRACE, ("Unknown IRP. MinorFunction (0x%X).\n", MinorFunction));
|
||||
break;
|
||||
}
|
||||
|
||||
if (Status != STATUS_PENDING)
|
||||
DispCancelComplete(FileObject);
|
||||
|
||||
TI_DbgPrint(MAX_TRACE, ("Leaving.\n"));
|
||||
}
|
||||
|
||||
VOID DispDataRequestComplete(
|
||||
PVOID Context,
|
||||
NTSTATUS Status,
|
||||
|
@ -204,6 +136,90 @@ VOID DispDataRequestComplete(
|
|||
}
|
||||
|
||||
|
||||
VOID DDKAPI DispCancelRequest(
|
||||
PDEVICE_OBJECT Device,
|
||||
PIRP Irp)
|
||||
/*
|
||||
* FUNCTION: Cancels an IRP
|
||||
* ARGUMENTS:
|
||||
* Device = Pointer to device object
|
||||
* Irp = Pointer to an I/O request packet
|
||||
*/
|
||||
{
|
||||
PIO_STACK_LOCATION IrpSp;
|
||||
PTRANSPORT_CONTEXT TranContext;
|
||||
PFILE_OBJECT FileObject;
|
||||
UCHAR MinorFunction;
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
|
||||
TI_DbgPrint(DEBUG_IRP, ("Called.\n"));
|
||||
|
||||
IrpSp = IoGetCurrentIrpStackLocation(Irp);
|
||||
FileObject = IrpSp->FileObject;
|
||||
TranContext = (PTRANSPORT_CONTEXT)FileObject->FsContext;
|
||||
MinorFunction = IrpSp->MinorFunction;
|
||||
|
||||
TI_DbgPrint(DEBUG_IRP, ("IRP at (0x%X) MinorFunction (0x%X) IrpSp (0x%X).\n", Irp, MinorFunction, IrpSp));
|
||||
|
||||
#ifdef DBG
|
||||
if (!Irp->Cancel)
|
||||
TI_DbgPrint(MIN_TRACE, ("Irp->Cancel is FALSE, should be TRUE.\n"));
|
||||
#endif
|
||||
|
||||
/* Try canceling the request */
|
||||
switch(MinorFunction) {
|
||||
case TDI_SEND:
|
||||
TCPDisconnect
|
||||
( TranContext->Handle.ConnectionContext,
|
||||
TDI_DISCONNECT_RELEASE,
|
||||
NULL,
|
||||
NULL,
|
||||
DispDataRequestComplete,
|
||||
Irp );
|
||||
break;
|
||||
|
||||
case TDI_RECEIVE:
|
||||
TCPDisconnect
|
||||
( TranContext->Handle.ConnectionContext,
|
||||
TDI_DISCONNECT_ABORT | TDI_DISCONNECT_RELEASE,
|
||||
NULL,
|
||||
NULL,
|
||||
DispDataRequestComplete,
|
||||
Irp );
|
||||
break;
|
||||
|
||||
case TDI_SEND_DATAGRAM:
|
||||
if (FileObject->FsContext2 != (PVOID)TDI_TRANSPORT_ADDRESS_FILE) {
|
||||
TI_DbgPrint(MIN_TRACE, ("TDI_SEND_DATAGRAM, but no address file.\n"));
|
||||
break;
|
||||
}
|
||||
|
||||
/*DGCancelSendRequest(TranContext->Handle.AddressHandle, Irp);*/
|
||||
break;
|
||||
|
||||
case TDI_RECEIVE_DATAGRAM:
|
||||
if (FileObject->FsContext2 != (PVOID)TDI_TRANSPORT_ADDRESS_FILE) {
|
||||
TI_DbgPrint(MIN_TRACE, ("TDI_RECEIVE_DATAGRAM, but no address file.\n"));
|
||||
break;
|
||||
}
|
||||
|
||||
/*DGCancelReceiveRequest(TranContext->Handle.AddressHandle, Irp);*/
|
||||
break;
|
||||
|
||||
default:
|
||||
TI_DbgPrint(MIN_TRACE, ("Unknown IRP. MinorFunction (0x%X).\n", MinorFunction));
|
||||
break;
|
||||
}
|
||||
|
||||
if (Status != STATUS_PENDING)
|
||||
DispCancelComplete(FileObject);
|
||||
else
|
||||
IoReleaseCancelSpinLock(Irp->CancelIrql);
|
||||
|
||||
TI_DbgPrint(MAX_TRACE, ("Leaving.\n"));
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS DispTdiAccept(
|
||||
PIRP Irp)
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue