removed poverlay_win

This commit is contained in:
Levi Neely 2024-06-28 19:52:38 +02:00
parent 7f5d687192
commit ea1c5454a6
2 changed files with 1 additions and 198 deletions

View File

@ -38,7 +38,7 @@ OBJ=pcompat.o psynclib.o plocks.o plibs.o pcallbacks.o pdiff.o pstatus.o papi.o
pscanner.o plist.o plocalscan.o plocalnotify.o pp2p.o pcrypto.o pssl.o pfileops.o\
ptree.o ppassword.o prunratelimit.o pmemlock.o pnotifications.o pexternalstatus.o\
publiclinks.o pbusinessaccount.o pcontacts.o poverlay.o poverlay_lin.o poverlay_mac.o\
poverlay_win.o pcompression.o pasyncnet.o ppathstatus.o pdevice_monitor.o ptools.o
pcompression.o pasyncnet.o ppathstatus.o pdevice_monitor.o ptools.o
OBJFS=pfs.o ppagecache.o pfsfolder.o pfstasks.o pfsupload.o pintervaltree.o pfsxattr.o\
pcloudcrypto.o pfscrypto.o pcrc32c.o pfsstatic.o plocks.o

View File

@ -1,197 +0,0 @@
/*
Copyright (c) 2013-2015 pCloud Ltd. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met: Redistributions of source code must retain the above
copyright notice, this list of conditions and the following
disclaimer. Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided with
the distribution. Neither the name of pCloud Ltd nor the names of
its contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL pCloud
Ltd BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
*/
#if defined(P_OS_WINDOWS)
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <strsafe.h>
#define POVERLAY_BUFSIZE 600
#define MAX_SEM_COUNT 10
#define THREADCOUNT 12
#include "poverlay.h"
LPCWSTR PORT = TEXT("\\\\.\\pipe\\pStatusPipe");
void overlay_main_loop(VOID)
{
BOOL fConnected = FALSE;
HANDLE hPipe = INVALID_HANDLE_VALUE;
HANDLE ghSemaphore;
DWORD dwWaitResult;
// The main loop creates an instance of the named pipe and
// then waits for a client to connect to it. When the client
// connects, a thread is created to handle communications
// with that client, and this loop is free to wait for the
// next client connect request. It is an infinite loop.
ghSemaphore = CreateSemaphore(
NULL, // default security attributes
MAX_SEM_COUNT, // initial count
MAX_SEM_COUNT, // maximum count
NULL); // unnamed semaphore
if (ghSemaphore == NULL)
{
printf("CreateSemaphore error: %d\n", GetLastError());
return 1;
}
for (;;)
{
//debug(D_NOTICE, "\nPipe Server: Main thread awaiting client connection on %s\n", PORT);
dwWaitResult = WaitForSingleObject(
ghSemaphore, // handle to semaphore
INFINITE); // zero-second time-out interval
hPipe = CreateNamedPipe(
PORT, // pipe name
PIPE_ACCESS_DUPLEX, // read/write access
PIPE_TYPE_MESSAGE | // message type pipe
PIPE_READMODE_MESSAGE | // message-read mode
PIPE_WAIT, // blocking mode
PIPE_UNLIMITED_INSTANCES, // max. instances
POVERLAY_BUFSIZE, // output buffer size
POVERLAY_BUFSIZE, // input buffer size
0, // client time-out
NULL); // default security attribute
if (hPipe == INVALID_HANDLE_VALUE)
{
//debug(D_NOTICE, "CreateNamedPipe failed, GLE=%d.\n", GetLastError());
return;
}
fConnected = ConnectNamedPipe(hPipe, NULL) ?
TRUE : (GetLastError() == ERROR_PIPE_CONNECTED);
if (fConnected)
{
//debug(D_NOTICE, "Client connected, creating a processing thread.\n");
// Create a thread for this client.
psync_run_thread1(
"Pipe request handle routine",
instance_thread, // thread proc
(LPVOID)hPipe // thread parameter
);
}
else
CloseHandle(hPipe);
if (!ReleaseSemaphore(
ghSemaphore, // handle to semaphore
1, // increase count by one
NULL)) // not interested in previous count
{
debug(D_WARNING,"ReleaseSemaphore error: %d\n", GetLastError());
}
}
CloseHandle(ghSemaphore);
return;
}
void instance_thread(LPVOID lpvParam)
{
DWORD cbBytesRead = 0, cbWritten = 0;
BOOL fSuccess = FALSE;
HANDLE hPipe = NULL;
char chBuf[POVERLAY_BUFSIZE];
message* request = NULL; //(message*)psync_malloc(POVERLAY_BUFSIZE);
message* reply = (message*)psync_malloc(POVERLAY_BUFSIZE);
// memset(request,0,sizeof(request));
memset(reply, 0, POVERLAY_BUFSIZE);
if (lpvParam == NULL)
{
debug(D_ERROR, "InstanceThread got an unexpected NULL value in lpvParam.\n");
return;
}
// debug(D_NOTICE, "InstanceThread created, receiving and processing messages.\n");
hPipe = (HANDLE)lpvParam;
while (1)
{
do
{
fSuccess = ReadFile(
hPipe, // pipe handle
chBuf, // buffer to receive reply
POVERLAY_BUFSIZE, // size of buffer
&cbBytesRead, // number of bytes read
NULL); // not overlapped
if (!fSuccess && GetLastError() != ERROR_MORE_DATA)
break;
} while (!fSuccess); // repeat loop if ERROR_MORE_DATA
if (!fSuccess || cbBytesRead == 0)
{
if (GetLastError() == ERROR_BROKEN_PIPE){
//debug(D_NOTICE, "InstanceThread: client disconnected.\n");
}
else{
//debug(D_NOTICE, "InstanceThread ReadFile failed, GLE=%d.\n", GetLastError());
}
break;
}
message *request = (message *)chBuf;
//debug(D_NOTICE, "bytes received %d buffer[%s]\n", cbBytesRead, chBuf);
get_answer_to_request(request, reply);
fSuccess = WriteFile(
hPipe, // handle to pipe
reply, // buffer to write from
reply->length, // number of bytes to write
&cbWritten, // number of bytes written
NULL); // not overlapped I/O
if (!fSuccess || reply->length != cbWritten)
{
//debug(D_NOTICE, "InstanceThread WriteFile failed, GLE=%d.\n", GetLastError());
break;
}
}
FlushFileBuffers(hPipe);
DisconnectNamedPipe(hPipe);
CloseHandle(hPipe);
psync_free(request);
psync_free(reply);
//debug(D_NOTICE, "InstanceThread exitting.\n");
return;
}
#endif //defined(P_OS_WINDOWS)