mirror of
https://github.com/kingk85/uFTP.git
synced 2025-07-25 13:16:12 +03:00
some bug fix
This commit is contained in:
@ -463,12 +463,17 @@ int parseCommandPasv(ftpDataType * data, int socketId)
|
|||||||
|
|
||||||
//if (data->clients[socketId].workerData.threadIsAlive == 1)
|
//if (data->clients[socketId].workerData.threadIsAlive == 1)
|
||||||
// {
|
// {
|
||||||
|
if (data->clients[socketId].workerData.threadIsAlive == 1)
|
||||||
returnCode = pthread_cancel(data->clients[socketId].workerData.workerThread);
|
{
|
||||||
|
returnCode = pthread_cancel(data->clients[socketId].workerData.workerThread);
|
||||||
|
}
|
||||||
printf("\npasv pthread_cancel = %d", returnCode);
|
printf("\npasv pthread_cancel = %d", returnCode);
|
||||||
//}
|
//}
|
||||||
printf("\npasv join ");
|
printf("\npasv join ");
|
||||||
returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn);
|
|
||||||
|
if (data->clients[socketId].workerData.threadHasBeenCreated == 1)
|
||||||
|
returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn);
|
||||||
|
|
||||||
printf("\npasv join ok");
|
printf("\npasv join ok");
|
||||||
data->clients[socketId].workerData.passiveModeOn = 1;
|
data->clients[socketId].workerData.passiveModeOn = 1;
|
||||||
data->clients[socketId].workerData.activeModeOn = 0;
|
data->clients[socketId].workerData.activeModeOn = 0;
|
||||||
@ -498,8 +503,14 @@ int parseCommandPort(ftpDataType * data, int socketId)
|
|||||||
//if (data->clients[socketId].workerData.threadIsAlive == 1)
|
//if (data->clients[socketId].workerData.threadIsAlive == 1)
|
||||||
//{
|
//{
|
||||||
returnCode = pthread_cancel(data->clients[socketId].workerData.workerThread);
|
returnCode = pthread_cancel(data->clients[socketId].workerData.workerThread);
|
||||||
|
<<<<<<< HEAD
|
||||||
//}
|
//}
|
||||||
returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn);
|
returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn);
|
||||||
|
=======
|
||||||
|
}
|
||||||
|
if (data->clients[socketId].workerData.threadHasBeenCreated == 1)
|
||||||
|
returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn);
|
||||||
|
>>>>>>> cd589876b02918418d1253f35b68349522f82294
|
||||||
data->clients[socketId].workerData.passiveModeOn = 0;
|
data->clients[socketId].workerData.passiveModeOn = 0;
|
||||||
data->clients[socketId].workerData.activeModeOn = 1;
|
data->clients[socketId].workerData.activeModeOn = 1;
|
||||||
returnCode = pthread_create(&data->clients[socketId].workerData.workerThread, NULL, connectionWorkerHandle, (void *) &data->clients[socketId].clientProgressiveNumber);
|
returnCode = pthread_create(&data->clients[socketId].workerData.workerThread, NULL, connectionWorkerHandle, (void *) &data->clients[socketId].clientProgressiveNumber);
|
||||||
@ -529,8 +540,12 @@ int parseCommandAbor(ftpDataType * data, int socketId)
|
|||||||
//if (data->clients[socketId].workerData.threadIsAlive == 1)
|
//if (data->clients[socketId].workerData.threadIsAlive == 1)
|
||||||
//{
|
//{
|
||||||
pthread_cancel(data->clients[socketId].workerData.workerThread);
|
pthread_cancel(data->clients[socketId].workerData.workerThread);
|
||||||
|
<<<<<<< HEAD
|
||||||
//}
|
//}
|
||||||
pthread_join(data->clients[socketId].workerData.workerThread, &pReturn);
|
pthread_join(data->clients[socketId].workerData.workerThread, &pReturn);
|
||||||
|
=======
|
||||||
|
}
|
||||||
|
>>>>>>> cd589876b02918418d1253f35b68349522f82294
|
||||||
|
|
||||||
returnCode = socketPrintf(data, socketId, "s", "426 ABORT\r\n");
|
returnCode = socketPrintf(data, socketId, "s", "426 ABORT\r\n");
|
||||||
if (returnCode <= 0)
|
if (returnCode <= 0)
|
||||||
|
19
ftpData.c
19
ftpData.c
@ -602,7 +602,8 @@ void resetWorkerData(ftpDataType *data, int clientId, int isInitialization)
|
|||||||
{
|
{
|
||||||
DYNV_VectorGeneric_Init(&data->clients[clientId].workerData.directoryInfo);
|
DYNV_VectorGeneric_Init(&data->clients[clientId].workerData.directoryInfo);
|
||||||
data->clients[clientId].workerData.theStorFile = NULL;
|
data->clients[clientId].workerData.theStorFile = NULL;
|
||||||
data->clients[clientId].workerData.workerThread = 0;
|
data->clients[clientId].workerData.threadHasBeenCreated = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pthread_mutex_init(&data->clients[clientId].workerData.conditionMutex, NULL) != 0)
|
if (pthread_mutex_init(&data->clients[clientId].workerData.conditionMutex, NULL) != 0)
|
||||||
@ -639,6 +640,7 @@ void resetClientData(ftpDataType *data, int clientId, int isInitialization)
|
|||||||
|
|
||||||
if (isInitialization != 1)
|
if (isInitialization != 1)
|
||||||
{
|
{
|
||||||
|
<<<<<<< HEAD
|
||||||
if (data->clients[clientId].workerData.threadIsAlive == 1)
|
if (data->clients[clientId].workerData.threadIsAlive == 1)
|
||||||
{
|
{
|
||||||
void *pReturn;
|
void *pReturn;
|
||||||
@ -651,13 +653,25 @@ void resetClientData(ftpDataType *data, int clientId, int isInitialization)
|
|||||||
pthread_cancel(data->clients[clientId].workerData.workerThread);
|
pthread_cancel(data->clients[clientId].workerData.workerThread);
|
||||||
pthread_join(data->clients[clientId].workerData.workerThread, &pReturn);
|
pthread_join(data->clients[clientId].workerData.workerThread, &pReturn);
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
void *pReturn;
|
||||||
|
if (data->clients[clientId].workerData.threadIsAlive == 1)
|
||||||
|
pthread_cancel(data->clients[clientId].workerData.workerThread);
|
||||||
|
>>>>>>> cd589876b02918418d1253f35b68349522f82294
|
||||||
|
|
||||||
pthread_mutex_destroy(&data->clients[clientId].writeMutex);
|
pthread_mutex_destroy(&data->clients[clientId].writeMutex);
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
#ifdef OPENSSL_ENABLED
|
#ifdef OPENSSL_ENABLED
|
||||||
SSL_free(data->clients[clientId].ssl);
|
SSL_free(data->clients[clientId].ssl);
|
||||||
SSL_free(data->clients[clientId].workerData.ssl);
|
SSL_free(data->clients[clientId].workerData.ssl);
|
||||||
#endif
|
#endif
|
||||||
|
=======
|
||||||
|
#ifdef OPENSSL_ENABLED
|
||||||
|
SSL_free(data->clients[clientId].ssl);
|
||||||
|
//SSL_free(data->clients[clientId].workerData.ssl);
|
||||||
|
#endif
|
||||||
|
>>>>>>> cd589876b02918418d1253f35b68349522f82294
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pthread_mutex_init(&data->clients[clientId].writeMutex, NULL) != 0)
|
if (pthread_mutex_init(&data->clients[clientId].writeMutex, NULL) != 0)
|
||||||
@ -665,6 +679,7 @@ void resetClientData(ftpDataType *data, int clientId, int isInitialization)
|
|||||||
printf("\nclientData->writeMutex init failed\n");
|
printf("\nclientData->writeMutex init failed\n");
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
data->clients[clientId].tlsIsNegotiating = 0;
|
data->clients[clientId].tlsIsNegotiating = 0;
|
||||||
data->clients[clientId].tlsIsEnabled = 0;
|
data->clients[clientId].tlsIsEnabled = 0;
|
||||||
data->clients[clientId].dataChannelIsTls = 0;
|
data->clients[clientId].dataChannelIsTls = 0;
|
||||||
|
@ -125,6 +125,7 @@ struct workerData
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
int threadIsAlive;
|
int threadIsAlive;
|
||||||
|
int threadHasBeenCreated;
|
||||||
int connectionPort;
|
int connectionPort;
|
||||||
int passiveModeOn;
|
int passiveModeOn;
|
||||||
int activeModeOn;
|
int activeModeOn;
|
||||||
|
@ -602,7 +602,7 @@ void runFtpServer(void)
|
|||||||
returnCode = socketPrintf(&ftpData, processingSock, "s", "500 Unknown command\r\n");
|
returnCode = socketPrintf(&ftpData, processingSock, "s", "500 Unknown command\r\n");
|
||||||
if (returnCode < 0)
|
if (returnCode < 0)
|
||||||
{
|
{
|
||||||
ftpData.clients[processingSock].closeTheClient = 1;
|
ftpData.clients[processingSock].closeTheClient = 1;
|
||||||
}
|
}
|
||||||
printf("\n COMMAND NOT SUPPORTED ********* %s", ftpData.clients[processingSock].buffer);
|
printf("\n COMMAND NOT SUPPORTED ********* %s", ftpData.clients[processingSock].buffer);
|
||||||
}
|
}
|
||||||
|
@ -460,6 +460,7 @@ void closeClient(ftpDataType * ftpData, int processingSocket)
|
|||||||
{
|
{
|
||||||
printf("\nQUIT FLAG SET!\n");
|
printf("\nQUIT FLAG SET!\n");
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
// if (ftpData->clients[processingSocket].workerData.threadIsAlive == 1)
|
// if (ftpData->clients[processingSocket].workerData.threadIsAlive == 1)
|
||||||
// {
|
// {
|
||||||
void *pReturn;
|
void *pReturn;
|
||||||
@ -467,6 +468,15 @@ void closeClient(ftpDataType * ftpData, int processingSocket)
|
|||||||
pthread_join(ftpData->clients[processingSocket].workerData.workerThread, &pReturn);
|
pthread_join(ftpData->clients[processingSocket].workerData.workerThread, &pReturn);
|
||||||
printf("\nQuit command received the Pasv Thread has been cancelled.");
|
printf("\nQuit command received the Pasv Thread has been cancelled.");
|
||||||
// }
|
// }
|
||||||
|
=======
|
||||||
|
if (ftpData->clients[processingSocket].workerData.threadIsAlive == 1)
|
||||||
|
{
|
||||||
|
void *pReturn;
|
||||||
|
pthread_cancel(ftpData->clients[processingSocket].workerData.workerThread);
|
||||||
|
//pthread_join(ftpData->clients[processingSocket].workerData.workerThread, &pReturn);
|
||||||
|
printf("\nQuit command received the Pasv Thread has been cancelled.");
|
||||||
|
}
|
||||||
|
>>>>>>> cd589876b02918418d1253f35b68349522f82294
|
||||||
|
|
||||||
FD_CLR(ftpData->clients[processingSocket].socketDescriptor, &ftpData->connectionData.rsetAll);
|
FD_CLR(ftpData->clients[processingSocket].socketDescriptor, &ftpData->connectionData.rsetAll);
|
||||||
FD_CLR(ftpData->clients[processingSocket].socketDescriptor, &ftpData->connectionData.wsetAll);
|
FD_CLR(ftpData->clients[processingSocket].socketDescriptor, &ftpData->connectionData.wsetAll);
|
||||||
@ -630,7 +640,7 @@ int evaluateClientSocketConnection(ftpDataType * ftpData)
|
|||||||
//Errors while accepting, socket will be closed
|
//Errors while accepting, socket will be closed
|
||||||
ftpData->clients[availableSocketIndex].closeTheClient = 1;
|
ftpData->clients[availableSocketIndex].closeTheClient = 1;
|
||||||
printf("\n2 Errno = %d", errno);
|
printf("\n2 Errno = %d", errno);
|
||||||
return 1;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user