Index: ftp.cpp =================================================================== RCS file: /home/kde/kdebase/kfm/kioslave/ftp.cpp,v retrieving revision 1.21.4.4 retrieving revision 1.21.4.6 diff -u -p -r1.21.4.4 -r1.21.4.6 --- ftp.cpp 1999/04/06 14:37:47 1.21.4.4 +++ ftp.cpp 1999/05/20 18:50:43 1.21.4.6 @@ -349,7 +349,7 @@ int KProtocolFTP::ftpPasv(void) struct sockaddr sa; struct sockaddr_in in; } sin; - struct linger lng = { 0, 0 }; + struct linger lng = { 1, 120 }; pasv=1; if (sDatal != -1) @@ -400,6 +400,8 @@ int KProtocolFTP::ftpPasv(void) return 0; } + if (setsockopt(sDatal, SOL_SOCKET, SO_KEEPALIVE, (char *) &on, (int) sizeof(on)) < 0) + perror("Keepalive not allowed."); if (setsockopt(sDatal, SOL_SOCKET,SO_LINGER, (char *) &lng,(int) sizeof (lng)) < 0) perror("Linger mode was not allowed."); return 1; @@ -460,14 +462,14 @@ int KProtocolFTP::ftpMkdir( const char * FD_ZERO(&mask); FD_SET(sDatal,&mask); + if (pasv == 1) + { + return sDatal; + } if (select( sDatal + 1, &mask,NULL,NULL, 0L) == 0) { close(sDatal); return -2; - } - if (pasv == 1) - { - return sDatal; } l = sizeof(addr);