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 2009/12/16 01:57:30 UTC

svn commit: r891090 - in /incubator/trafficserver/traffic/trunk/proxy: ./ mgmt2/ mgmt2/cli/ mgmt2/cli2/ mgmt2/web2/

Author: zwoop
Date: Wed Dec 16 00:57:28 2009
New Revision: 891090

URL: http://svn.apache.org/viewvc?rev=891090&view=rev
Log:
TS-6: traffic_manager does not start.

    Author: George Paul
    Review + suggestions: Leif

Modified:
    incubator/trafficserver/traffic/trunk/proxy/Makefile.am
    incubator/trafficserver/traffic/trunk/proxy/example_alarm_bin.sh
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/FileManager.cc
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/LocalManager.cc
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.cc
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.h
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/Makefile.am
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/ProcessManager.cc
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/RecordsConfig.cc
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/Rollback.cc
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliMain.cc
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.cc
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.h
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/Makefile.am
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.cc
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.h
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.cc
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.h
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/Makefile.am
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/cliMain.cc
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebIntrMain.cc
    incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebReconfig.cc

Modified: incubator/trafficserver/traffic/trunk/proxy/Makefile.am
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/Makefile.am?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/Makefile.am (original)
+++ incubator/trafficserver/traffic/trunk/proxy/Makefile.am Wed Dec 16 00:57:28 2009
@@ -367,8 +367,8 @@
 dist_version_DATA = TS_version
 
 install-exec-local:
-	$(INSTALL) -d -o nobody -g nobody $(pkglocalstatedir) $(pkglogdir)
-	$(INSTALL) -d $(pkgsysconfdir) $(pkglibexecdir)
+	$(INSTALL) -d -o nobody -g nobody $(pkglocalstatedir) $(pkglogdir) $(pkgsysconfdir) $(pkgsysconfdir)/internal
+	$(INSTALL) -d $(pkglibexecdir)
 
 uninstall-local:
 	-rm -rf $(pkglocalstatedir) $(pkglogdir) $(pkgsysconfdir) $(pkglibexecdir)

Modified: incubator/trafficserver/traffic/trunk/proxy/example_alarm_bin.sh
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/example_alarm_bin.sh?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/example_alarm_bin.sh (original)
+++ incubator/trafficserver/traffic/trunk/proxy/example_alarm_bin.sh Wed Dec 16 00:57:28 2009
@@ -30,6 +30,11 @@
   SENDMAIL="/usr/lib/sendmail"
 fi
 
+if [ ! -x $SENDMAIL ]; then
+    echo "$0: Could not find $SENDMAIL program"
+    exit 1
+fi
+
 if [ $# -eq 1 ]; then
   # if only one parameter, then no email information was provided
   msg="`hostname` $1"

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/FileManager.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/FileManager.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/FileManager.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/FileManager.cc Wed Dec 16 00:57:28 2009
@@ -89,7 +89,7 @@
   pathLen = strlen(configTmp) + strlen(snapDir) + 3;
   const size_t snapshotDir_size = pathLen + 1;
   snapshotDir = new char[snapshotDir_size];
-  snprintf(snapshotDir, snapshotDir_size, ".%s%s%s%s", DIR_SEP, configTmp, DIR_SEP, snapDir);
+  snprintf(snapshotDir, snapshotDir_size, "%s%s%s", configTmp, DIR_SEP, snapDir);
 
   // Set up info for MultiFile
   managedDir = snapshotDir;
@@ -104,7 +104,7 @@
     if (mkdir(snapshotDir) < 0) {
 #endif
       // Failed to create the snapshot directory
-      mgmt_fatal(stderr, "[FileManager::FileManager] Failed to create the snapshot directory: %s\n", strerror(errno));
+      mgmt_fatal(stderr, "[FileManager::FileManager] Failed to create the snapshot directory %s: %s\n", snapshotDir, strerror(errno));
     }
   }
 }

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/LocalManager.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/LocalManager.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/LocalManager.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/LocalManager.cc Wed Dec 16 00:57:28 2009
@@ -139,11 +139,25 @@
   return;
 }
 
