fixed -W, working on -r
This commit is contained in:
17
src/server.c
17
src/server.c
@ -250,6 +250,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
FD_CLR(i, &set);
|
||||
close(i);
|
||||
free(connfd);
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -280,7 +281,7 @@ int main(int argc, char *argv[]) {
|
||||
free(connfd);
|
||||
goto _cleanup;
|
||||
}
|
||||
args->connfd = connfd;
|
||||
args->connfd = *connfd;
|
||||
args->quit = &quit;
|
||||
args->request_pipe = request_pipe[1];
|
||||
args->q = queue;
|
||||
@ -293,13 +294,13 @@ int main(int argc, char *argv[]) {
|
||||
int r = addToThreadPool(pool, threadF, args);
|
||||
if (r == 0) {
|
||||
numberOfConnections++;
|
||||
free(connfd);
|
||||
continue; // aggiunto con successo
|
||||
}
|
||||
if (r < 0) // errore interno
|
||||
fprintf(stderr, "ERROR FATAL adding to the thread pool\n");
|
||||
else // coda dei pendenti piena
|
||||
fprintf(stderr, "ERROR SERVER TOO BUSY\n");
|
||||
free(args);
|
||||
close(*connfd);
|
||||
free(connfd);
|
||||
continue;
|
||||
@ -329,6 +330,7 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
break;
|
||||
}
|
||||
free(connfd);
|
||||
continue;
|
||||
}
|
||||
if (i == signal_pipe[0]) { // controllo se devo terminare
|
||||
@ -382,8 +384,7 @@ int main(int argc, char *argv[]) {
|
||||
free(connfd);
|
||||
goto _cleanup;
|
||||
}
|
||||
*connfd = i;
|
||||
args->connfd = connfd;
|
||||
args->connfd = i;
|
||||
args->quit = &quit;
|
||||
args->request_pipe = request_pipe[1];
|
||||
args->q = queue;
|
||||
@ -396,13 +397,13 @@ int main(int argc, char *argv[]) {
|
||||
int r = addToThreadPool(pool, threadF, args);
|
||||
if (r == 0) {
|
||||
numberOfConnections++;
|
||||
free(connfd);
|
||||
continue; // aggiunto con successo
|
||||
}
|
||||
if (r < 0) // errore interno
|
||||
fprintf(stderr, "ERROR FATAL adding to the thread pool\n");
|
||||
else // coda dei pendenti piena
|
||||
fprintf(stderr, "ERROR SERVER TOO BUSY\n");
|
||||
free(args);
|
||||
close(*connfd);
|
||||
free(connfd);
|
||||
continue;
|
||||
@ -436,6 +437,12 @@ int main(int argc, char *argv[]) {
|
||||
return 0;
|
||||
|
||||
_cleanup:
|
||||
if(queue) {
|
||||
destroyQueue(queue);
|
||||
}
|
||||
if(taglia) {
|
||||
taglia_del(taglia);
|
||||
}
|
||||
unlink(socketName);
|
||||
free(socketName);
|
||||
return -1;
|
||||
|
||||
Reference in New Issue
Block a user