1
0
mirror of https://github.com/moparisthebest/curl synced 2024-11-16 06:25:03 -05:00

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
This commit is contained in:
Daniel Stenberg 2018-09-05 11:33:51 +02:00
parent 61a51e0e12
commit f7208df7d9
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
4 changed files with 15 additions and 110 deletions

View File

@ -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 .\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms .\" * 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) .IP CURLPIPE_HTTP1 (1)
If this bit is set, libcurl will try to pipeline HTTP/1.1 requests on 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. 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) .IP CURLPIPE_MULTIPLEX (2)
If this bit is set, libcurl will try to multiplex the new transfer over an If this bit is set, libcurl will try to multiplex the new transfer over an
existing connection if possible. This requires HTTP/2. existing connection if possible. This requires HTTP/2.

View File

@ -2705,7 +2705,7 @@ CURLMcode curl_multi_setopt(struct Curl_multi *multi,
multi->push_userp = va_arg(param, void *); multi->push_userp = va_arg(param, void *);
break; break;
case CURLMOPT_PIPELINING: case CURLMOPT_PIPELINING:
multi->pipelining = va_arg(param, long); multi->pipelining = va_arg(param, long) & CURLPIPE_MULTIPLEX;
break; break;
case CURLMOPT_TIMERFUNCTION: case CURLMOPT_TIMERFUNCTION:
multi->timer_cb = va_arg(param, curl_multi_timer_callback); multi->timer_cb = va_arg(param, curl_multi_timer_callback);

View File

@ -20,3 +20,12 @@
1903 1903
# fnmatch differences are just too common to make testing them sensible # fnmatch differences are just too common to make testing them sensible
1307 1307
# Pipelining is deprecated
530
536
584
1900
1901
1902
2033

View File

@ -142,7 +142,6 @@ my $GOPHER6PORT; # Gopher IPv6 server port
my $HTTPTLSPORT; # HTTP TLS (non-stunnel) server port my $HTTPTLSPORT; # HTTP TLS (non-stunnel) server port
my $HTTPTLS6PORT; # HTTP TLS (non-stunnel) IPv6 server port my $HTTPTLS6PORT; # HTTP TLS (non-stunnel) IPv6 server port
my $HTTPPROXYPORT; # HTTP proxy port, when using CONNECT my $HTTPPROXYPORT; # HTTP proxy port, when using CONNECT
my $HTTPPIPEPORT; # HTTP pipelining port
my $HTTPUNIXPATH; # HTTP server Unix domain socket path my $HTTPUNIXPATH; # HTTP server Unix domain socket path
my $HTTP2PORT; # HTTP/2 server port my $HTTP2PORT; # HTTP/2 server port
my $DICTPORT; # DICT server port my $DICTPORT; # DICT server port
@ -717,11 +716,11 @@ sub stopserver {
# All servers relative to the given one must be stopped also # All servers relative to the given one must be stopped also
# #
my @killservers; 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 # given a stunnel based ssl server, also kill non-ssl underlying one
push @killservers, "${1}${2}"; 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 # given a non-ssl server, also kill stunnel based ssl piggybacking one
push @killservers, "${1}s${2}"; push @killservers, "${1}s${2}";
} }
@ -1297,7 +1296,6 @@ my %protofunc = ('http' => \&verifyhttp,
'pop3' => \&verifyftp, 'pop3' => \&verifyftp,
'imap' => \&verifyftp, 'imap' => \&verifyftp,
'smtp' => \&verifyftp, 'smtp' => \&verifyftp,
'httppipe' => \&verifyhttp,
'ftps' => \&verifyftp, 'ftps' => \&verifyftp,
'tftp' => \&verifyftp, 'tftp' => \&verifyftp,
'ssh' => \&verifyssh, 'ssh' => \&verifyssh,
@ -1436,12 +1434,6 @@ sub runhttpserver {
# basically the same, but another ID # basically the same, but another ID
$idnum = 2; $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") { elsif($alt eq "unix") {
# IP (protocol) is mutually exclusive with Unix sockets # IP (protocol) is mutually exclusive with Unix sockets
$ipvnum = "unix"; $ipvnum = "unix";
@ -1511,81 +1503,6 @@ sub runhttpserver {
return ($httppid, $pid2); return ($httppid, $pid2);
} }
#######################################################################
# 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 # start the https stunnel based server
# #
@ -2844,9 +2761,6 @@ sub checksystem {
# 'http-proxy' is used in test cases to do CONNECT through # 'http-proxy' is used in test cases to do CONNECT through
push @protocols, 'http-proxy'; 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 # 'none' is used in test cases to mean no server
push @protocols, 'none'; push @protocols, 'none';
} }
@ -3118,7 +3032,6 @@ sub checksystem {
} }
logmsg "\n"; logmsg "\n";
} }
logmsg sprintf("* HTTP-PIPE/%d \n", $HTTPPIPEPORT);
if($has_unix) { if($has_unix) {
logmsg "* Unix socket paths:\n"; logmsg "* Unix socket paths:\n";
@ -3155,7 +3068,6 @@ sub subVariables {
$$thing =~ s/%HTTPSPORT/$HTTPSPORT/g; $$thing =~ s/%HTTPSPORT/$HTTPSPORT/g;
$$thing =~ s/%HTTP2PORT/$HTTP2PORT/g; $$thing =~ s/%HTTP2PORT/$HTTP2PORT/g;
$$thing =~ s/%HTTPPORT/$HTTPPORT/g; $$thing =~ s/%HTTPPORT/$HTTPPORT/g;
$$thing =~ s/%HTTPPIPEPORT/$HTTPPIPEPORT/g;
$$thing =~ s/%PROXYPORT/$HTTPPROXYPORT/g; $$thing =~ s/%PROXYPORT/$HTTPPROXYPORT/g;
$$thing =~ s/%IMAP6PORT/$IMAP6PORT/g; $$thing =~ s/%IMAP6PORT/$IMAP6PORT/g;
@ -4849,23 +4761,6 @@ sub startservers {
$run{'http-ipv6'}="$pid $pid2"; $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") { elsif($what eq "rtsp") {
if($torture && $run{'rtsp'} && if($torture && $run{'rtsp'} &&
!responsive_rtsp_server($verbose)) { !responsive_rtsp_server($verbose)) {
@ -5578,7 +5473,6 @@ $GOPHER6PORT = $base++; # Gopher IPv6 server port
$HTTPTLSPORT = $base++; # HTTP TLS (non-stunnel) server port $HTTPTLSPORT = $base++; # HTTP TLS (non-stunnel) server port
$HTTPTLS6PORT = $base++; # HTTP TLS (non-stunnel) IPv6 server port $HTTPTLS6PORT = $base++; # HTTP TLS (non-stunnel) IPv6 server port
$HTTPPROXYPORT = $base++; # HTTP proxy port, when using CONNECT $HTTPPROXYPORT = $base++; # HTTP proxy port, when using CONNECT
$HTTPPIPEPORT = $base++; # HTTP pipelining port
$HTTP2PORT = $base++; # HTTP/2 port $HTTP2PORT = $base++; # HTTP/2 port
$DICTPORT = $base++; # DICT port $DICTPORT = $base++; # DICT port
$SMBPORT = $base++; # SMB port $SMBPORT = $base++; # SMB port