ReactOS 0.4.16-dev-306-g647d351
discard.c
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS simple TCP/IP services
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: base/services/tcpsvcs/discard.c
5 * PURPOSE: Receives input from a client and discards it
6 * COPYRIGHT: Copyright 2005 - 2008 Ged Murphy <gedmurphy@reactos.org>
7 *
8 */
9
10#include "tcpsvcs.h"
11
12#define BUFSIZE 1024
13
14static BOOL
16{
17 CHAR readBuffer[BUFSIZE];
18 INT readBytes;
19
20 do
21 {
22 readBytes = recv(sock, readBuffer, BUFSIZE, 0);
23 if (readBytes > 0)
24 {
25 TCHAR logBuf[256];
26
27 swprintf(logBuf, L"Discard: Received %d bytes from client", readBytes);
28 LogEvent(logBuf, 0, 0, LOG_FILE);
29 }
30 else if (readBytes == SOCKET_ERROR)
31 {
32 LogEvent(L"Discard: Socket Error", WSAGetLastError(), 0, LOG_ERROR);
33 return FALSE;
34 }
35 } while ((readBytes > 0) && (!bShutdown));
36
37 if (!bShutdown)
38 LogEvent(L"Discard: Connection closed by peer", 0, 0, LOG_FILE);
39
40 return TRUE;
41}
42
45{
46 DWORD retVal = 0;
47 SOCKET sock = (SOCKET)sock_;
48
50 {
51 LogEvent(L"Discard: ReceiveIncomingPackets failed", 0, 0, LOG_FILE);
52 retVal = 1;
53 }
54
55 LogEvent(L"Discard: Shutting connection down", 0, 0, LOG_FILE);
57 {
58 LogEvent(L"Discard: Connection is down.", 0, 0, LOG_FILE);
59 }
60 else
61 {
62 LogEvent(L"Discard: Connection shutdown failed", 0, 0, LOG_FILE);
63 retVal = 1;
64 }
65
66 LogEvent(L"Discard: Terminating thread", 0, 0, LOG_FILE);
67 ExitThread(retVal);
68}
VOID LogEvent(LPCWSTR lpMsg, DWORD errNum, DWORD exitCode, UINT flags)
Definition: log.c:196
static BOOL ReceiveIncomingPackets(SOCKET sock)
Definition: discard.c:15
DWORD WINAPI DiscardHandler(VOID *sock_)
Definition: discard.c:44
#define BUFSIZE
Definition: discard.c:12
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
VOID WINAPI ExitThread(IN DWORD uExitCode)
Definition: thread.c:365
#define swprintf
Definition: precomp.h:40
INT WSAAPI recv(IN SOCKET s, OUT CHAR FAR *buf, IN INT len, IN INT flags)
Definition: recv.c:23
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
#define L(x)
Definition: ntvdm.h:50
BOOL ShutdownConnection(SOCKET sock, BOOL bRec)
Definition: skelserver.c:126
Definition: tcpcore.h:1455
volatile BOOL bShutdown
Definition: tcpsvcs.c:16
#define LOG_ERROR
Definition: tcpsvcs.h:16
int32_t INT
Definition: typedefs.h:58
#define WINAPI
Definition: msvc.h:6
int PASCAL FAR WSAGetLastError(void)
Definition: dllmain.c:112
UINT_PTR SOCKET
Definition: winsock.h:47
#define SOCKET_ERROR
Definition: winsock.h:333
char TCHAR
Definition: xmlstorage.h:189
char CHAR
Definition: xmlstorage.h:175