+char snap_filename[FILE_NAME_MAX+1] = "stats.snap";
+
 void
 LocalManager::clearStats()
 {
   char *statsPath;
-  const char statsFile[] = "/internal/stats.snap";
+  char local_state_dir[FILE_NAME_MAX];
+  char snap_file[FILE_NAME_MAX];
+  struct stat s;
+  int err;
+
+  REC_ReadConfigString(local_state_dir, "proxy.config.local_state_dir", FILE_NAME_MAX);
+  if ((err = stat(local_state_dir, &s)) < 0) {
+    Warning("Unable to stat() local state directory '%s': %d %d, %s", local_state_dir, err, errno, strerror(errno));
+    Warning(" Please set 'proxy.config.local_state_dir' to allow statistics collection");
+  }
+  REC_ReadConfigString(snap_file, "proxy.config.stats.snap_file", FILE_NAME_MAX);
+  snprintf(snap_filename, sizeof(snap_filename), "%s%s%s", local_state_dir,
+           DIR_SEP, snap_file);
 
   // Clear our records and then send the signal.  There is a race condition
   //  here where our stats could get re-updated from the proxy
@@ -154,7 +168,7 @@
   //   stats getting cleared by progation of clearing the
   //   cluster stats
   //
-  NOWARN_UNUSED(statsFile);
+  NOWARN_UNUSED(snap_filename);
 
   RecResetStatRecord();
 
@@ -239,7 +253,7 @@
     mgmt_log("Bad or missing proxy.config.lm.sem_id value; using default id %d\n", MGMT_SEMID_DEFAULT);
     mgmt_sync_key = MGMT_SEMID_DEFAULT;
   }
-  ink_strncpy(pserver_path, mpath, sizeof(pserver_path));
+  ink_strncpy(pserver_path, system_local_state_dir, sizeof(pserver_path));
 
   virt_map = NULL;
 

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.cc Wed Dec 16 00:57:28 2009
@@ -113,7 +113,12 @@
 bool xml_on = false;
 char *xml_path = NULL;
 
-char *mgmt_path = "./conf/yts/";
+char system_root_dir[PATH_NAME_MAX + 1] = DEFAULT_ROOT_DIRECTORY;
+char system_local_state_dir[PATH_NAME_MAX + 1] = DEFAULT_LOCAL_STATE_DIRECTORY;
+char system_config_directory[PATH_NAME_MAX + 1] = DEFAULT_SYSTEM_CONFIG_DIRECTORY;
+char system_log_dir[PATH_NAME_MAX + 1] = DEFAULT_LOG_DIRECTORY;
+
+char mgmt_path[PATH_NAME_MAX + 1] = DEFAULT_SYSTEM_CONFIG_DIRECTORY;
 
 // By default, set the current directory as base
 char *ts_base_dir = ".";
@@ -142,7 +147,7 @@
   //////////////////////////////////////
   // test for presence of server lock //
   //////////////////////////////////////
