1 /* 2 * PROJECT: ReactOS simple TCP/IP services 3 * LICENSE: GPL - See COPYING in the top level directory 4 * FILE: base/services/tcpsvcs/daytime.c 5 * PURPOSE: Sends the current date and time to the client 6 * COPYRIGHT: Copyright 2005 - 2008 Ged Murphy <gedmurphy@reactos.org> 7 * 8 */ 9 10 #include "tcpsvcs.h" 11 12 #include <time.h> 13 14 static BOOL 15 SendTime(SOCKET sock, CHAR *time) 16 { 17 SIZE_T stringSize = strlen(time) + 1; 18 if (send(sock, time, stringSize, 0) == SOCKET_ERROR) 19 { 20 LogEvent(L"DayTime: Error sending data", WSAGetLastError(), 0, LOG_ERROR); 21 return FALSE; 22 } 23 24 return TRUE; 25 } 26 27 28 DWORD WINAPI 29 DaytimeHandler(VOID* Sock_) 30 { 31 struct tm *localTime; 32 time_t aclock; 33 CHAR *pszTime; 34 DWORD retVal = 0; 35 SOCKET Sock = (SOCKET)Sock_; 36 37 time(&aclock); 38 localTime = localtime(&aclock); 39 if (localTime) 40 { 41 pszTime = asctime(localTime); 42 if (!SendTime(Sock, pszTime)) 43 retVal = 1; 44 } 45 46 LogEvent(L"DayTime: Shutting connection down", 0, 0, LOG_FILE); 47 if (ShutdownConnection(Sock, FALSE)) 48 LogEvent(L"DayTime: Connection is down", 0, 0, LOG_FILE); 49 else 50 { 51 LogEvent(L"DayTime: Connection shutdown failed", 0, 0, LOG_FILE); 52 retVal = 1; 53 } 54 55 LogEvent(L"DayTime: Terminating thread", 0, 0, LOG_FILE); 56 ExitThread(retVal); 57 } 58