aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2018-09-05 11:33:51 +0200
committerDaniel Stenberg <daniel@haxx.se>2018-09-05 11:34:03 +0200
commitf7208df7d9d5cd5e15e2d89237e828f32b63f135 (patch)
treeb729acfdd8fe43379ccf96664d43cecc1ae354fa
parent61a51e0e12ed84a504a0a10be6b166a910f22ff2 (diff)
pipelining: deprecated
Transparently. The related curl_multi_setopt() options all still returns OK when pipelining is selected. To re-enable the support, the single line change in lib/multi.c needs to be reverted. See docs/DEPRECATE.md Closes #2705
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING.34
-rw-r--r--lib/multi.c2
-rw-r--r--tests/data/DISABLED9
-rwxr-xr-xtests/runtests.pl110
4 files changed, 15 insertions, 110 deletions
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING.3
index 796ac3c77..a44294d55 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -57,6 +57,8 @@ Default, which means doing no attempts at pipelining or multiplexing.
.IP CURLPIPE_HTTP1 (1)
If this bit is set, libcurl will try to pipeline HTTP/1.1 requests on
connections that are already established and in use to hosts.
+
+This bit is deprecated and has no effect since version 7.62.0.
.IP CURLPIPE_MULTIPLEX (2)
If this bit is set, libcurl will try to multiplex the new transfer over an
existing connection if possible. This requires HTTP/2.
diff --git a/lib/multi.c b/lib/multi.c
index 0caf94322..2b2ff7049 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -2705,7 +2705,7 @@ CURLMcode curl_multi_setopt(struct Curl_multi *multi,
multi->push_userp = va_arg(param, void *);
break;
case CURLMOPT_PIPELINING:
- multi->pipelining = va_arg(param, long);
+ multi->pipelining = va_arg(param, long) & CURLPIPE_MULTIPLEX;
break;
case CURLMOPT_TIMERFUNCTION:
multi->timer_cb = va_arg(param, curl_multi_timer_callback);
diff --git a/tests/data/DISABLED b/tests/data/DISABLED
index 69eeec50d..0fb5b92e5 100644
--- a/tests/data/DISABLED
+++ b/tests/data/DISABLED
@@ -20,3 +20,12 @@
1903
# fnmatch differences are just too common to make testing them sensible
1307
+# Pipelining is deprecated
+530
+536
+584
+1900
+1901
+1902
+2033
+
diff --git a/tests/runtests.pl b/tests/runtests.pl
index e12c1429a..de0fd8587 100755
--- a/tests/runtests.pl
+++ b/tests/runtests.pl
@@ -142,7 +142,6 @@ my $GOPHER6PORT; # Gopher IPv6 server port
my $HTTPTLSPORT; # HTTP TLS (non-stunnel) server port
my $HTTPTLS6PORT; # HTTP TLS (non-stunnel) IPv6 server port
my $HTTPPROXYPORT; # HTTP proxy port, when using CONNECT
-my $HTTPPIPEPORT; # HTTP pipelining port
my $HTTPUNIXPATH; # HTTP server Unix domain socket path
my $HTTP2PORT; # HTTP/2 server port
my $DICTPORT; # DICT server port
@@ -717,11 +716,11 @@ sub stopserver {
# All servers relative to the given one must be stopped also
#
my @killservers;
- if($server =~ /^(ftp|http|imap|pop3|smtp|httppipe)s((\d*)(-ipv6|-unix|))$/) {
+ if($server =~ /^(ftp|http|imap|pop3|smtp)s((\d*)(-ipv6|-unix|))$/) {
# given a stunnel based ssl server, also kill non-ssl underlying one
push @killservers, "${1}${2}";
}
- elsif($server =~ /^(ftp|http|imap|pop3|smtp|httppipe)((\d*)(-ipv6|-unix|))$/) {
+ elsif($server =~ /^(ftp|http|imap|pop3|smtp)((\d*)(-ipv6|-unix|))$/) {
# given a non-ssl server, also kill stunnel based ssl piggybacking one
push @killservers, "${1}s${2}";
}
@@ -1297,7 +1296,6 @@ my %protofunc = ('http' => \&verifyhttp,
'pop3' => \&verifyftp,
'imap' => \&verifyftp,
'smtp' => \&verifyftp,
- 'httppipe' => \&verifyhttp,
'ftps' => \&verifyftp,
'tftp' => \&verifyftp,
'ssh' => \&verifyssh,
@@ -1436,12 +1434,6 @@ sub runhttpserver {
# basically the same, but another ID
$idnum = 2;
}
- elsif($alt eq "pipe") {
- # basically the same, but another ID
- $idnum = 3;
- $exe = "python $srcdir/http_pipe.py";
- $verbose_flag .= "1 ";
- }
elsif($alt eq "unix") {
# IP (protocol) is mutually exclusive with Unix sockets
$ipvnum = "unix";
@@ -1512,81 +1504,6 @@ sub runhttpserver {
}
#######################################################################
-# start the http server
-#
-sub runhttp_pipeserver {
- my ($proto, $verbose, $alt, $port) = @_;
- my $ip = $HOSTIP;
- my $ipvnum = 4;
- my $idnum = 1;
- my $server;
- my $srvrname;
- my $pidfile;
- my $logfile;
- my $flags = "";
-
- if($alt eq "ipv6") {
- # No IPv6
- }
-
- $server = servername_id($proto, $ipvnum, $idnum);
-
- $pidfile = $serverpidfile{$server};
-
- # don't retry if the server doesn't work
- if ($doesntrun{$pidfile}) {
- return (0,0);
- }
-
- my $pid = processexists($pidfile);
- if($pid > 0) {
- stopserver($server, "$pid");
- }
- unlink($pidfile) if(-f $pidfile);
-
- $srvrname = servername_str($proto, $ipvnum, $idnum);
-
- $logfile = server_logfilename($LOGDIR, $proto, $ipvnum, $idnum);
-
- $flags .= "--verbose 1 " if($debugprotocol);
- $flags .= "--pidfile \"$pidfile\" --logfile \"$logfile\" ";
- $flags .= "--id $idnum " if($idnum > 1);
- $flags .= "--port $port --srcdir \"$srcdir\"";
-
- my $cmd = "$srcdir/http_pipe.py $flags";
- my ($httppid, $pid2) = startnew($cmd, $pidfile, 15, 0);
-
- if($httppid <= 0 || !pidexists($httppid)) {
- # it is NOT alive
- logmsg "RUN: failed to start the $srvrname server\n";
- stopserver($server, "$pid2");
- displaylogs($testnumcheck);
- $doesntrun{$pidfile} = 1;
- return (0,0);
- }
-
- # Server is up. Verify that we can speak to it.
- my $pid3 = verifyserver($proto, $ipvnum, $idnum, $ip, $port);
- if(!$pid3) {
- logmsg "RUN: $srvrname server failed verification\n";
- # failed to talk to it properly. Kill the server and return failure
- stopserver($server, "$httppid $pid2");
- displaylogs($testnumcheck);
- $doesntrun{$pidfile} = 1;
- return (0,0);
- }
- $pid2 = $pid3;
-
- if($verbose) {
- logmsg "RUN: $srvrname server is now running PID $httppid\n";
- }
-
- sleep(1);
-
- return ($httppid, $pid2);
-}
-
-#######################################################################
# start the https stunnel based server
#
sub runhttpsserver {
@@ -2844,9 +2761,6 @@ sub checksystem {
# 'http-proxy' is used in test cases to do CONNECT through
push @protocols, 'http-proxy';
- # 'http-pipe' is the special server for testing pipelining
- push @protocols, 'http-pipe';
-
# 'none' is used in test cases to mean no server
push @protocols, 'none';
}
@@ -3118,7 +3032,6 @@ sub checksystem {
}
logmsg "\n";
}
- logmsg sprintf("* HTTP-PIPE/%d \n", $HTTPPIPEPORT);
if($has_unix) {
logmsg "* Unix socket paths:\n";
@@ -3155,7 +3068,6 @@ sub subVariables {
$$thing =~ s/%HTTPSPORT/$HTTPSPORT/g;
$$thing =~ s/%HTTP2PORT/$HTTP2PORT/g;
$$thing =~ s/%HTTPPORT/$HTTPPORT/g;
- $$thing =~ s/%HTTPPIPEPORT/$HTTPPIPEPORT/g;
$$thing =~ s/%PROXYPORT/$HTTPPROXYPORT/g;
$$thing =~ s/%IMAP6PORT/$IMAP6PORT/g;
@@ -4849,23 +4761,6 @@ sub startservers {
$run{'http-ipv6'}="$pid $pid2";
}
}
- elsif($what eq "http-pipe") {
- if($torture && $run{'http-pipe'} &&
- !responsive_http_server("http", $verbose, "pipe",
- $HTTPPIPEPORT)) {
- stopserver('http-pipe');
- }
- if(!$run{'http-pipe'}) {
- ($pid, $pid2) = runhttpserver("http", $verbose, "pipe",
- $HTTPPIPEPORT);
- if($pid <= 0) {
- return "failed starting HTTP-pipe server";
- }
- logmsg sprintf ("* pid http-pipe => %d %d\n", $pid, $pid2)
- if($verbose);
- $run{'http-pipe'}="$pid $pid2";
- }
- }
elsif($what eq "rtsp") {
if($torture && $run{'rtsp'} &&
!responsive_rtsp_server($verbose)) {
@@ -5578,7 +5473,6 @@ $GOPHER6PORT = $base++; # Gopher IPv6 server port
$HTTPTLSPORT = $base++; # HTTP TLS (non-stunnel) server port
$HTTPTLS6PORT = $base++; # HTTP TLS (non-stunnel) IPv6 server port
$HTTPPROXYPORT = $base++; # HTTP proxy port, when using CONNECT
-$HTTPPIPEPORT = $base++; # HTTP pipelining port
$HTTP2PORT = $base++; # HTTP/2 port
$DICTPORT = $base++; # DICT port
$SMBPORT = $base++; # SMB port