You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by so...@apache.org on 2015/04/22 18:55:29 UTC

[10/12] trafficserver git commit: TS-3533: Revert "TS-3337: remove internal plugin SDK enumeration"

TS-3533: Revert "TS-3337: remove internal plugin SDK enumeration"

This reverts commit 7f0f3a47b253d361a16c33413b4501a5ff5d69fe.

Conflicts:
	CHANGES
	proxy/InkAPI.cc
	proxy/Plugin.cc
	proxy/Plugin.h


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/a54e8761
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/a54e8761
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/a54e8761

Branch: refs/heads/5.3.x
Commit: a54e87617dce540e0499b2a9d9870dce7ce016ce
Parents: 37b2819
Author: Phil Sorber <so...@apache.org>
Authored: Wed Apr 22 10:47:35 2015 -0600
Committer: Phil Sorber <so...@apache.org>
Committed: Wed Apr 22 10:47:35 2015 -0600

----------------------------------------------------------------------
 CHANGES         |  2 --
 proxy/InkAPI.cc | 20 ++++++++++----------
 proxy/Plugin.cc | 32 +++++++-------------------------
 proxy/Plugin.h  | 14 +++++++++++++-
 4 files changed, 30 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a54e8761/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 0df57b1..4409b70 100644
--- a/CHANGES
+++ b/CHANGES
@@ -211,8 +211,6 @@ Changes with Apache Traffic Server 5.3.0
 
   *) [TS-3338] Update the list of gauges in the epic plugin.
 
-  *) [TS-3337] Remove internal plugin SDK versioning.
-
   *) [TS-3336] Remove unimplemented HTTP metrics.
 
   *) [TS-3333] Enable TOS settings on IPv6 connections.

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a54e8761/proxy/InkAPI.cc
----------------------------------------------------------------------
diff --git a/proxy/InkAPI.cc b/proxy/InkAPI.cc
index 6c73d16..666db4f 100644
--- a/proxy/InkAPI.cc
+++ b/proxy/InkAPI.cc
@@ -1779,22 +1779,22 @@ TSPluginDirGet(void)
 TSReturnCode
 TSPluginRegister(TSSDKVersion sdk_version, TSPluginRegistrationInfo *plugin_info)
 {
-  sdk_assert(sdk_sanity_check_null_ptr((void *)plugin_info) == TS_SUCCESS);
+  PluginSDKVersion version = (PluginSDKVersion)sdk_version;
 
-  if (!plugin_reg_current) {
+  if (!plugin_reg_current)
     return TS_ERROR;
-  }
 
-  switch (sdk_version) {
-  case TS_SDK_VERSION_2_0:
-  case TS_SDK_VERSION_3_0:
-    break;
-  default:
-    return TS_ERROR;
-  }
+  sdk_assert(sdk_sanity_check_null_ptr((void*) plugin_info) == TS_SUCCESS);
 
   plugin_reg_current->plugin_registered = true;
 
+  // We're compatible only within the 3.x release
+  if (version >= PLUGIN_SDK_VERSION_3_0 && version < PLUGIN_SDK_VERSION_4_0) {
+    plugin_reg_current->sdk_version = version;
+  } else {
+    plugin_reg_current->sdk_version = PLUGIN_SDK_VERSION_UNKNOWN;
+  }
+
   if (plugin_info->plugin_name) {
     plugin_reg_current->plugin_name = ats_strdup(plugin_info->plugin_name);
   }

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a54e8761/proxy/Plugin.cc
----------------------------------------------------------------------
diff --git a/proxy/Plugin.cc b/proxy/Plugin.cc
index 130cae6..6cfac73 100644
--- a/proxy/Plugin.cc
+++ b/proxy/Plugin.cc
@@ -51,23 +51,9 @@ DLL<PluginRegInfo> plugin_reg_list;
 PluginRegInfo *plugin_reg_current = NULL;
 
 PluginRegInfo::PluginRegInfo()
-  : plugin_registered(false), plugin_path(NULL),
+  : plugin_registered(false), plugin_path(NULL), sdk_version(PLUGIN_SDK_VERSION_UNKNOWN),
     plugin_name(NULL), vendor_name(NULL), support_email(NULL)
-{
-}
-
-PluginRegInfo::~PluginRegInfo()
-{
-  // We don't support unloading plugins once they are successfully loaded, so assert
-  // that we don't accidentally attempt this.
-  ink_release_assert(this->plugin_registered == false);
-  ink_release_assert(this->link.prev == NULL);
-
-  ats_free(this->plugin_path);
-  ats_free(this->plugin_name);
-  ats_free(this->vendor_name);
-  ats_free(this->support_email);
-}
+{ }
 
 static bool
 plugin_load(int argc, char *argv[], bool validateOnly)
@@ -75,6 +61,7 @@ plugin_load(int argc, char *argv[], bool validateOnly)
   char path[PATH_NAME_MAX + 1];
   void *handle;
   init_func_t init;
+  PluginRegInfo *plugin_reg_temp;
 
   if (argc < 1) {
     return true;
@@ -83,14 +70,14 @@ plugin_load(int argc, char *argv[], bool validateOnly)
 
   Note("loading plugin '%s'", path);
 
-  for (PluginRegInfo *plugin_reg_temp = plugin_reg_list.head; plugin_reg_temp != NULL;
-       plugin_reg_temp = (plugin_reg_temp->link).next) {
+  plugin_reg_temp = plugin_reg_list.head;
+  while (plugin_reg_temp) {
     if (strcmp(plugin_reg_temp->plugin_path, path) == 0) {
       Warning("multiple loading of plugin %s", path);
       break;
     }
+    plugin_reg_temp = (plugin_reg_temp->link).next;
   }
-
   // elevate the access to read files as root if compiled with capabilities, if not
   // change the effective user to root
   {
@@ -126,12 +113,7 @@ plugin_load(int argc, char *argv[], bool validateOnly)
     init(argc, argv);
   } // done elevating access
 
-  if (plugin_reg_current->plugin_registered) {
-    plugin_reg_list.push(plugin_reg_current);
-  } else {
-    delete plugin_reg_current;
-  }
-
+  plugin_reg_list.push(plugin_reg_current);
   plugin_reg_current = NULL;
 
   return true;

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a54e8761/proxy/Plugin.h
----------------------------------------------------------------------
diff --git a/proxy/Plugin.h b/proxy/Plugin.h
index 44f31f8..9e5098b 100644
--- a/proxy/Plugin.h
+++ b/proxy/Plugin.h
@@ -26,13 +26,25 @@
 
 #include "List.h"
 
-struct PluginRegInfo {
+// need to keep syncronized with TSSDKVersion
+//   in ts/ts.h.in
+typedef enum
+{
+  PLUGIN_SDK_VERSION_UNKNOWN = -1,
+  PLUGIN_SDK_VERSION_2_0,
+  PLUGIN_SDK_VERSION_3_0,
+  PLUGIN_SDK_VERSION_4_0
+} PluginSDKVersion;
+
+struct PluginRegInfo
+{
   PluginRegInfo();
   ~PluginRegInfo();
 
   bool plugin_registered;
   char *plugin_path;
 
+  PluginSDKVersion sdk_version;
   char *plugin_name;
   char *vendor_name;
   char *support_email;