]> granicus.if.org Git - curl/commitdiff
tool: add --tcp-fastopen option
authorAlessandro Ghedini <alessandro@cloudflare.com>
Tue, 16 Feb 2016 12:21:34 +0000 (12:21 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 18 Apr 2016 21:17:19 +0000 (23:17 +0200)
docs/curl.1
src/tool_cfgable.h
src/tool_getparam.c
src/tool_help.c
src/tool_operate.c

index e7d92001a0de3956cc488c3e2e5cafa73e8482ad..2ed24dba01fd12854b24fa20b5412f2c286f801b 100644 (file)
@@ -1742,6 +1742,8 @@ curl -T "img[1-1000].png" ftp://ftp.example.com/upload/
 .IP "--tcp-nodelay"
 Turn on the TCP_NODELAY option. See the \fIcurl_easy_setopt(3)\fP man page for
 details about this option. (Added in 7.11.2)
+.IP "--tcp-fastopen"
+Enable use of TCP Fast Open (RFC7413). (Added in 7.49.0)
 .IP "--tftp-blksize <value>"
 (TFTP) Set TFTP BLKSIZE option (must be >512). This is the block size that
 curl will try to use when transferring data to or from a TFTP server. By
index e6f4e840d9cec612181193e6fd560605c3c06fb0..aa98fced5badb272db1f63c9c0b1b4d7eefafada 100644 (file)
@@ -174,6 +174,7 @@ struct OperationConfig {
                                Kerberos 5 and SPNEGO */
 
   bool tcp_nodelay;
+  bool tcp_fastopen;
   long req_retry;           /* number of retries */
   long retry_delay;         /* delay between retries (in seconds) */
   long retry_maxtime;       /* maximum time to keep retrying */
index 3dea7a775695febec9d89d6eceb2c6571f52fe40..b14cc4b2752ffff7cfd927934cfb962572f70d4a 100644 (file)
@@ -229,6 +229,7 @@ static const struct LongShort aliases[]= {
   {"Eq", "cert-status",              FALSE},
   {"Er", "false-start",              FALSE},
   {"Es", "ssl-no-revoke",            FALSE},
+  {"Et", "tcp-fastopen",             FALSE},
   {"f",  "fail",                     FALSE},
   {"F",  "form",                     TRUE},
   {"Fs", "form-string",              TRUE},
@@ -1415,6 +1416,10 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
           config->ssl_no_revoke = TRUE;
         break;
 
+      case 't': /* --tcp-fastopen */
+        config->tcp_fastopen = TRUE;
+        break;
+
       default: /* certificate file */
       {
         char *certname, *passphrase;
index 8b4551ba2895390dec43974c9b510f7d5a96b293..bb60ba0e39e09a49f295768b2395235e133d2b5d 100644 (file)
@@ -221,6 +221,7 @@ static const char *const helptext[] = {
   "     --ssl-no-revoke    Disable cert revocation checks (WinSSL)",
   "     --stderr FILE   Where to redirect stderr (use \"-\" for stdout)",
   "     --tcp-nodelay   Use the TCP_NODELAY option",
+  "     --tcp-fastopen  Use TCP Fast Open",
   " -t, --telnet-option OPT=VAL  Set telnet option",
   "     --tftp-blksize VALUE  Set TFTP BLKSIZE option (must be >512)",
   "     --tftp-no-options  Do not send TFTP options requests",
index deabf90b3c88a78c23f0d0bbedc661c1e626d5e6..ebd485c20a9d14ce5a6dadb2a59fd82ef23b4c70 100644 (file)
@@ -794,6 +794,9 @@ static CURLcode operate_do(struct GlobalConfig *global,
         if(config->tcp_nodelay)
           my_setopt(curl, CURLOPT_TCP_NODELAY, 1L);
 
+        if(config->tcp_fastopen)
+          my_setopt(curl, CURLOPT_TCP_FASTOPEN, 1L);
+
         /* where to store */
         my_setopt(curl, CURLOPT_WRITEDATA, &outs);
         if(metalink || !config->use_metalink)