You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by am...@apache.org on 2017/10/04 18:53:53 UTC
[trafficserver] branch master updated: Fix runtime undefined symbol
error in multiplexer plugin.
This is an automated email from the ASF dual-hosted git repository.
amc 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 1c724e6 Fix runtime undefined symbol error in multiplexer plugin.
1c724e6 is described below
commit 1c724e6f5db9634e09822feb9552474794410314
Author: Alan M. Carroll <am...@apache.org>
AuthorDate: Sat Sep 30 13:34:23 2017 -0500
Fix runtime undefined symbol error in multiplexer plugin.
---
plugins/experimental/multiplexer/dispatch.cc | 5 +--
plugins/experimental/multiplexer/dispatch.h | 3 +-
plugins/experimental/multiplexer/fetcher.h | 2 +-
.../pluginTest/multiplexer/gold/multiplexer.gold | 1 +
.../pluginTest/multiplexer/multiplexer.test.py | 52 ++++++++++++++++++++++
5 files changed, 58 insertions(+), 5 deletions(-)
diff --git a/plugins/experimental/multiplexer/dispatch.cc b/plugins/experimental/multiplexer/dispatch.cc
index bdbd606..88cfe5b 100644
--- a/plugins/experimental/multiplexer/dispatch.cc
+++ b/plugins/experimental/multiplexer/dispatch.cc
@@ -33,7 +33,7 @@
extern Statistics statistics;
-extern size_t timeout;
+size_t timeout;
Request::Request(const std::string &h, const TSMBuffer b, const TSMLoc l) : host(h), length(0), io(new ats::io::IO())
{
@@ -52,12 +52,11 @@ Request::Request(const std::string &h, const TSMBuffer b, const TSMLoc l) : host
assert(TSHttpHdrLengthGet(b, l) >= length);
}
-Request::Request(const Request &r) : host(r.host), length(r.length), io(const_cast<Request &>(r).io.release())
+Request::Request(Request &&that) : host(std::move(that.host)), length(that.length), io(std::move(that.io))
{
assert(!host.empty());
assert(length > 0);
assert(io.get() != nullptr);
- assert(r.io.get() != nullptr);
}
Request &
diff --git a/plugins/experimental/multiplexer/dispatch.h b/plugins/experimental/multiplexer/dispatch.h
index 678fa58..7c6912d 100644
--- a/plugins/experimental/multiplexer/dispatch.h
+++ b/plugins/experimental/multiplexer/dispatch.h
@@ -54,7 +54,8 @@ struct Request {
std::unique_ptr<ats::io::IO> io;
Request(const std::string &, const TSMBuffer, const TSMLoc);
- Request(const Request &);
+ Request(const Request &) = delete;
+ Request(Request &&);
Request &operator=(const Request &);
};
diff --git a/plugins/experimental/multiplexer/fetcher.h b/plugins/experimental/multiplexer/fetcher.h
index 4c88553..08dbe74 100644
--- a/plugins/experimental/multiplexer/fetcher.h
+++ b/plugins/experimental/multiplexer/fetcher.h
@@ -289,7 +289,7 @@ get(const std::string &a, io::IO *const i, const int64_t l, const T &t, const in
}
TSVConn vconn = TSHttpConnect(reinterpret_cast<sockaddr *>(&socket));
assert(vconn != NULL);
- TSCont contp = TSContCreate(Transaction::handle, NULL);
+ TSCont contp = TSContCreate(Transaction::handle, TSMutexCreate());
assert(contp != NULL);
Transaction *transaction = new Transaction(vconn, contp, i, l, t);
TSContDataSet(contp, transaction);
diff --git a/tests/gold_tests/pluginTest/multiplexer/gold/multiplexer.gold b/tests/gold_tests/pluginTest/multiplexer/gold/multiplexer.gold
new file mode 100644
index 0000000..3957294
--- /dev/null
+++ b/tests/gold_tests/pluginTest/multiplexer/gold/multiplexer.gold
@@ -0,0 +1 @@
+``DIAG: (multiplexer)``
diff --git a/tests/gold_tests/pluginTest/multiplexer/multiplexer.test.py b/tests/gold_tests/pluginTest/multiplexer/multiplexer.test.py
new file mode 100644
index 0000000..3614f3c
--- /dev/null
+++ b/tests/gold_tests/pluginTest/multiplexer/multiplexer.test.py
@@ -0,0 +1,52 @@
+'''
+'''
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import os
+Test.Summary = '''
+Test experimental/multiplexer.
+'''
+# need Curl
+Test.SkipUnless(
+ Condition.HasProgram("curl", "Curl need to be installed on system for this test to work")
+)
+Test.ContinueOnFail = False
+# Define default ATS
+ts = Test.MakeATSProcess("ts")
+server = Test.MakeOriginServer("server")
+
+request_header = {"headers": "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n", "timestamp": "1469733493.993", "body": ""}
+response_header = {"headers": "HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n", "timestamp": "1469733493.993", "body": ""}
+server.addResponse("sessionfile.log", request_header, response_header)
+
+
+ts.Disk.records_config.update({
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'multiplexer',
+})
+ts.Disk.remap_config.AddLine(
+ 'map http://www.example.com http://127.0.0.1:{0} @plugin=multiplexer.so'.format(server.Variables.Port)
+)
+
+# For now, just make sure the plugin loads without error.
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = 'curl --silent --proxy 127.0.0.1:{0} "http://www.example.com" -H "Proxy-Connection: close"'.format(ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.StartBefore(server, ready=When.PortOpen(server.Variables.Port))
+tr.Processes.Default.StartBefore(Test.Processes.ts)
+ts.Streams.stderr = "gold/multiplexer.gold"
+tr.StillRunningAfter = ts
--
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>'].