-  ink_snprintf(lockfile, PATH_MAX, "%sinternal/%s", mgmt_path, SERVER_LOCK);
+  ink_snprintf(lockfile, PATH_MAX, "%s%s%s", system_local_state_dir, DIR_SEP, SERVER_LOCK);
   Lockfile server_lockfile(lockfile);
   err = server_lockfile.Open(&holding_pid);
   if (err == 1) {
@@ -163,7 +168,7 @@
   ///////////////////////////////////////////
   // try to get the exclusive manager lock //
   ///////////////////////////////////////////
-  ink_snprintf(lockfile, sizeof(lockfile), "%sinternal/%s", mgmt_path, MANAGER_LOCK);
+  ink_snprintf(lockfile, sizeof(lockfile), "%s%s%s", system_local_state_dir, DIR_SEP, MANAGER_LOCK);
   Lockfile manager_lockfile(lockfile);
   err = manager_lockfile.Get(&holding_pid);
   if (err != 1) {
@@ -287,35 +292,104 @@
   return 0;
 }
 
+static void
+init_dirs(void)
+{
+  struct stat s;
+  int err;
+
+  if ((err = stat(mgmt_path, &s)) < 0) {
+    REC_ReadConfigString(mgmt_path, "proxy.config.config_dir", PATH_NAME_MAX);
+    if ((err = stat(mgmt_path, &s)) < 0) {
+      // Try 'system_root_dir/etc/trafficserver' directory
+      snprintf(mgmt_path, sizeof(mgmt_path), 
+               "%s%s%s%s%s",system_root_dir, DIR_SEP,"etc",DIR_SEP,"trafficserver");
+      if ((err = stat(mgmt_path, &s)) < 0) {
+        mgmt_elog("unable to stat() mgmt path '%s': %d %d, %s\n", 
+                mgmt_path, err, errno, strerror(errno));
+        mgmt_elog("please set config path via command line '-path <path>' or 'proxy.config.config_dir' \n");
+        _exit(1);
+      }
+    }
+  }
+
+  if ((err = stat(system_config_directory, &s)) < 0) {
+    ink_strncpy(system_config_directory,mgmt_path,PATH_NAME_MAX); 
+    if ((err = stat(system_config_directory, &s)) < 0) {
+      REC_ReadConfigString(system_config_directory, "proxy.config.config_dir", PATH_NAME_MAX);
+      if ((err = stat(system_config_directory, &s)) < 0) {
+        // Try 'system_root_dir/etc/trafficserver' directory
+        snprintf(system_config_directory, sizeof(system_config_directory), 
+                 "%s%s%s%s%s",system_root_dir, DIR_SEP,"etc",DIR_SEP,"trafficserver");
+        if ((err = stat(system_config_directory, &s)) < 0) {
+          mgmt_elog("unable to stat() config dir '%s': %d %d, %s\n", 
+                    system_config_directory, err, errno, strerror(errno));
+          mgmt_elog("please set config path via command line '-path <path>' or 'proxy.config.config_dir' \n");
+          _exit(1);
+        }
+      }
+    }
+  }
+
+  if ((err = stat(system_local_state_dir, &s)) < 0) {
+    REC_ReadConfigString(system_local_state_dir, "proxy.config.local_state_dir", PATH_NAME_MAX);
+    if ((err = stat(system_local_state_dir, &s)) < 0) {
+      // Try 'system_root_dir/var/trafficserver' directory
+      snprintf(system_local_state_dir, sizeof(system_local_state_dir), 
+               "%s%s%s%s%s",system_root_dir, DIR_SEP,"var",DIR_SEP,"trafficserver");
+      if ((err = stat(system_local_state_dir, &s)) < 0) {
+        mgmt_elog("unable to stat() local state dir '%s': %d %d, %s\n", 
+                system_local_state_dir, err, errno, strerror(errno));
+        mgmt_elog("please set 'proxy.config.local_state_dir'\n");
+        _exit(1);
+      }
+    }
+  }
+
+  if ((err = stat(system_log_dir, &s)) < 0) {
+    REC_ReadConfigString(system_log_dir, "proxy.config.log2.logfile_dir", PATH_NAME_MAX);
+    if ((err = stat(system_log_dir, &s)) < 0) {
+      // Try 'system_root_dir/var/log/trafficserver' directory
+      snprintf(system_log_dir, sizeof(system_log_dir), "%s%s%s%s%s%s%s",
+               system_root_dir, DIR_SEP,"var",DIR_SEP,"log",DIR_SEP,"trafficserver");
+      if ((err = stat(system_log_dir, &s)) < 0) {
+        mgmt_elog("unable to stat() log dir'%s': %d %d, %s\n", 
+                system_log_dir, err, errno, strerror(errno));
+        mgmt_elog("please set 'proxy.config.log2.logfile_dir'\n");
+        _exit(1);
+      }
+    }
+  }
+
+}
 
 void
 chdir_root()
 {
-  char root_dir[PATH_MAX];
   char buffer[1024];
   char *env_path;
   FILE *ts_file;
   int i = 0;
 
-  root_dir[0] = '\0';
-  if ((env_path = getenv("ROOT")) || (env_path = getenv("INST_ROOT"))) {
-    strncpy(root_dir, env_path, PATH_MAX);
+  if ((env_path = getenv("TS_ROOT"))) {
+    strncpy(system_root_dir, env_path, PATH_NAME_MAX);
   } else {
     if ((ts_file = fopen("/etc/traffic_server", "r")) != NULL) {
       NOWARN_UNUSED_RETURN(fgets(buffer, 1024, ts_file));
       fclose(ts_file);
       while (!isspace(buffer[i])) {
-        root_dir[i] = buffer[i];
+        system_root_dir[i] = buffer[i];
         i++;
       }
-      root_dir[i] = '\0';
+      system_root_dir[i] = '\0';
     } else {
-      ink_strncpy(root_dir, "/home/trafficserver", PATH_MAX);
+      ink_strncpy(system_root_dir, PREFIX, PATH_NAME_MAX);
     }
   }
 
-  if (root_dir[0] && (chdir(root_dir) < 0)) {
-    mgmt_elog("unable to change to root directory \"%s\" [%d '%s']\n", root_dir, errno, strerror(errno));
+  if (system_root_dir[0] && (chdir(system_root_dir) < 0)) {
+    mgmt_elog("unable to change to root directory \"%s\" [%d '%s']\n", system_root_dir, errno, strerror(errno));
+    mgmt_elog(" please set correct path in env variable TS_ROOT \n");
     exit(1);
   }
 }
@@ -420,12 +494,12 @@
           } else if (strcmp(argv[i], "-path") == 0) {
             ++i;
             //bugfixed by YTS Team, yamsat(id-59703)
-            if ((strlen(argv[i]) > 600)) {
+            if ((strlen(argv[i]) > PATH_NAME_MAX)) {
               fprintf(stderr, "\n   Path exceeded the maximum allowed characters.\n");
               exit(1);
             }
 
-            mgmt_path = argv[i];
+            ink_strncpy(mgmt_path, argv[i], PATH_NAME_MAX);
             /*
                } else if(strcmp(argv[i], "-lmConf") == 0) {
                ++i;
@@ -519,6 +593,8 @@
     icmp_ping = new MgmtPing(); */
   icmp_ping = NULL;
 
+  init_dirs();// setup directories
+
   // Get the config info we need while we are still root
   extractConfigInfo(mgmt_path, recs_conf, userToRunAs);
 
@@ -528,7 +604,8 @@
 
   check_lockfile();
 
-  ink_snprintf(config_internal_dir, sizeof(config_internal_dir), "%s%sinternal", mgmt_path, DIR_SEP);
+  ink_snprintf(config_internal_dir, sizeof(config_internal_dir), 
+               "%s%sinternal", mgmt_path, DIR_SEP);
   url_init(config_internal_dir);
   mime_init(config_internal_dir);
   http_init(config_internal_dir);
@@ -1369,10 +1446,10 @@
   if (mgmt_path && recs_conf) {
     FILE *fin;
 
-    ink_snprintf(file, sizeof(file), "%s%s.shadow", mgmt_path, recs_conf);
+    ink_snprintf(file, sizeof(file), "%s%s%s.shadow", mgmt_path, DIR_SEP, recs_conf);
     if (!(fin = fopen(file, "r"))) {
 
-      ink_snprintf(file, sizeof(file), "%s%s", mgmt_path, recs_conf);
+      ink_snprintf(file, sizeof(file), "%s%s%s", mgmt_path, DIR_SEP, recs_conf);
       if (!(fin = fopen(file, "r"))) {
         mgmt_elog(stderr, "[extractConfigInfo] Unable to open config file(%s)\n", file);
         _exit(1);

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.h
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.h?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.h (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/Main.h Wed Dec 16 00:57:28 2009
@@ -31,6 +31,15 @@
 #include "WebOverview.h"
 #include "I_Version.h"
 
+#define PATH_NAME_MAX         511 // instead of PATH_MAX which is inconsistent
+                                  // on various OSs (linux-4096,osx/bsd-1024,
+                                  //                 windows-260,etc)
+
+#define DEFAULT_ROOT_DIRECTORY            PREFIX
+#define DEFAULT_LOCAL_STATE_DIRECTORY     PKGLOCALSTATEDIR
+#define DEFAULT_SYSTEM_CONFIG_DIRECTORY   PKGSYSCONFDIR
+#define DEFAULT_LOG_DIRECTORY             PKGLOGDIR
+
 void MgmtShutdown(int status);
 void fileUpdated(char *fname);
 void runAsUser(char *userName);
@@ -43,13 +52,18 @@
 extern overviewPage *overviewGenerator;
 extern AppVersionInfo appVersionInfo;
 
-// Global string constants
-extern char *mgmt_path;
+// Global strings 
+extern char mgmt_path[];
 extern char *recs_conf;
 //extern char *lm_conf;
 
 // Root of Traffic Server
 extern char *ts_base_dir;
+extern char system_root_dir[];
+extern char system_local_state_dir[];
+extern char system_config_directory[];
+extern char system_log_dir[];
+
 
 // Global variable to replace ifdef MGMT_LAUNCH_PROXY so that
 // we can turn on/off proxy launch at runtime to facilitate

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/Makefile.am
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/Makefile.am?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/Makefile.am (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/Makefile.am Wed Dec 16 00:57:28 2009
@@ -20,6 +20,7 @@
   $(iocore_include_dirs) \
   -I$(top_srcdir)/proxy \
   -I$(top_srcdir)/proxy/hdrs \
+  -DPREFIX=\"$(prefix)\" \
   -DPKGLIBEXECDIR=\"$(pkglibexecdir)\" \
   -DPKGLOCALSTATEDIR=\"$(pkglocalstatedir)\" \
   -DPKGLOGDIR=\"$(pkglogdir)\" \

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/ProcessManager.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/ProcessManager.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/ProcessManager.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/ProcessManager.cc Wed Dec 16 00:57:28 2009
@@ -84,7 +84,7 @@
 ProcessManager::ProcessManager(bool rlm, char *mpath, ProcessRecords * rd):
 BaseManager(), require_lm(rlm), mgmt_sync_key(0), record_data(rd), local_manager_sockfd(0)
 {
-  ink_strncpy(pserver_path, mpath, sizeof(pserver_path));
+  ink_strncpy(pserver_path, PKGLOCALSTATEDIR, sizeof(pserver_path));
   mgmt_signal_queue = create_queue();
 
   // Set temp. process/manager timeout. Will be reconfigure later.

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/RecordsConfig.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/RecordsConfig.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/RecordsConfig.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/RecordsConfig.cc Wed Dec 16 00:57:28 2009
@@ -58,7 +58,7 @@
 
   {CONFIG, "proxy.config.proxy_name", "", INK_STRING, "<proxy_name>", RU_REREAD, RR_REQUIRED, RC_STR, ".+", RA_NULL}
   ,
-  {CONFIG, "proxy.config.bin_path", "", INK_STRING, "<bin_path>", RU_NULL, RR_REQUIRED, RC_NULL, NULL, RA_NULL}
+  {CONFIG, "proxy.config.bin_path", "", INK_STRING, PREFIX "/bin", RU_NULL, RR_REQUIRED, RC_NULL, NULL, RA_NULL}
   ,
   {CONFIG, "proxy.config.proxy_binary", "", INK_STRING, "traffic_server", RU_NULL, RR_REQUIRED, RC_NULL, NULL, RA_NULL}
   ,
@@ -369,7 +369,7 @@
   ,
   {CONFIG, "proxy.config.admin.cli_enabled", "", INK_INT, "1", RU_NULL, RR_NULL, RC_NULL, NULL, RA_NULL}
   ,
-  {CONFIG, "proxy.config.admin.cli_path", "", INK_STRING, PKGSYSCONFDIR "/cli", RU_NULL, RR_NULL, RC_NULL, NULL, RA_NULL}
+  {CONFIG, "proxy.config.admin.cli_path", "", INK_STRING, PKGLOCALSTATEDIR "/cli", RU_NULL, RR_NULL, RC_NULL, NULL, RA_NULL}
   ,
   {CONFIG, "proxy.config.admin.cli_port", "", INK_INT, "9000", RU_NULL, RR_NULL, RC_NULL, NULL, RA_NULL}
   ,

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/Rollback.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/Rollback.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/Rollback.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/Rollback.cc Wed Dec 16 00:57:28 2009
@@ -100,7 +100,7 @@
   }
   int configDirLen = strlen(configTmp) + 4;
   configDir = new char[configDirLen];
-  ink_snprintf(configDir, configDirLen, ".%s%s%s", DIR_SEP, configTmp, DIR_SEP);
+  ink_snprintf(configDir, configDirLen, "%s%s", configTmp, DIR_SEP);
 
 #ifdef OEM
   // since these plugin files are not in the config directory,

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliMain.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliMain.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliMain.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliMain.cc Wed Dec 16 00:57:28 2009
@@ -34,6 +34,7 @@
 #include "ink_args.h"
 #include "Tokenizer.h"
 #include "TextBuffer.h"
+#include "CliUtils.h"
 #include "clientCLI.h"
 
 #ifdef _WIN32

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.cc Wed Dec 16 00:57:28 2009
@@ -304,34 +304,42 @@
 {
   FILE *fp;
   const char *env_path;
+  struct stat s;
+  int err;
 
-  // INST will set ROOT and INST_ROOT properly, try ROOT first
-  if ((env_path = getenv("ROOT")) || (env_path = getenv("INST_ROOT"))) {
-    ink_strncpy(ts_path, env_path, 256);
-    return 0;
+  if ((env_path = getenv("TS_ROOT"))) {
+    ink_strncpy(ts_path, env_path, PATH_NAME_MAX);
+  } else {
+    if ((fp = fopen("/etc/traffic_server", "r")) != NULL) {
+      if (fgets(ts_path, PATH_NAME_MAX, fp) == NULL) {
+        fclose(fp);
+        printf("\nInvalid contents in /etc/traffic_server\n");
+        printf(" Please set correct path in env variable TS_ROOT \n");
+        return -1;
+      }
+      // strip newline if it exists
+      int len = strlen(ts_path);
+      if (ts_path[len - 1] == '\n') {
+        ts_path[len - 1] = '\0';
+      }
+      // strip trailing "/" if it exists
+      len = strlen(ts_path);
+      if (ts_path[len - 1] == '/') {
+        ts_path[len - 1] = '\0';
+      }
+      
+      fclose(fp);
+    } else {
+      ink_strncpy(ts_path, PREFIX, PATH_NAME_MAX);
+    }
   }
 
-  if ((fp = fopen("/etc/traffic_server", "r")) == NULL) {
-    ink_strncpy(ts_path, "/home/trafficserver", 256);
-    return 0;
-  }
-
-  if (fgets(ts_path, 256, fp) == NULL) {
-    fclose(fp);
-    printf("\nInvalid contents in /etc/traffic_server\n");
+  if ((err = stat(ts_path, &s)) < 0) {
+    printf("unable to stat() TS PATH '%s': %d %d, %s\n", 
+              ts_path, err, errno, strerror(errno));
+    printf(" Please set correct path in env variable TS_ROOT \n");
     return -1;
   }
-  // strip newline if it exists
-  int len = strlen(ts_path);
-  if (ts_path[len - 1] == '\n') {
-    ts_path[len - 1] = '\0';
-  }
-  // strip trailing "/" if it exists
-  len = strlen(ts_path);
-  if (ts_path[len - 1] == '/') {
-    ts_path[len - 1] = '\0';
-  }
 
-  fclose(fp);
   return 0;
 }

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.h
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.h?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.h (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/CliUtils.h Wed Dec 16 00:57:28 2009
@@ -34,6 +34,10 @@
 #include "ink_hrtime.h"
 #include "ink_port.h"
 
+#define PATH_NAME_MAX         511 // instead of PATH_MAX which is inconsistent
+                                  // on various OSs (linux-4096,osx/bsd-1024,
+                                  //                 windows-260,etc)
+
 // Server side functions (blocking I/O)
 int cli_read(int fd, char *buf, int maxlen);
 int cli_write(int fd, const char *data, int nbytes);

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/Makefile.am
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/Makefile.am?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/Makefile.am (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/Makefile.am Wed Dec 16 00:57:28 2009
@@ -12,7 +12,10 @@
   -I$(top_srcdir)/proxy/mgmt2/preparse \
   -I$(top_srcdir)/proxy/mgmt2/utils \
   -I$(top_srcdir)/proxy/mgmt2/web2 \
-  -I$(top_srcdir)/proxy
+  -I$(top_srcdir)/proxy \
+  -DPREFIX=\"$(prefix)\" \
+  -DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" \
+  -DPKGLOCALSTATEDIR=\"$(pkglocalstatedir)\"
 
 MGMT_DEFS = @MGMT_DEFS@
 DEFS += $(MGMT_DEFS)

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.cc Wed Dec 16 00:57:28 2009
@@ -49,7 +49,7 @@
 
 #ifndef _WIN32
 const char *
-  clientCLI::defaultSockPath = "./conf/yts/cli";
+  clientCLI::defaultSockPath = PKGLOCALSTATEDIR "/cli";
 #else
 const int
   clientCLI::defaultCliPort = 9000;
@@ -78,11 +78,11 @@
 void
 clientCLI::readTSdir()
 {
-  char sPath[512];
+  char sPath[PATH_NAME_MAX + 1];
   if (GetTSDirectory(sPath)) {
     ink_strncpy(sockPath, clientCLI::defaultSockPath, sizeof(sockPath));
   } else {
-    ink_snprintf(sockPath, sizeof(sockPath), "%s/conf/yts/cli", sPath);
+    ink_snprintf(sockPath, sizeof(sockPath), "%s/cli", sPath);
   }
 }
 void

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.h
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.h?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.h (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli/clientCLI.h Wed Dec 16 00:57:28 2009
@@ -95,7 +95,7 @@
   CliResult getVariable(const char *name, char **value);
 
 #ifndef _WIN32
-  char sockPath[PATH_MAX];
+  char sockPath[PATH_NAME_MAX + 1];
   static const char *defaultSockPath;
 #else
   int cliPort;

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.cc Wed Dec 16 00:57:28 2009
@@ -554,34 +554,43 @@
   FILE *fp;
   char *env_path;
 
-  // INST will set ROOT and INST_ROOT properly, try ROOT first
-  if ((env_path = getenv("ROOT")) || (env_path = getenv("INST_ROOT"))) {
-    ink_strncpy(ts_path, env_path, 256);
-    return 0;
-  }
+  struct stat s;
+  int err;
 
-  if ((fp = fopen("/etc/traffic_server", "r")) == NULL) {
-    ink_strncpy(ts_path, "/home/trafficserver", 256);
-    return 0;
+  if ((env_path = getenv("TS_ROOT"))) {
+    ink_strncpy(ts_path, env_path, PATH_NAME_MAX);
+  } else {
+    if ((fp = fopen("/etc/traffic_server", "r")) != NULL) {
+      if (fgets(ts_path, PATH_NAME_MAX, fp) == NULL) {
+        fclose(fp);
+        Cli_Error("\nInvalid contents in /etc/traffic_server\n");
+        Cli_Error(" Please set correct path in env variable TS_ROOT \n");
+        return -1;
+      }
+      // strip newline if it exists
+      int len = strlen(ts_path);
+      if (ts_path[len - 1] == '\n') {
+        ts_path[len - 1] = '\0';
+      }
+      // strip trailing "/" if it exists
+      len = strlen(ts_path);
+      if (ts_path[len - 1] == '/') {
+        ts_path[len - 1] = '\0';
+      }
+      
+      fclose(fp);
+    } else {
+      ink_strncpy(ts_path, PREFIX, PATH_NAME_MAX);
+    }
   }
 
-  if (fgets(ts_path, 256, fp) == NULL) {
-    Cli_Error("\nInvalid contents in /etc/traffic_server\n");
-    fclose(fp);
+  if ((err = stat(ts_path, &s)) < 0) {
+    Cli_Error("unable to stat() TS PATH '%s': %d %d, %s\n", 
+              ts_path, err, errno, strerror(errno));
+    Cli_Error(" Please set correct path in env variable TS_ROOT \n");
     return -1;
   }
-  // strip newline if it exists
-  int len = strlen(ts_path);
-  if (ts_path[len - 1] == '\n') {
-    ts_path[len - 1] = '\0';
-  }
-  // strip trailing "/" if it exists
-  len = strlen(ts_path);
-  if (ts_path[len - 1] == '/') {
-    ts_path[len - 1] = '\0';
-  }
 
-  fclose(fp);
   return 0;
 }
 

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.h
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.h?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.h (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/CliMgmtUtils.h Wed Dec 16 00:57:28 2009
@@ -31,6 +31,10 @@
 
 #include "../api2/include/INKMgmtAPI.h"
 
+#define PATH_NAME_MAX         511 // instead of PATH_MAX which is inconsistent
+                                  // on various OSs (linux-4096,osx/bsd-1024,
+                                  //                 windows-260,etc)
+
 #define RECORD_GET 0
 #define RECORD_SET 1
 

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/Makefile.am
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/Makefile.am?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/Makefile.am (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/Makefile.am Wed Dec 16 00:57:28 2009
@@ -8,7 +8,10 @@
   -I$(top_srcdir)/proxy/mgmt2/utils \
   -I$(top_srcdir)/libinktomi++ \
   -I$(top_srcdir)/proxy \
-  -I$(top_srcdir)/proxy/mgmt2/tools
+  -I$(top_srcdir)/proxy/mgmt2/tools \
+  -DPREFIX=\"$(prefix)\" \
+  -DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" \
+  -DPKGLOCALSTATEDIR=\"$(pkglocalstatedir)\"
 
 dist_bin_SCRIPTS = \
   cli_setdomain.tcl \

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/cliMain.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/cliMain.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/cliMain.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/cli2/cliMain.cc Wed Dec 16 00:57:28 2009
@@ -49,20 +49,18 @@
   CliDisplayPrintf = 1;
 
   // initialize MgmtAPI using TS directory specified in /etc/traffic_server
-  // or ../conf/yts/ if /etc/traffic_server does not exist
+  // or PKGLOCALSTATEDIR if /etc/traffic_server does not exist
 
   if (GetTSDirectory(ts_path)) {
-    status = INKInit("../conf/yts/");
+    status = INKInit(PKGLOCALSTATEDIR);
     if (status) {
-      printf("INKInit %d: Failed to initialize MgmtAPI in ../conf/yts/\n", status);
+      printf("INKInit %d: Failed to initialize MgmtAPI in %s\n", status, PKGLOCALSTATEDIR);
     } else {
-      printf("Successfully Initialized MgmtAPI in ../conf/yts/\n");
+      printf("Successfully Initialized MgmtAPI in %s \n", PKGLOCALSTATEDIR);
     }
   } else {
-    snprintf(config_path, sizeof(config_path), "%s/conf/yts/", ts_path);
-
+    snprintf(config_path, sizeof(config_path), "%s/var/trafficserver/", ts_path);
     // initialize MgmtAPI
-
     INKError status = INKInit(config_path);
     if (status) {
       printf("INKInit %d: Failed to initialize MgmtAPI in %s\n", status, config_path);

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebIntrMain.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebIntrMain.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebIntrMain.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebIntrMain.cc Wed Dec 16 00:57:28 2009
@@ -791,29 +791,28 @@
 
   // INKqa09866
   // fire up interface for ts configuration through API; use absolute path from root to 
-  // set up socket paths; if can't get root path, assume running TM from bin directory
-  char config_path[1024];
+  // set up socket paths; 
+  char local_state_path[1024];
   char api_sock_path[1024];
   char event_sock_path[1024];
 
-  bzero(config_path, 1024);
+  bzero(local_state_path, 1024);
   bzero(api_sock_path, 1024);
   bzero(event_sock_path, 1024);
-  char *config_dir;
-  found = (RecGetRecordString_Xmalloc("proxy.config.config_dir", &config_dir) == REC_ERR_OKAY);
+  char *local_state_dir;
+  found = (RecGetRecordString_Xmalloc("proxy.config.local_state_dir", &local_state_dir) == REC_ERR_OKAY);
 
   if (found == true) {
-    ink_snprintf(config_path, sizeof(config_path), "%s", config_dir);
-    ink_snprintf(config_path, sizeof(config_path), "%s", config_dir);
-    xfree(config_dir);
+    ink_snprintf(local_state_path, sizeof(local_state_path), "%s", local_state_dir);
+    ink_snprintf(local_state_path, sizeof(local_state_path), "%s", local_state_dir);
+    xfree(local_state_dir);
   } else {
-    // else assume we're in the bin directory...
-    ink_snprintf(config_path, sizeof(config_path), "..%sconfig", DIR_SEP);
-    ink_snprintf(config_path, sizeof(config_path), "..%sconfig", DIR_SEP);
+    mgmt_elog("please set 'proxy.config.local_state_dir'\n");
+    _exit(1);
   }
 
-  ink_snprintf(api_sock_path, sizeof(api_sock_path), "%s%smgmtapisocket", config_path, DIR_SEP);
-  ink_snprintf(event_sock_path, sizeof(event_sock_path), "%s%seventapisocket", config_path, DIR_SEP);
+  ink_snprintf(api_sock_path, sizeof(api_sock_path), "%s%smgmtapisocket", local_state_path, DIR_SEP);
+  ink_snprintf(event_sock_path, sizeof(event_sock_path), "%s%seventapisocket", local_state_path, DIR_SEP);
 
   // INKqa12562: MgmtAPI sockets should be created with 775 permission
   mode_t oldmask = umask(S_IWOTH);

Modified: incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebReconfig.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebReconfig.cc?rev=891090&r1=891089&r2=891090&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebReconfig.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebReconfig.cc Wed Dec 16 00:57:28 2009
@@ -292,7 +292,7 @@
   int rec_err = RecGetRecordString_Xmalloc("proxy.config.admin.access_control_file", &file);
   if (rec_err != REC_ERR_OKAY)
     return;
-  ink_snprintf(fpath, sizeof(fpath), "%s%s", mgmt_path, file);
+  ink_snprintf(fpath, sizeof(fpath), "%s%s%s", mgmt_path, DIR_SEP, file);
 
 #if !defined (_WIN32)
   if ((fd =::mgmt_open(fpath, O_RDONLY)) < 0) {
@@ -445,7 +445,7 @@
   int rec_err = RecGetRecordString_Xmalloc("proxy.config.admin.lang_dict", &file);
   if (rec_err != REC_ERR_OKAY)
     return;
-  ink_snprintf(fpath, FILE_NAME_MAX, "%s%s", mgmt_path, file);
+  ink_snprintf(fpath, FILE_NAME_MAX, "%s%s%s", mgmt_path, DIR_SEP, file);
   fbuf = 0;
   if (WebFileImport_Xmalloc(fpath, &file_buf, &file_size) != WEB_HTTP_ERR_OKAY) {
     mgmt_log(stderr, "[configLangDict] could not find language dictionary "