Session FTP close après FTP_GetDirList?

TLDR : On perd souvent la connexion FTP après un FTP_GetDirList mais uniquement quand des fichiers sont présents dans le dossier. Et au bout d’un moment, ça daigne fonctionner.


Bonjour à tous,

Notre application 4D se connecte au serveur FTP de l’un de nos fournisseurs pour récupérer des commandes.
Pour ce faire, on utilise les internet commands de manière standard :

FTP_Login
FTP_ChangeDir
FTP_GetDirList
FTP_Receive
FTP_Logout

La collecte se fait toutes les 5 minutes environ. Tant que le dossier sur le FTP ne contient pas de commande, tout se passe bien (toujours) : Il se connecte, récupère la liste des fichiers du dossier voulu, se rend compte qu’il n’y a que “.” et “…”, et se déconnecte.

Par contre, du moment qu’il y a d’autres fichiers dans le dossier, on reçoit une erreur juste après le FTP_GetDirList et la connexion est perdue.

L’erreur en question est “Erreur N°10069 : FTP session was closed by the server” (Parfois précédée de : “Erreur N°10071 : TCP session was closed by the server”).

Malgré l’erreur, FTP_GetDirList a bien fonctionné et m’a renvoyé la liste des fichiers dans les tableaux.

Le phénomène va se reproduire à chaque tentative de récupération toutes les 5 minutes, un nombre aléatoire de fois (parfois pendant plusieurs heures, parfois pendant juste 10 minutes), puis ça va enfin réussir et on va récupérer les fichiers et les supprimer.

Récupérer les fichiers en question via un client FTP classique fonctionne sans problème.

On récupère assez peu de fichiers via FTP, mais c’est en tout cas le seul serveur sur lequel on a ce souci (et dans l’entreprise précédente où j’étais et où 4D récupérait des fichiers par trouzaines sur des tas de serveurs, je n’avais jamais rencontré un tel phénomène).

J’ai contacté les propriétaires du serveur mais ils ont assez peu d’idées sur la cause du problème : Leur log semble indiquer qu’ils reçoivent une demande de déconnexion peu de temps après la connexion (j’ai vérifié notre code et je suis certain qu’elle ne vient pas de nous), et supposent qu’un équipement entre le client et le serveur bloque ou ne répond pas.

Une telle chose est-elle déjà arriver à l’un d’entre vous svp ? Auriez-vous quelques pistes ?

What is the version?

ACI0099619 fixes an issue (18.0 or 17.3) which goes like:

FTP_GetDirList sends an MDTM command to the server, but not all servers recognise this command. When that happens, subsequent FTP commands fail.

Ah yes sorry, I forgot that.
We’re on version 18.2 build 18.252363, on Mac OS 10.14.6

Et bonjour,

Si jamais ça arrive à quelqu’un d’autre, ce qui a marché pour nous a été de passer la session en mode actif avec un petit FTP_SetPassive (ID_SESSION;0) après la connexion.