LS bientôt fini (problème de fermeture de BUFFER

This commit is contained in:
xdrm-brackets 2015-12-15 12:31:14 +01:00
parent bf2f7248da
commit a79a813458
4 changed files with 41 additions and 17 deletions

View File

@ -239,7 +239,7 @@ void MANAGE_RESPONSE(char** pAnswer, int* DUSER_SOCKET, int* DFTP_SOCKET){
/* (7) Mode passif => On lance les SOCKETS du BUS DE DONNEES /* (7) Mode passif => On lance les SOCKETS du BUS DE DONNEES
--------------------------------------------*/ --------------------------------------------*/
else if( strcmp(ftpCode, "227") == 0 ){ // on lance la SOCKET FTP du BUS DE DONNEES else if( strcmp(ftpCode, "227") == 0 ){ // on lance la SOCKET FTP du BUS DE DONNEES
strcpy(response, "200 Tout s'est bien passé.\n"); strcpy(response, "200 Connection établie.\n");
int a1, a2, a3, a4 = 0; int a1, a2, a3, a4 = 0;
int p1, p2 = 0; int p1, p2 = 0;
@ -265,13 +265,27 @@ void MANAGE_RESPONSE(char** pAnswer, int* DUSER_SOCKET, int* DFTP_SOCKET){
char BUFFER[maxBuffLen]; char BUFFER[maxBuffLen];
// on lit la SOCKET FTP // on lit la SOCKET FTP
if( sread(DFTP_SOCKET, BUFFER) == -1 ) printf("ERROR\n"); int nbRead = sread(DFTP_SOCKET, BUFFER);
else xPrint("[BUS_IN]: %s\n", BUFFER);
if( DEBUGMOD && nbRead == -1 ) printf("ERROR\n");
else if( DEBUGMOD ) xPrint("[BUS_IN]: %s\n", BUFFER);
// on redirige sur la SOCKET utilisateur // on redirige sur la SOCKET utilisateur
if( swrite(DUSER_SOCKET, BUFFER) == -1 ) printf("ERROR\n"); int nbWritten = swrite(DUSER_SOCKET, BUFFER);
else xPrint("[BUS_OUT]: %s\n", BUFFER);
if( DEBUGMOD && nbWritten == -1 ) printf("ERROR\n");
else if( DEBUGMOD ) xPrint("[BUS_OUT]: %s\n", BUFFER);
xPrint("BUS_FTP->BUS_CLIENT: %s\n", BUFFER);
close(*DFTP_SOCKET);
if( DEBUGMOD ) printf("BUS_FTP fermé\n");
close(*DUSER_SOCKET);
if( DEBUGMOD ) printf("BUS_USER fermé\n");
// strcpy(response, "226 Tout est ok\n");
strcpy(response, "150 Serveur en attente!\n");
} }
@ -279,7 +293,7 @@ void MANAGE_RESPONSE(char** pAnswer, int* DUSER_SOCKET, int* DFTP_SOCKET){
/* (9) Fin de transfert de données /* (9) Fin de transfert de données
--------------------------------------------*/ --------------------------------------------*/
else if( strcmp(ftpCode, "226") == 0 ){ // on ferme les SOCKETS du BUS DE DONNEES else if( strcmp(ftpCode, "226") == 0 ){ // on ferme les SOCKETS du BUS DE DONNEES
strcpy(response, *pAnswer); strcpy(response, "226 Fin de la transaction!\n");
close(*DUSER_SOCKET); close(*DUSER_SOCKET);
close(*DFTP_SOCKET); close(*DFTP_SOCKET);
} }
@ -319,3 +333,10 @@ int WAIT_SOCKET_UPDATE(int* pSocket, char* pBuffer){
// on retourne -1 si erreur, SINON 0 // on retourne -1 si erreur, SINON 0
return nbRead; return nbRead;
} }
void prefixFtpResponse(char* pBuffer, char* ftpCode){
}

View File

@ -71,16 +71,19 @@ void formatBuffer(char* pBuffer){
/* [1] On retire les "\n" et "\r" de la fin de la chaine /* [1] On retire les "\n" et "\r" de la fin de la chaine
============================================================*/ ============================================================*/
int i; int i = strlen(pBuffer);
for( i = strlen(pBuffer)-1 ; i >= 0 || pBuffer[i] != '\0' ; i-- ) while( pBuffer[strlen(pBuffer)-1] == '\r' || pBuffer[strlen(pBuffer)-1] == '\n' )
if( pBuffer[i] == '\n' || pBuffer[i] == '\r' ) // si c'est un retour chariot pBuffer[strlen(pBuffer)-1] = '\0';
pBuffer[i] = '\0'; // on efface
else // for( i = strlen(pBuffer)-1 ; i >= 0 || pBuffer[i] != '\0' ; i-- )
break; // if( pBuffer[i] == '\n' || pBuffer[i] == '\r' ) // si c'est un retour chariot
// pBuffer[i] = '\0'; // on efface
// else
// break;
// on ferme ensuite la chaîne // on ferme ensuite la chaîne
pBuffer[i] = '\0'; // pBuffer[i] = '\0';
/* [2] On ajoute "\r\n" à la fin /* [2] On ajoute "\r\n" à la fin
============================================================*/ ============================================================*/
@ -109,7 +112,7 @@ void read_stdin(char* pBuffer, unsigned long pLength){
int swrite(int* pSocket, char* pBuffer){ int swrite(int* pSocket, char* pBuffer){
if( *pSocket == -1 ) return -1; // si SOCKET fermée, on retourne une erreur if( *pSocket == -1 ) return -1; // si SOCKET fermée, on retourne une erreur
return write(*pSocket, pBuffer, strlen(pBuffer), MSG_DONTROUTE); return write(*pSocket, pBuffer, strlen(pBuffer));
} }
@ -124,7 +127,7 @@ int sread(int* pSocket, char* pBuffer){
// si on est déconnecté, on ferme la SOCKET // si on est déconnecté, on ferme la SOCKET
if( nbRead == 0 ){ if( nbRead == 0 ){
close(*pSocket); // close(*pSocket);
return -1; // on retourne une erreur return -1; // on retourne une erreur
} }

View File

@ -123,8 +123,8 @@ static void* testServer(char* localPort){
/* [8] On vide les buffers /* [8] On vide les buffers
============================================================================*/ ============================================================================*/
memset(BUFFER, '\0', sizeof(BUFFER)); // on vide le buffer memset(BUFFER, '\0', maxBuffLen); // on vide le buffer
ftp_response = NULL; memset(ftp_response, '\0', maxBuffLen);
} }
/* [9] Fermeture des connections (SOCKETS) /* [9] Fermeture des connections (SOCKETS)

BIN
test

Binary file not shown.