=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ftp/fetch.c,v retrieving revision 1.165 retrieving revision 1.166 diff -c -r1.165 -r1.166 *** src/usr.bin/ftp/fetch.c 2018/02/07 23:01:09 1.165 --- src/usr.bin/ftp/fetch.c 2018/02/07 23:04:50 1.166 *************** *** 1,4 **** ! /* $OpenBSD: fetch.c,v 1.165 2018/02/07 23:01:09 procter Exp $ */ /* $NetBSD: fetch.c,v 1.14 1997/08/18 10:20:20 lukem Exp $ */ /*- --- 1,4 ---- ! /* $OpenBSD: fetch.c,v 1.166 2018/02/07 23:04:50 procter Exp $ */ /* $NetBSD: fetch.c,v 1.14 1997/08/18 10:20:20 lukem Exp $ */ /*- *************** *** 189,195 **** const char * volatile savefile; char * volatile proxyurl = NULL; char *credentials = NULL; ! volatile int s = -1, out = -1; volatile sig_t oldintr, oldinti; FILE *fin = NULL; off_t hashbytes; --- 189,195 ---- const char * volatile savefile; char * volatile proxyurl = NULL; char *credentials = NULL; ! volatile int fd = -1, out = -1; volatile sig_t oldintr, oldinti; FILE *fin = NULL; off_t hashbytes; *************** *** 364,376 **** if (isfileurl) { struct stat st; ! s = open(path, O_RDONLY); ! if (s == -1) { warn("Can't open file %s", path); goto cleanup_url_get; } ! if (fstat(s, &st) == -1) filesize = -1; else filesize = st.st_size; --- 364,376 ---- if (isfileurl) { struct stat st; ! fd = open(path, O_RDONLY); ! if (fd == -1) { warn("Can't open file %s", path); goto cleanup_url_get; } ! if (fstat(fd, &st) == -1) filesize = -1; else filesize = st.st_size; *************** *** 399,405 **** warn("Can't fstat %s", savefile); goto cleanup_url_get; } ! if (lseek(s, st.st_size, SEEK_SET) == -1) { warn("Can't lseek %s", path); goto cleanup_url_get; } --- 399,405 ---- warn("Can't fstat %s", savefile); goto cleanup_url_get; } ! if (lseek(fd, st.st_size, SEEK_SET) == -1) { warn("Can't lseek %s", path); goto cleanup_url_get; } *************** *** 429,435 **** /* Finally, suck down the file. */ i = 0; oldinti = signal(SIGINFO, psummary); ! while ((len = read(s, buf, buflen)) > 0) { bytes += len; for (cp = buf; len > 0; len -= i, cp += i) { if ((i = write(out, cp, len)) == -1) { --- 429,435 ---- /* Finally, suck down the file. */ i = 0; oldinti = signal(SIGINFO, psummary); ! while ((len = read(fd, buf, buflen)) > 0) { bytes += len; for (cp = buf; len > 0; len -= i, cp += i) { if ((i = write(out, cp, len)) == -1) { *************** *** 535,541 **** if (verbose) setvbuf(ttyout, NULL, _IOLBF, 0); ! s = -1; for (res = res0; res; res = res->ai_next) { if (getnameinfo(res->ai_addr, res->ai_addrlen, hbuf, sizeof(hbuf), NULL, 0, NI_NUMERICHOST) != 0) --- 535,541 ---- if (verbose) setvbuf(ttyout, NULL, _IOLBF, 0); ! fd = -1; for (res = res0; res; res = res->ai_next) { if (getnameinfo(res->ai_addr, res->ai_addrlen, hbuf, sizeof(hbuf), NULL, 0, NI_NUMERICHOST) != 0) *************** *** 543,550 **** if (verbose) fprintf(ttyout, "Trying %s...\n", hbuf); ! s = socket(res->ai_family, res->ai_socktype, res->ai_protocol); ! if (s == -1) { cause = "socket"; continue; } --- 543,550 ---- if (verbose) fprintf(ttyout, "Trying %s...\n", hbuf); ! fd = socket(res->ai_family, res->ai_socktype, res->ai_protocol); ! if (fd == -1) { cause = "socket"; continue; } *************** *** 552,568 **** #ifndef SMALL if (srcaddr) { if (ares->ai_family != res->ai_family) { ! close(s); ! s = -1; errno = EINVAL; cause = "bind"; continue; } ! if (bind(s, ares->ai_addr, ares->ai_addrlen) < 0) { save_errno = errno; ! close(s); errno = save_errno; ! s = -1; cause = "bind"; continue; } --- 552,568 ---- #ifndef SMALL if (srcaddr) { if (ares->ai_family != res->ai_family) { ! close(fd); ! fd = -1; errno = EINVAL; cause = "bind"; continue; } ! if (bind(fd, ares->ai_addr, ares->ai_addrlen) < 0) { save_errno = errno; ! close(fd); errno = save_errno; ! fd = -1; cause = "bind"; continue; } *************** *** 574,587 **** alarmtimer(connect_timeout); } ! for (error = connect(s, res->ai_addr, res->ai_addrlen); ! error != 0 && errno == EINTR; error = connect_wait(s)) continue; if (error != 0) { save_errno = errno; ! close(s); errno = save_errno; ! s = -1; cause = "connect"; continue; } --- 574,587 ---- alarmtimer(connect_timeout); } ! for (error = connect(fd, res->ai_addr, res->ai_addrlen); ! error != 0 && errno == EINTR; error = connect_wait(fd)) continue; if (error != 0) { save_errno = errno; ! close(fd); errno = save_errno; ! fd = -1; cause = "connect"; continue; } *************** *** 595,601 **** #ifndef NOSSL if (proxyenv && sslhost) ! proxy_connect(s, sslhost, credentials); #endif /* !NOSSL */ break; } --- 595,601 ---- #ifndef NOSSL if (proxyenv && sslhost) ! proxy_connect(fd, sslhost, credentials); #endif /* !NOSSL */ break; } *************** *** 604,610 **** if (srcaddr) freeaddrinfo(ares); #endif /* !SMALL */ ! if (s < 0) { warn("%s", cause); goto cleanup_url_get; } --- 604,610 ---- if (srcaddr) freeaddrinfo(ares); #endif /* !SMALL */ ! if (fd < 0) { warn("%s", cause); goto cleanup_url_get; } *************** *** 630,646 **** tls_error(tls)); goto cleanup_url_get; } ! if (tls_connect_socket(tls, s, sslhost) != 0) { fprintf(ttyout, "SSL failure: %s\n", tls_error(tls)); goto cleanup_url_get; } } else { ! fin = fdopen(s, "r+"); ! s = -1; } #else /* !NOSSL */ ! fin = fdopen(s, "r+"); ! s = -1; #endif /* !NOSSL */ #ifdef SMALL --- 630,646 ---- tls_error(tls)); goto cleanup_url_get; } ! if (tls_connect_socket(tls, fd, sslhost) != 0) { fprintf(ttyout, "SSL failure: %s\n", tls_error(tls)); goto cleanup_url_get; } } else { ! fin = fdopen(fd, "r+"); ! fd = -1; } #else /* !NOSSL */ ! fin = fdopen(fd, "r+"); ! fd = -1; #endif /* !NOSSL */ #ifdef SMALL *************** *** 918,926 **** fclose(fin); fin = NULL; } ! if (s != -1) { ! close(s); ! s = -1; } rval = url_get(redirurl, proxyenv, savefile, lastfile); free(redirurl); --- 918,926 ---- fclose(fin); fin = NULL; } ! if (fd != -1) { ! close(fd); ! fd = -1; } rval = url_get(redirurl, proxyenv, savefile, lastfile); free(redirurl); *************** *** 1049,1057 **** fclose(fin); fin = NULL; } ! if (s != -1) { ! close(s); ! s = -1; } if (out >= 0 && out != fileno(stdout)) close(out); --- 1049,1057 ---- fclose(fin); fin = NULL; } ! if (fd != -1) { ! close(fd); ! fd = -1; } if (out >= 0 && out != fileno(stdout)) close(out);