You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2017/08/18 18:39:12 UTC
[trafficserver] branch master updated: corrects HTTP status 0 to
302 on redirect
This is an automated email from the ASF dual-hosted git repository.
zwoop pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push:
new a4cae55 corrects HTTP status 0 to 302 on redirect
a4cae55 is described below
commit a4cae55139bb48432ba4e8b832118a0d05d2c3d6
Author: Derek Dagit <de...@oath.com>
AuthorDate: Fri Aug 18 15:14:24 2017 +0000
corrects HTTP status 0 to 302 on redirect
---
proxy/http/HttpTransact.cc | 7 ++++++-
.../headers/data/www.redirect0.test_get.txt | 2 ++
.../headers/domain-blacklist-30x.test.py | 19 +++++++++++++++----
tests/gold_tests/headers/redirect0_get.gold | 22 ++++++++++++++++++++++
4 files changed, 45 insertions(+), 5 deletions(-)
diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc
index 83db45a..ce415f9 100644
--- a/proxy/http/HttpTransact.cc
+++ b/proxy/http/HttpTransact.cc
@@ -704,7 +704,12 @@ HttpTransact::EndRemapRequest(State *s)
error_body_type = "redirect#moved_temporarily";
break;
default:
- Warning("Invalid status code for redirect '%d'. Building a response for a temporary redirect.", s->http_return_code);
+ if (HTTP_STATUS_NONE == s->http_return_code) {
+ s->http_return_code = HTTP_STATUS_MOVED_TEMPORARILY;
+ Warning("Changed status code from '0' to '%d'.", s->http_return_code);
+ } else {
+ Warning("Using invalid status code for redirect '%d'. Building a response for a temporary redirect.", s->http_return_code);
+ }
error_body_type = "redirect#moved_temporarily";
}
build_error_response(s, s->http_return_code, "Redirect", error_body_type);
diff --git a/tests/gold_tests/headers/data/www.redirect0.test_get.txt b/tests/gold_tests/headers/data/www.redirect0.test_get.txt
new file mode 100644
index 0000000..40fce98
--- /dev/null
+++ b/tests/gold_tests/headers/data/www.redirect0.test_get.txt
@@ -0,0 +1,2 @@
+GET http://www.redirect0.test/ HTTP/1.1
+
diff --git a/tests/gold_tests/headers/domain-blacklist-30x.test.py b/tests/gold_tests/headers/domain-blacklist-30x.test.py
index aef08d6..172ccf4 100644
--- a/tests/gold_tests/headers/domain-blacklist-30x.test.py
+++ b/tests/gold_tests/headers/domain-blacklist-30x.test.py
@@ -32,6 +32,7 @@ REDIRECT_301_HOST='www.redirect301.test'
REDIRECT_302_HOST='www.redirect302.test'
REDIRECT_307_HOST='www.redirect307.test'
REDIRECT_308_HOST='www.redirect308.test'
+REDIRECT_0_HOST='www.redirect0.test'
PASSTHRU_HOST='www.passthrough.test'
ts.Disk.records_config.update({
@@ -45,12 +46,13 @@ regex_map http://{0}/ http://{0}/ @plugin=header_rewrite.so @pparam=header_rewri
regex_map http://{1}/ http://{1}/ @plugin=header_rewrite.so @pparam=header_rewrite_rules_302.conf
regex_map http://{2}/ http://{2}/ @plugin=header_rewrite.so @pparam=header_rewrite_rules_307.conf
regex_map http://{3}/ http://{3}/ @plugin=header_rewrite.so @pparam=header_rewrite_rules_308.conf
-""".format(REDIRECT_301_HOST, REDIRECT_302_HOST, REDIRECT_307_HOST, REDIRECT_308_HOST)
+regex_map http://{4}/ http://{4}/ @plugin=header_rewrite.so @pparam=header_rewrite_rules_0.conf
+""".format(REDIRECT_301_HOST, REDIRECT_302_HOST, REDIRECT_307_HOST, REDIRECT_308_HOST, REDIRECT_0_HOST)
)
-for x in (1,2,7,8):
- ts.Disk.MakeConfigFile("header_rewrite_rules_30{0}.conf".format(x)).AddLine("""\
-set-redirect 30{0} "%<cque>"
+for x in (0,301,302,307,308):
+ ts.Disk.MakeConfigFile("header_rewrite_rules_{0}.conf".format(x)).AddLine("""\
+set-redirect {0} "%<cque>"
""".format(x))
Test.Setup.Copy(os.path.join(os.pardir,os.pardir,'tools','tcp_client.py'))
@@ -93,6 +95,15 @@ redirect308tr.Processes.Default.TimeOut=5 # seconds
redirect308tr.Processes.Default.ReturnCode=0
redirect308tr.Processes.Default.Streams.stdout="redirect308_get.gold"
+redirect0tr=Test.AddTestRun("Test domain {0}".format(REDIRECT_0_HOST))
+redirect0tr.StillRunningBefore = ts
+redirect0tr.StillRunningAfter = ts
+redirect0tr.Processes.Default.Command="python tcp_client.py 127.0.0.1 {0} {1} | grep -v '^Date: '| grep -v '^Server: ATS/'".\
+ format(ts.Variables.port, 'data/{0}_get.txt'.format(REDIRECT_0_HOST))
+redirect0tr.Processes.Default.TimeOut=5 # seconds
+redirect0tr.Processes.Default.ReturnCode=0
+redirect0tr.Processes.Default.Streams.stdout="redirect0_get.gold"
+
passthroughtr=Test.AddTestRun("Test domain {0}".format(PASSTHRU_HOST))
passthroughtr.StillRunningBefore = ts
passthroughtr.StillRunningAfter = ts
diff --git a/tests/gold_tests/headers/redirect0_get.gold b/tests/gold_tests/headers/redirect0_get.gold
new file mode 100644
index 0000000..b9e828d
--- /dev/null
+++ b/tests/gold_tests/headers/redirect0_get.gold
@@ -0,0 +1,22 @@
+HTTP/1.1 302 Redirect
+Connection: keep-alive
+Cache-Control: no-store
+Location: http://www.redirect0.test/
+Content-Type: text/html
+Content-Language: en
+Content-Length: 308
+
+<HTML>
+<HEAD>
+<TITLE>Document Has Moved</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="white" FGCOLOR="black">
+<H1>Document Has Moved</H1>
+<HR>
+
+<FONT FACE="Helvetica,Arial"><B>
+Description: The document you requested has moved to a new location. The new location is "http://www.redirect0.test/".
+</B></FONT>
+<HR>
+</BODY>
--
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>'].