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>'].