MCPcopy Create free account
hub / github.com/3proxy/3proxy / threadfunc

Function threadfunc

src/proxymain.c:17–60  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15DWORD WINAPI threadfunc(LPVOID p) {
16#else
17void * threadfunc (void *p) {
18#endif
19 int i = 0;
20 if(param->srv->cbsock != INVALID_SOCKET){
21 SASIZETYPE size = sizeof(param->sinsr);
22 for(i=0; i<3; i++){
23 param->remsock = so._accept(param->srv->cbsock, (struct sockaddr*)&param->sinsr, &size);
24 if(param->remsock == INVALID_SOCKET) {
25 param->res = 13;
26 param->srv->logfunc(param, (unsigned char *)"Connect back accept() failed");
27 continue;
28 }
29#ifndef WITHMAIN
30 param->req = param->sinsr;
31 if(param->srv->acl) param->res = checkACL(param);
32 if(param->res){
33 param->srv->logfunc(param, (unsigned char *)"Connect back ACL failed");
34 so._closesocket(param->remsock);
35 param->remsock = INVALID_SOCKET;
36 continue;
37 }
38#endif
39 if(so._sendto(param->remsock, "C", 1, 0, (struct sockaddr*)&param->sinsr, size) != 1){
40 param->srv->logfunc(param, (unsigned char *)"Connect back sending command failed");
41 so._closesocket(param->remsock);
42 param->remsock = INVALID_SOCKET;
43 continue;
44 }
45
46 break;
47 }
48 }
49 if(i == 3){
50 freeparam(param);
51 }
52 else {
53 ((struct clientparam *) p)->srv->pf((struct clientparam *)p);
54 }
55#ifdef _WIN32
56 return 0;
57#else
58 return NULL;
59#endif
60}
61#undef param
62
63

Callers

nothing calls this directly

Calls 2

checkACLFunction · 0.85
freeparamFunction · 0.85

Tested by

no test coverage detected