Provide a new `-b' flag to work around some broken HTTP/TCP implementations
that can't deal with a half-closed connection.
This commit is contained in:
parent
21cd47e85e
commit
0c8cc99e5b
@ -1,4 +1,4 @@
|
||||
.\" $Id: fetch.1,v 1.16 1997/02/22 23:43:32 wosch Exp $
|
||||
.\" $Id: fetch.1,v 1.17 1997/03/05 18:57:15 fenner Exp $
|
||||
.Dd July 2, 1996
|
||||
.Dt FETCH 1
|
||||
.Os FreeBSD 2.2
|
||||
@ -7,7 +7,7 @@
|
||||
.Nd retrieve a file by Uniform Resource Locator
|
||||
.Sh SYNOPSIS
|
||||
.Nm fetch
|
||||
.Op Fl MPamnpqr
|
||||
.Op Fl MPabmnpqr
|
||||
.Op Fl o Ar file
|
||||
.Ar URL
|
||||
.Op Ar ...
|
||||
@ -48,6 +48,12 @@ The following options are available:
|
||||
.Bl -tag -width Fl
|
||||
.It Fl a
|
||||
Automatically retry the transfer upon soft failures.
|
||||
.It Fl b
|
||||
Work around a bug in some
|
||||
.Tn HTTP
|
||||
servers which fail to correctly implement the
|
||||
.Tn TCP
|
||||
protocol.
|
||||
.It Fl c Ar dir
|
||||
The file to retrieve is in directory
|
||||
.Ar dir
|
||||
@ -301,3 +307,7 @@ Only the
|
||||
authentication mode is implemented for
|
||||
.Tn HTTP .
|
||||
This should be replaced by digest authentication.
|
||||
.Pp
|
||||
The
|
||||
.Fl b
|
||||
flag should not be necessary.
|
||||
|
@ -26,7 +26,7 @@
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: fetch.h,v 1.2 1997/01/31 19:55:49 wollman Exp $
|
||||
* $Id: fetch.h,v 1.3 1997/02/05 19:59:10 wollman Exp $
|
||||
*/
|
||||
|
||||
#ifndef fetch_h
|
||||
@ -49,6 +49,7 @@ struct fetch_state {
|
||||
int fs_linkfile; /* -l option */
|
||||
int fs_precious; /* -R option */
|
||||
int fs_auto_retry; /* -a option */
|
||||
int fs_linux_bug; /* -b option */
|
||||
time_t fs_modtime;
|
||||
void *fs_proto;
|
||||
int (*fs_retrieve)(struct fetch_state *);
|
||||
|
@ -26,7 +26,7 @@
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: http.c,v 1.5 1997/03/05 18:57:16 fenner Exp $
|
||||
* $Id: http.c,v 1.6 1997/03/06 20:01:32 jmg Exp $
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
@ -483,7 +483,7 @@ http_retrieve(struct fetch_state *fs)
|
||||
n = 0;
|
||||
msg.msg_control = 0;
|
||||
msg.msg_controllen = 0;
|
||||
msg.msg_flags = MSG_EOF;
|
||||
msg.msg_flags = fs->fs_linux_bug ? 0 : MSG_EOF;
|
||||
|
||||
#define addstr(Iov, N, Str) \
|
||||
do { \
|
||||
@ -575,7 +575,7 @@ http_retrieve(struct fetch_state *fs)
|
||||
fs->fs_status = "sending request message";
|
||||
setup_sigalrm();
|
||||
alarm(timo);
|
||||
if (sendmsg(s, &msg, MSG_EOF) < 0) {
|
||||
if (sendmsg(s, &msg, fs->fs_linux_bug ? 0 : MSG_EOF) < 0) {
|
||||
warn("sendmsg: %s", https->http_hostname);
|
||||
fclose(remote);
|
||||
return EX_OSERR;
|
||||
|
@ -24,7 +24,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/* $Id: main.c,v 1.39 1997/07/01 06:37:34 charnier Exp $ */
|
||||
/* $Id: main.c,v 1.40 1997/07/02 06:28:32 charnier Exp $ */
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
@ -73,7 +73,7 @@ main(int argc, char *const *argv)
|
||||
fs.fs_verbose = 1;
|
||||
change_to_dir = file_to_get = hostname = 0;
|
||||
|
||||
while ((c = getopt(argc, argv, "ac:D:f:h:HilLmMnNo:pPqRrT:vV:")) != -1) {
|
||||
while ((c = getopt(argc, argv, "abc:D:f:h:HilLmMnNo:pPqRrT:vV:")) != -1) {
|
||||
switch (c) {
|
||||
case 'D': case 'H': case 'I': case 'N': case 'L': case 'V':
|
||||
break; /* ncftp compatibility */
|
||||
@ -81,6 +81,11 @@ main(int argc, char *const *argv)
|
||||
case 'a':
|
||||
fs.fs_auto_retry = 1;
|
||||
break;
|
||||
|
||||
case 'b':
|
||||
fs.fs_linux_bug = 1;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
change_to_dir = optarg;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user