LS bientôt fini (problème de fermeture de BUFFER
This commit is contained in:
parent
bf2f7248da
commit
a79a813458
33
dep/server.c
33
dep/server.c
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -318,4 +332,11 @@ 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){
|
||||||
|
|
||||||
}
|
}
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue