[BACK]Return to ftp.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ftp

Diff for /src/usr.bin/ftp/ftp.c between version 1.35 and 1.36

version 1.35, 2000/05/03 19:50:41 version 1.36, 2000/06/21 19:22:54
Line 138 
Line 138 
         char hbuf[MAXHOSTNAMELEN];          char hbuf[MAXHOSTNAMELEN];
         char *cause = "unknown";          char *cause = "unknown";
   
           epsv4bad = 0;
   
         memset((char *)&hisctladdr, 0, sizeof (hisctladdr));          memset((char *)&hisctladdr, 0, sizeof (hisctladdr));
         memset(&hints, 0, sizeof(hints));          memset(&hints, 0, sizeof(hints));
         hints.ai_flags = AI_CANONNAME;          hints.ai_flags = AI_CANONNAME;
Line 1217 
Line 1219 
                         warn("setsockopt (ignored)");                          warn("setsockopt (ignored)");
                 switch (data_addr.su_family) {                  switch (data_addr.su_family) {
                 case AF_INET:                  case AF_INET:
                         result = command(pasvcmd = "EPSV");                          if (epsv4 && !epsv4bad) {
                         if (code / 10 == 22 && code != 229) {                                  result = command(pasvcmd = "EPSV");
                                 fputs(                                  if (code / 10 == 22 && code != 229) {
                                           fputs(
 "wrong server: return code must be 229\n",  "wrong server: return code must be 229\n",
                                         ttyout);                                                  ttyout);
                                 result = COMPLETE + 1;                                          result = COMPLETE + 1;
                                   }
                                   if (result != COMPLETE) {
                                           epsv4bad = 1;
                                           if (debug) {
                                                   fputs(
   "disabling epsv4 for this connection\n",
                                                       ttyout);
                                           }
                                   }
                         }                          }
                         if (result != COMPLETE)                          if (result != COMPLETE)
                                 result = command(pasvcmd = "PASV");                                  result = command(pasvcmd = "PASV");
Line 1464 
Line 1476 
   
                 switch (data_addr.su_family) {                  switch (data_addr.su_family) {
                 case AF_INET:                  case AF_INET:
                           if (!epsv4 || epsv4bad) {
                                   result = COMPLETE +1;
                                   break;
                           }
                           /*FALLTHROUGH*/
                 case AF_INET6:                  case AF_INET6:
                         af = (data_addr.su_family == AF_INET) ? 1 : 2;                          af = (data_addr.su_family == AF_INET) ? 1 : 2;
                         if (getnameinfo((struct sockaddr *)&data_addr,                          if (getnameinfo((struct sockaddr *)&data_addr,
Line 1473 
Line 1490 
                         } else {                          } else {
                                 result = command("EPRT |%d|%s|%d|",                                  result = command("EPRT |%d|%s|%d|",
                                         af, hname, ntohs(data_addr.su_port));                                          af, hname, ntohs(data_addr.su_port));
                                   if (result != COMPLETE) {
                                           epsv4bad = 1;
                                           if (debug) {
                                                   fputs(
   "disabling epsv4 for this connection\n",
                                                       ttyout);
                                           }
                                   }
                         }                          }
                         break;                          break;
                 default:                  default:

Legend:
Removed from v.1.35  
changed lines
  Added in v.1.36