On Tue, Nov 20, 2001 at 12:46:14PM -0500, war wrote: > I want to set a proxy for a particular session. > -c does not work either. > > [war@war war]$ lftp leon -e 'set ftp:proxy "192.168.168.253:3128"' > cd ok, cwd=/home/war > lftp [EMAIL PROTECTED]:~> ls > lftp: ftpclass.cc:1351: int Ftp::Do(): Assertion `peer!=0' failed. > Aborted
Attached patch should fix this. But you will have to set proxy before connecting to a host. You can add this to your ~/.lftp/rc: set ftp:proxy/ftp.leon.... http://192.168.168.253:3128 Substitute actual host name from your bookmark. Then this proxy will be automatically used when you open the bookmark. -- Alexander.
Index: ChangeLog =================================================================== RCS file: /home/lav/cvsroot/lftp/src/ChangeLog,v retrieving revision 1.516 diff -u -r1.516 ChangeLog --- ChangeLog 2001/11/20 15:11:58 1.516 +++ ChangeLog 2001/11/21 09:55:28 @@ -1,3 +1,9 @@ +2001-11-21 Alexander V. Lukyanov <[EMAIL PROTECTED]> + + * ftpclass.cc, ftpclass.h: don't assume peer!=0, copy control socket + name to member peer_sa. + * NetAccess.cc: remove obsolete commented out asserts. + 2001-11-20 Alexander V. Lukyanov <[EMAIL PROTECTED]> * DirColors.cc, DirColors.h: move resource definition to make it Index: NetAccess.cc =================================================================== RCS file: /home/lav/cvsroot/lftp/src/NetAccess.cc,v retrieving revision 1.45 diff -u -r1.45 NetAccess.cc --- NetAccess.cc 2001/11/14 11:25:12 1.45 +++ NetAccess.cc 2001/11/21 09:37:19 @@ -510,9 +510,6 @@ } retries++; -// assert(peer!=0); -// assert(peer_curr<peer_num); - return true; } Index: ftpclass.cc =================================================================== RCS file: /home/lav/cvsroot/lftp/src/ftpclass.cc,v retrieving revision 1.216 diff -u -r1.216 ftpclass.cc --- ftpclass.cc 2001/11/15 12:52:53 1.216 +++ ftpclass.cc 2001/11/21 09:48:26 @@ -88,7 +88,6 @@ #define FTPS_DATA_PORT 989 #define super NetAccess -#define peer_sa (peer[peer_curr]) #define is5XX(code) ((code)>=500 && (code)<600) #define is4XX(code) ((code)>=400 && (code)<500) @@ -1036,17 +1035,6 @@ takeover_time=now; } - // connected session (o) must have resolved address - if(!peer) - { - // copy resolved address so that it would be possible to create - // data connection. - xfree(peer); - peer=(sockaddr_u*)xmemdup(o->peer,o->peer_num*sizeof(*o->peer)); - peer_num=o->peer_num; - peer_curr=o->peer_curr; - } - if(level==0 && xstrcmp(real_cwd,o->real_cwd)) continue; @@ -1141,11 +1129,13 @@ if(!NextTry()) return MOVED; + peer_sa=peer[peer_curr]; control_sock=socket(peer_sa.sa.sa_family,SOCK_STREAM,IPPROTO_TCP); if(control_sock==-1) { if(peer_curr+1<peer_num) { + try_time=0; peer_curr++; retries--; return MOVED; @@ -1210,6 +1200,9 @@ if(!(res&POLLOUT)) goto usual_return; + addr_len=sizeof(peer_sa); + getsockname(control_sock,&peer_sa.sa,&addr_len); + #ifdef USE_SSL if(proxy?!strncmp(proxy,"ftps://",7):ftps) { @@ -1353,9 +1346,6 @@ } takeover_time=NO_DATE; - assert(peer!=0); - assert(peer_curr<peer_num); - if(home==0 && !RespQueueIsEmpty()) goto usual_return; @@ -3201,6 +3191,7 @@ assert(aborted_data_sock==-1); aborted_data_sock=o->aborted_data_sock; o->aborted_data_sock=-1; + peer_sa=o->peer_sa; if(peer_curr>=peer_num) peer_curr=0; type=o->type; Index: ftpclass.h =================================================================== RCS file: /home/lav/cvsroot/lftp/src/ftpclass.h,v retrieving revision 1.81 diff -u -r1.81 ftpclass.h --- ftpclass.h 2001/11/15 12:15:50 1.81 +++ ftpclass.h 2001/11/21 09:15:32 @@ -156,6 +156,7 @@ int control_sock; int data_sock; int aborted_data_sock; + sockaddr_u peer_sa; bool quit_sent; bool fixed_pasv; // had to fix PASV address.