mirror of
https://github.com/rclone/rclone
synced 2024-12-23 14:23:44 +01:00
fshttp: add --expect-continue-timeout default 1s - fixes #3835
Before this change the expect/continue timeout was set to --conntimeout which was 60s by default which is too long to wait. This was noticed when using s3 with a proxy which apparently didn't support expect / continue properly. Set --expect-continue-timeout 0 to disable expect/continue.
This commit is contained in:
parent
6757244918
commit
277d94feac
@ -539,6 +539,19 @@ Do a trial run with no permanent changes. Use this to see what rclone
|
|||||||
would do without actually doing it. Useful when setting up the `sync`
|
would do without actually doing it. Useful when setting up the `sync`
|
||||||
command which deletes files in the destination.
|
command which deletes files in the destination.
|
||||||
|
|
||||||
|
### --expect-continue-timeout=TIME ###
|
||||||
|
|
||||||
|
This specifies the amount of time to wait for a server's first
|
||||||
|
response headers after fully writing the request headers if the
|
||||||
|
request has an "Expect: 100-continue" header. Not all backends support
|
||||||
|
using this.
|
||||||
|
|
||||||
|
Zero means no timeout and causes the body to be sent immediately,
|
||||||
|
without waiting for the server to approve. This time does not include
|
||||||
|
the time to send the request header.
|
||||||
|
|
||||||
|
The default is `1s`. Set to 0 to disable.
|
||||||
|
|
||||||
### --ignore-case-sync ###
|
### --ignore-case-sync ###
|
||||||
|
|
||||||
Using this option will cause rclone to ignore the case of the files
|
Using this option will cause rclone to ignore the case of the files
|
||||||
|
@ -54,6 +54,7 @@ type ConfigInfo struct {
|
|||||||
Transfers int
|
Transfers int
|
||||||
ConnectTimeout time.Duration // Connect timeout
|
ConnectTimeout time.Duration // Connect timeout
|
||||||
Timeout time.Duration // Data channel timeout
|
Timeout time.Duration // Data channel timeout
|
||||||
|
ExpectContinueTimeout time.Duration
|
||||||
Dump DumpFlags
|
Dump DumpFlags
|
||||||
InsecureSkipVerify bool // Skip server certificate verification
|
InsecureSkipVerify bool // Skip server certificate verification
|
||||||
DeleteMode DeleteMode
|
DeleteMode DeleteMode
|
||||||
@ -121,6 +122,7 @@ func NewConfig() *ConfigInfo {
|
|||||||
c.Transfers = 4
|
c.Transfers = 4
|
||||||
c.ConnectTimeout = 60 * time.Second
|
c.ConnectTimeout = 60 * time.Second
|
||||||
c.Timeout = 5 * 60 * time.Second
|
c.Timeout = 5 * 60 * time.Second
|
||||||
|
c.ExpectContinueTimeout = 1 * time.Second
|
||||||
c.DeleteMode = DeleteModeDefault
|
c.DeleteMode = DeleteModeDefault
|
||||||
c.MaxDelete = -1
|
c.MaxDelete = -1
|
||||||
c.LowLevelRetries = 10
|
c.LowLevelRetries = 10
|
||||||
|
@ -50,6 +50,7 @@ func AddFlags(flagSet *pflag.FlagSet) {
|
|||||||
flags.BoolVarP(flagSet, &fs.Config.DryRun, "dry-run", "n", fs.Config.DryRun, "Do a trial run with no permanent changes")
|
flags.BoolVarP(flagSet, &fs.Config.DryRun, "dry-run", "n", fs.Config.DryRun, "Do a trial run with no permanent changes")
|
||||||
flags.DurationVarP(flagSet, &fs.Config.ConnectTimeout, "contimeout", "", fs.Config.ConnectTimeout, "Connect timeout")
|
flags.DurationVarP(flagSet, &fs.Config.ConnectTimeout, "contimeout", "", fs.Config.ConnectTimeout, "Connect timeout")
|
||||||
flags.DurationVarP(flagSet, &fs.Config.Timeout, "timeout", "", fs.Config.Timeout, "IO idle timeout")
|
flags.DurationVarP(flagSet, &fs.Config.Timeout, "timeout", "", fs.Config.Timeout, "IO idle timeout")
|
||||||
|
flags.DurationVarP(flagSet, &fs.Config.ExpectContinueTimeout, "expect-continue-timeout", "", fs.Config.ExpectContinueTimeout, "Timeout when using expect / 100-continue in HTTP")
|
||||||
flags.BoolVarP(flagSet, &dumpHeaders, "dump-headers", "", false, "Dump HTTP headers - may contain sensitive info")
|
flags.BoolVarP(flagSet, &dumpHeaders, "dump-headers", "", false, "Dump HTTP headers - may contain sensitive info")
|
||||||
flags.BoolVarP(flagSet, &dumpBodies, "dump-bodies", "", false, "Dump HTTP headers and bodies - may contain sensitive info")
|
flags.BoolVarP(flagSet, &dumpBodies, "dump-bodies", "", false, "Dump HTTP headers and bodies - may contain sensitive info")
|
||||||
flags.BoolVarP(flagSet, &fs.Config.InsecureSkipVerify, "no-check-certificate", "", fs.Config.InsecureSkipVerify, "Do not verify the server SSL certificate. Insecure.")
|
flags.BoolVarP(flagSet, &fs.Config.InsecureSkipVerify, "no-check-certificate", "", fs.Config.InsecureSkipVerify, "Do not verify the server SSL certificate. Insecure.")
|
||||||
|
@ -178,7 +178,7 @@ func NewTransportCustom(ci *fs.ConfigInfo, customize func(*http.Transport)) http
|
|||||||
return dialContextTimeout(ctx, network, addr, ci)
|
return dialContextTimeout(ctx, network, addr, ci)
|
||||||
}
|
}
|
||||||
t.IdleConnTimeout = 60 * time.Second
|
t.IdleConnTimeout = 60 * time.Second
|
||||||
t.ExpectContinueTimeout = ci.ConnectTimeout
|
t.ExpectContinueTimeout = ci.ExpectContinueTimeout
|
||||||
|
|
||||||
// customize the transport if required
|
// customize the transport if required
|
||||||
if customize != nil {
|
if customize != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user