Fix a socket leak in ftp_request() after that a connection is established.

Submitted by:	Sandvine Incorporated
Reviewed by:	des, emaste
Sponsored by:	Sandvine Incorporated
MFC:		1 week
This commit is contained in:
Attilio Rao 2009-11-25 14:57:07 +00:00
parent 1a6f09b826
commit f413289ee0

View File

@ -1122,17 +1122,19 @@ ftp_request(struct url *url, const char *op, struct url_stat *us,
/* change directory */
if (ftp_cwd(conn, url->doc) == -1)
return (NULL);
goto errsock;
/* stat file */
if (us && ftp_stat(conn, url->doc, us) == -1
&& fetchLastErrCode != FETCH_PROTO
&& fetchLastErrCode != FETCH_UNAVAIL)
return (NULL);
goto errsock;
/* just a stat */
if (strcmp(op, "STAT") == 0)
if (strcmp(op, "STAT") == 0) {
ftp_disconnect(conn);
return (FILE *)1; /* bogus return value */
}
if (strcmp(op, "STOR") == 0 || strcmp(op, "APPE") == 0)
oflag = O_WRONLY;
else
@ -1140,6 +1142,10 @@ ftp_request(struct url *url, const char *op, struct url_stat *us,
/* initiate the transfer */
return (ftp_transfer(conn, op, url->doc, oflag, url->offset, flags));
errsock:
ftp_disconnect(conn);
return (NULL);
}
/*