Compare commits

...

2 Commits

Author SHA1 Message Date
EnderIce2
5d0e6c4026
Retry connection after EOF count exceeded 2024-05-07 22:09:04 +03:00
EnderIce2
418e53e7f7
Update LICENSE 2024-04-18 17:30:22 +03:00
2 changed files with 17 additions and 5 deletions

View File

@ -1,4 +1,4 @@
Copyright (c) 2023 EnderIce2 Copyright (c) 2024 EnderIce2
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@ -299,11 +299,13 @@ void ConnectToSocket(int fd)
} }
} }
HANDLE hOut = NULL;
void PipeBufferInThread(LPVOID lpParam) void PipeBufferInThread(LPVOID lpParam)
{ {
bridge_thread *bt = (bridge_thread *)lpParam; bridge_thread *bt = (bridge_thread *)lpParam;
print("In thread started using fd %d and pipe %#x\n", print("In thread started using fd %d and pipe %#x\n",
bt->fd, bt->hPipe); bt->fd, bt->hPipe);
int EOFCount = 0;
while (TRUE) while (TRUE)
{ {
char buffer[1024]; char buffer[1024];
@ -317,12 +319,22 @@ void PipeBufferInThread(LPVOID lpParam)
continue; continue;
} }
if (EOFCount > 4)
{
print("EOF count exceeded\n");
RetryNewConnection = TRUE;
TerminateThread(hOut, 0);
break;
}
if (unlikely(read == 0)) if (unlikely(read == 0))
{ {
print("EOF\n"); print("EOF\n");
Sleep(1000); Sleep(1000);
EOFCount++;
continue; continue;
} }
EOFCount = 0;
print("Reading %d bytes from unix pipe: \"", read); print("Reading %d bytes from unix pipe: \"", read);
for (int i = 0; i < read; i++) for (int i = 0; i < read; i++)
@ -523,10 +535,10 @@ NewConnection:
(LPVOID)&bt, (LPVOID)&bt,
0, NULL); 0, NULL);
HANDLE hOut = CreateThread(NULL, 0, hOut = CreateThread(NULL, 0,
(LPTHREAD_START_ROUTINE)PipeBufferOutThread, (LPTHREAD_START_ROUTINE)PipeBufferOutThread,
(LPVOID)&bt, (LPVOID)&bt,
0, NULL); 0, NULL);
if (hIn == NULL || hOut == NULL) if (hIn == NULL || hOut == NULL)
{ {