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 2010/11/30 02:43:06 UTC

svn commit: r1040383 [8/38] - in /trafficserver/traffic/branches/wccp: ./ build/ contrib/ contrib/perl/AdminClient/lib/Apache/TS/ example/ example/add-header/ example/app-template/ example/append-transform/ example/basic-auth/ example/blacklist-0/ exam...

Modified: trafficserver/traffic/branches/wccp/iocore/net/UnixNet.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/iocore/net/UnixNet.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/iocore/net/UnixNet.cc (original)
+++ trafficserver/traffic/branches/wccp/iocore/net/UnixNet.cc Tue Nov 30 01:42:55 2010
@@ -55,9 +55,10 @@ struct InactivityCop:public Continuation
       vc_next = (UnixNetVConnection*)vc->link.next;
       if (vc->inactivity_timeout_in && vc->next_inactivity_timeout_at && vc->next_inactivity_timeout_at < now){
         vc->handleEvent(EVENT_IMMEDIATE, e);
-      } else
+      } else {
         if (vc->closed)
           close_UnixNetVConnection(vc, e->ethread);
+      }
       vc = vc_next;
     }
     return 0;
@@ -102,8 +103,8 @@ PollCont::pollEvent(int event, Event *e)
         (!net_handler->read_ready_list.empty() || !net_handler->read_ready_list.empty() ||
          !net_handler->read_enable_list.empty() || !net_handler->write_enable_list.empty())) {
       NetDebug("iocore_net_poll", "rrq: %d, wrq: %d, rel: %d, wel: %d", net_handler->read_ready_list.empty(),
-            net_handler->write_ready_list.empty(), net_handler->read_enable_list.empty(),
-            net_handler->write_enable_list.empty());
+               net_handler->write_ready_list.empty(), net_handler->read_enable_list.empty(),
+               net_handler->write_enable_list.empty());
       poll_timeout = 0;         //poll immediately returns -- we have triggered stuff to process right now
     } else {
       poll_timeout = net_config_poll_timeout;
@@ -121,7 +122,7 @@ PollCont::pollEvent(int event, Event *e)
   pollDescriptor->result = epoll_wait(pollDescriptor->epoll_fd,
                                       pollDescriptor->ePoll_Triggered_Events, POLL_DESCRIPTOR_SIZE, poll_timeout);
   NetDebug("iocore_net_poll", "[PollCont::pollEvent] epoll_fd: %d, timeout: %d, results: %d", pollDescriptor->epoll_fd, poll_timeout,
-        pollDescriptor->result);
+           pollDescriptor->result);
 #elif TS_USE_KQUEUE
   struct timespec tv;
   tv.tv_sec = poll_timeout / 1000;
@@ -131,7 +132,7 @@ PollCont::pollEvent(int event, Event *e)
                                   POLL_DESCRIPTOR_SIZE,
                                   &tv);
   NetDebug("iocore_net_poll", "[PollCont::pollEvent] kueue_fd: %d, timeout: %d, results: %d", pollDescriptor->kqueue_fd, poll_timeout,
-        pollDescriptor->result);
+           pollDescriptor->result);
 #elif TS_USE_PORT
   int retval;
   timespec_t ptimeout;
@@ -139,15 +140,15 @@ PollCont::pollEvent(int event, Event *e)
   ptimeout.tv_nsec = 1000000 * (poll_timeout % 1000);
   unsigned nget = 1;
   if((retval = port_getn(pollDescriptor->port_fd,
-			pollDescriptor->Port_Triggered_Events,
-			POLL_DESCRIPTOR_SIZE, &nget, &ptimeout)) < 0) {
+                         pollDescriptor->Port_Triggered_Events,
+                         POLL_DESCRIPTOR_SIZE, &nget, &ptimeout)) < 0) {
     pollDescriptor->result = 0;
     switch(errno) {
     case EINTR:
     case EAGAIN:
     case ETIME:
       if (nget > 0) {
-	pollDescriptor->result = (int)nget;
+        pollDescriptor->result = (int)nget;
       }
       break;
     default:
@@ -158,9 +159,9 @@ PollCont::pollEvent(int event, Event *e)
     pollDescriptor->result = (int)nget;
   }
   NetDebug("iocore_net_poll", "[PollCont::pollEvent] %d[%s]=port_getn(%d,%p,%d,%d,%d),results(%d)",
-	   retval,retval < 0 ? strerror(errno) : "ok",
-	   pollDescriptor->port_fd, pollDescriptor->Port_Triggered_Events,
-	   POLL_DESCRIPTOR_SIZE, nget, poll_timeout, pollDescriptor->result);
+           retval,retval < 0 ? strerror(errno) : "ok",
+           pollDescriptor->port_fd, pollDescriptor->Port_Triggered_Events,
+           POLL_DESCRIPTOR_SIZE, nget, poll_timeout, pollDescriptor->result);
 #else
 #error port me
 #endif
@@ -299,8 +300,7 @@ NetHandler::mainNetEvent(int event, Even
   NET_INCREMENT_DYN_STAT(net_handler_run_stat);
 
   process_enabled_list(this, e->ethread);
-  if (likely(!read_ready_list.empty() || !write_ready_list.empty() ||
-             !read_enable_list.empty() || !write_enable_list.empty()))
+  if (likely(!read_ready_list.empty() || !write_ready_list.empty() || !read_enable_list.empty() || !write_enable_list.empty()))
     poll_timeout = 0; // poll immediately returns -- we have triggered stuff to process right now
   else
     poll_timeout = net_config_poll_timeout;
@@ -321,9 +321,7 @@ NetHandler::mainNetEvent(int event, Even
   struct timespec tv;
   tv.tv_sec = poll_timeout / 1000;
   tv.tv_nsec = 1000000 * (poll_timeout % 1000);
-  pd->result = kevent(pd->kqueue_fd, NULL, 0,
-                      pd->kq_Triggered_Events, POLL_DESCRIPTOR_SIZE,
-                      &tv);
+  pd->result = kevent(pd->kqueue_fd, NULL, 0, pd->kq_Triggered_Events, POLL_DESCRIPTOR_SIZE, &tv);
   NetDebug("iocore_net_main_poll", "[NetHandler::mainNetEvent] kevent(%d,%f), result=%d", pd->kqueue_fd,poll_timeout,pd->result);
 #elif TS_USE_PORT
   int retval;
@@ -331,15 +329,14 @@ NetHandler::mainNetEvent(int event, Even
   ptimeout.tv_sec = poll_timeout / 1000;
   ptimeout.tv_nsec = 1000000 * (poll_timeout % 1000);
   unsigned nget = 1;
-  if((retval = port_getn(pd->port_fd, pd->Port_Triggered_Events,
-			POLL_DESCRIPTOR_SIZE, &nget, &ptimeout)) < 0) {
+  if((retval = port_getn(pd->port_fd, pd->Port_Triggered_Events, POLL_DESCRIPTOR_SIZE, &nget, &ptimeout)) < 0) {
     pd->result = 0;
     switch(errno) {
     case EINTR:
     case EAGAIN:
     case ETIME:
       if (nget > 0) {
-	pd->result = (int)nget;
+        pd->result = (int)nget;
       }
       break;
     default:
@@ -350,9 +347,10 @@ NetHandler::mainNetEvent(int event, Even
     pd->result = (int)nget;
   }
   NetDebug("iocore_net_main_poll", "[NetHandler::mainNetEvent] %d[%s]=port_getn(%d,%p,%d,%d,%d),results(%d)",
-	   retval,retval < 0 ? strerror(errno) : "ok",
-	   pd->port_fd, pd->Port_Triggered_Events,
-	   POLL_DESCRIPTOR_SIZE, nget, poll_timeout, pd->result);
+           retval,retval < 0 ? strerror(errno) : "ok",
+           pd->port_fd, pd->Port_Triggered_Events,
+           POLL_DESCRIPTOR_SIZE, nget, poll_timeout, pd->result);
+
 #else
 #error port me
 #endif
@@ -369,7 +367,7 @@ NetHandler::mainNetEvent(int event, Even
           read_ready_list.enqueue(vc);
         else if (get_ev_events(pd,x) & EVENTIO_ERROR) {
           // check for unhandled epoll events that should be handled
-          NetDebug("iocore_net_main", "Unhandled epoll event on read: 0x%04x read.enabled=%d closed=%d read.netready_queue=%d",
+          Debug("iocore_net_main", "Unhandled epoll event on read: 0x%04x read.enabled=%d closed=%d read.netready_queue=%d",
                 get_ev_events(pd,x), vc->read.enabled, vc->closed, read_ready_list.in(vc));
         }
       }
@@ -381,22 +379,21 @@ NetHandler::mainNetEvent(int event, Even
           write_ready_list.enqueue(vc);
         else if (get_ev_events(pd,x) & EVENTIO_ERROR) {
           // check for unhandled epoll events that should be handled
-          NetDebug("iocore_net_main",
+          Debug("iocore_net_main",
                 "Unhandled epoll event on write: 0x%04x write.enabled=%d closed=%d write.netready_queue=%d",
                 get_ev_events(pd,x), vc->write.enabled, vc->closed, write_ready_list.in(vc));
         }
       } else if (!get_ev_events(pd,x) & EVENTIO_ERROR) {
-        NetDebug("iocore_net_main", "Unhandled epoll event: 0x%04x", get_ev_events(pd,x));
+        Debug("iocore_net_main", "Unhandled epoll event: 0x%04x", get_ev_events(pd,x));
       }
     } else if (epd->type == EVENTIO_DNS_CONNECTION) {
       if (epd->data.dnscon != NULL) {
-        dnsqueue.enqueue(epd->data.dnscon);
+        epd->data.dnscon->trigger(); // Make sure the DNSHandler for this con knows we triggered
 #if defined(USE_EDGE_TRIGGER)
         epd->refresh(EVENTIO_READ);
 #endif
       }
-    }
-    else if (epd->type == EVENTIO_ASYNC_SIGNAL)
+    } else if (epd->type == EVENTIO_ASYNC_SIGNAL)
       net_signal_hook_callback(trigger_event->ethread);
     ev_next_event(pd,x);
   }

Modified: trafficserver/traffic/branches/wccp/iocore/net/UnixNetAccept.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/iocore/net/UnixNetAccept.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/iocore/net/UnixNetAccept.cc (original)
+++ trafficserver/traffic/branches/wccp/iocore/net/UnixNetAccept.cc Tue Nov 30 01:42:55 2010
@@ -96,8 +96,7 @@ net_accept(NetAccept * na, void *ep, boo
     vc = (UnixNetVConnection *) na->alloc_cache;
     if (!vc) {
       vc = na->allocateThread(e->ethread);
-      ProxyMutex *mutex = e->ethread->mutex;
-      NET_INCREMENT_DYN_STAT(net_connections_currently_open_stat);
+      NET_SUM_GLOBAL_DYN_STAT(net_connections_currently_open_stat, 1);
       vc->id = net_next_connection_number();
       na->alloc_cache = vc;
 #if TS_USE_DETAILED_LOG
@@ -122,9 +121,9 @@ net_accept(NetAccept * na, void *ep, boo
     na->alloc_cache = NULL;
 
     vc->submit_time = ink_get_hrtime();
-    vc->ip = vc->con.sa.sin_addr.s_addr;
-    vc->port = ntohs(vc->con.sa.sin_port);
-    vc->accept_port = ntohs(na->server.sa.sin_port);
+    vc->ip = ((struct sockaddr_in *)(&(vc->con.sa)))->sin_addr.s_addr;
+    vc->port = ntohs(((struct sockaddr_in *)(&(vc->con.sa)))->sin_port);
+    vc->accept_port = ntohs(((struct sockaddr_in *)(&(na->server.sa)))->sin_port);
     vc->mutex = new_ProxyMutex();
     vc->action_ = *na->action_;
     vc->set_is_transparent(na->server.f_inbound_transparent);
@@ -167,21 +166,25 @@ net_accept_main_blocking(NetAccept * na,
 }
 
 
-// Functions all THREAD_FREE and THREAD_ALLOC to be performed
-// for both SSL and regular UnixNetVConnection transparent to
-// accept functions.
 UnixNetVConnection *
 NetAccept::allocateThread(EThread * t)
 {
-  return ((UnixNetVConnection *) THREAD_ALLOC(netVCAllocator, t));
+  return ((UnixNetVConnection *)THREAD_ALLOC(netVCAllocator, t));
 }
 
 void
 NetAccept::freeThread(UnixNetVConnection * vc, EThread * t)
 {
+  ink_assert(!vc->from_accept_thread);
   THREAD_FREE(vc, netVCAllocator, t);
 }
 
+// This allocates directly on the class allocator, used for accept threads.
+UnixNetVConnection *
+NetAccept::allocateGlobal()
+{
+  return (UnixNetVConnection *)netVCAllocator.alloc();
+}
 
 // Virtual function allows the correct
 // etype to be used in NetAccept functions (ET_SSL
@@ -203,8 +206,6 @@ NetAccept::init_accept_loop()
     action_->continuation->mutex = new_ProxyMutex();
     action_->mutex = action_->continuation->mutex;
   }
-  do_listen(BLOCKING);
-  unix_netProcessor.accepts_on_thread.push(this);
   SET_CONTINUATION_HANDLER(this, &NetAccept::acceptLoopEvent);
   eventProcessor.spawn_thread(this);
 }
@@ -247,7 +248,8 @@ NetAccept::init_accept_per_thread()
   else
     SET_HANDLER((NetAcceptHandler) & NetAccept::acceptEvent);
   period = ACCEPT_PERIOD;
-  NetAccept *a = this;
+
+  NetAccept *a;
   n = eventProcessor.n_threads_for_type[ET_NET];
   for (i = 0; i < n; i++) {
     if (i < n - 1) {
@@ -277,7 +279,7 @@ NetAccept::do_listen(bool non_blocking)
     }
   } else {
   Lretry:
-    if ((res = server.listen(port, non_blocking, recv_bufsize, send_bufsize)))
+    if ((res = server.listen(port, domain, non_blocking, recv_bufsize, send_bufsize)))
       Warning("unable to listen on port %d: %d %d, %s", port, res, errno, strerror(errno));
   }
   if (callback_on_open && !action_->cancelled) {
@@ -302,8 +304,10 @@ NetAccept::do_blocking_accept(NetAccept 
   //added by YTS Team, yamsat
   do {
     vc = (UnixNetVConnection *) master_na->alloc_cache;
-    if (!vc) {
-      vc = allocateThread(t);
+    if (likely(!vc)) {
+      //vc = allocateThread(t);
+      vc = allocateGlobal(); // Bypass proxy / thread allocator
+      vc->from_accept_thread = true;
       vc->id = net_next_connection_number();
       master_na->alloc_cache = vc;
 #if TS_USE_DETAILED_LOG
@@ -342,11 +346,11 @@ NetAccept::do_blocking_accept(NetAccept 
     check_emergency_throttle(vc->con);
     master_na->alloc_cache = NULL;
 
-    RecIncrGlobalRawStatSum(net_rsb, net_connections_currently_open_stat, 1);
+    NET_SUM_GLOBAL_DYN_STAT(net_connections_currently_open_stat, 1);
     vc->submit_time = now;
-    vc->ip = vc->con.sa.sin_addr.s_addr;
-    vc->port = ntohs(vc->con.sa.sin_port);
-    vc->accept_port = ntohs(server.sa.sin_port);
+    vc->ip = ((struct sockaddr_in *)(&(vc->con.sa)))->sin_addr.s_addr;
+    vc->port = ntohs(((struct sockaddr_in *)(&(vc->con.sa)))->sin_port);
+    vc->accept_port = ntohs(((struct sockaddr_in *)(&(server.sa)))->sin_port);
     vc->set_is_transparent(master_na->server.f_inbound_transparent);
     vc->set_is_other_side_transparent(master_na->server.f_outbound_transparent);
     Debug("http_tproxy", "Marking accepted %sconnect on %x as%s outbound transparent.\n",
@@ -392,8 +396,8 @@ NetAccept::acceptEvent(int event, void *
       if ((res = accept_fn(this, e, false)) < 0) {
         NET_DECREMENT_DYN_STAT(net_accepts_currently_open_stat);
         /* INKqa11179 */
-        Warning("Accept on port %d failed with error no %d", ntohs(server.sa.sin_port), res);
-        Warning("Traffic Server may be unable to accept more network" "connections on %d", ntohs(server.sa.sin_port));
+        Warning("Accept on port %d failed with error no %d", ntohs(((struct sockaddr_in *)(&(server.sa)))->sin_port), res);
+        Warning("Traffic Server may be unable to accept more network" "connections on %d", ntohs(((struct sockaddr_in *)(&(server.sa)))->sin_port));
         e->cancel();
         delete this;
         return EVENT_DONE;
@@ -433,7 +437,7 @@ NetAccept::acceptFastEvent(int event, vo
     if (likely(fd >= 0)) {
       vc->addLogMessage("accepting the connection");
 
-      NetDebug("iocore_net", "accepted a new socket: %d", fd);
+      Debug("iocore_net", "accepted a new socket: %d", fd);
       if (send_bufsize > 0) {
         if (unlikely(socketManager.set_sndbuf_size(fd, send_bufsize))) {
           bufsz = ROUNDUP(send_bufsize, 1024);
@@ -456,11 +460,11 @@ NetAccept::acceptFastEvent(int event, vo
       }
       if (sockopt_flags & 1) {  // we have to disable Nagle
         safe_setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, ON, sizeof(int));
-        NetDebug("socket", "::acceptFastEvent: setsockopt() TCP_NODELAY on socket");
+        Debug("socket", "::acceptFastEvent: setsockopt() TCP_NODELAY on socket");
       }
       if (sockopt_flags & 2) {
         safe_setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, ON, sizeof(int));
-        NetDebug("socket", "::acceptFastEvent: setsockopt() SO_KEEPALIVE on socket");
+        Debug("socket", "::acceptFastEvent: setsockopt() SO_KEEPALIVE on socket");
       }
       do {
         res = safe_nonblocking(fd);
@@ -490,13 +494,13 @@ NetAccept::acceptFastEvent(int event, vo
     }
     vc->con.fd = fd;
 
-    NET_INCREMENT_DYN_STAT(net_connections_currently_open_stat);
+    NET_SUM_GLOBAL_DYN_STAT(net_connections_currently_open_stat, 1);
     vc->id = net_next_connection_number();
 
     vc->submit_time = ink_get_hrtime();
-    vc->ip = vc->con.sa.sin_addr.s_addr;
-    vc->port = ntohs(vc->con.sa.sin_port);
-    vc->accept_port = ntohs(server.sa.sin_port);
+    vc->ip = ((struct sockaddr_in *)(&(vc->con.sa)))->sin_addr.s_addr;
+    vc->port = ntohs(((struct sockaddr_in *)(&(vc->con.sa)))->sin_port);
+    vc->accept_port = ntohs(((struct sockaddr_in *)(&(server.sa)))->sin_port);
     vc->set_is_transparent(server.f_inbound_transparent);
     vc->set_is_other_side_transparent(server.f_outbound_transparent);
     Debug("http_tproxy", "Marking fast accepted %sconnection on as%s outbound transparent.\n",
@@ -520,7 +524,7 @@ NetAccept::acceptFastEvent(int event, vo
 
 #ifdef USE_EDGE_TRIGGER
     // Set the vc as triggered and place it in the read ready queue in case there is already data on the socket.
-    NetDebug("iocore_net", "acceptEvent : Setting triggered and adding to the read ready queue");
+    Debug("iocore_net", "acceptEvent : Setting triggered and adding to the read ready queue");
     vc->read.triggered = 1;
     vc->nh->read_ready_list.enqueue(vc);
 #endif

Modified: trafficserver/traffic/branches/wccp/iocore/net/UnixNetPages.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/iocore/net/UnixNetPages.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/iocore/net/UnixNetPages.cc (original)
+++ trafficserver/traffic/branches/wccp/iocore/net/UnixNetPages.cc Tue Nov 30 01:42:55 2010
@@ -39,13 +39,13 @@ struct ShowNet: public ShowCont
   int showMain(int event, Event * e)
   {
     CHECK_SHOW(begin("Net"));
-    CHECK_SHOW(show("<H3>Show <A HREF=\"/connections\">Connections</A></H3>\n"
-                    "<H3>Show <A HREF=\"/threads\">Net Threads</A></H3>\n"
-                    "<form method = GET action = \"/ips\">\n"
+    CHECK_SHOW(show("<H3>Show <A HREF=\"./connections\">Connections</A></H3>\n"
+                    "<H3>Show <A HREF=\"./threads\">Net Threads</A></H3>\n"
+                    "<form method = GET action = \"./ips\">\n"
                     "Show Connections to/from IP (e.g. 127.0.0.1):<br>\n"
                     "<input type=text name=ip size=64 maxlength=256>\n"
                     "</form>\n"
-                    "<form method = GET action = \"/ports\">\n"
+                    "<form method = GET action = \"./ports\">\n"
                     "Show Connections to/from Port (e.g. 80):<br>\n"
                     "<input type=text name=name size=64 maxlength=256>\n" "</form>\n"));
     return complete(event, e);

Modified: trafficserver/traffic/branches/wccp/iocore/net/UnixNetProcessor.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/iocore/net/UnixNetProcessor.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/iocore/net/UnixNetProcessor.cc (original)
+++ trafficserver/traffic/branches/wccp/iocore/net/UnixNetProcessor.cc Tue Nov 30 01:42:55 2010
@@ -28,15 +28,13 @@
 #include "StatPages.h"
 #endif
 
-// Globals
-int use_accept_thread = 0;
-
 NetProcessor::AcceptOptions const NetProcessor::DEFAULT_ACCEPT_OPTIONS;
 
 NetProcessor::AcceptOptions&
 NetProcessor::AcceptOptions::reset()
 {
   port = 0;
+  accept_threads = 0;
   domain = AF_INET;
   etype = ET_NET;
   f_callback_on_open = false;
@@ -64,8 +62,10 @@ net_next_connection_number()
 Action *
 NetProcessor::accept(Continuation * cont,
                      int port,
+                     int domain,
                      bool frequent_accept,
                      unsigned int accept_ip,
+                     char *accept_ip_str,
                      bool callback_on_open,
                      SOCKET listen_socket_in,
                      int accept_pool_size,
@@ -79,13 +79,14 @@ NetProcessor::accept(Continuation * cont
   (void) accept_only;           // NT only
   (void) bound_sockaddr;        // NT only
   (void) bound_sockaddr_size;   // NT only
-  NetDebug("iocore_net_processor",
-	   "NetProcessor::accept - port %d,recv_bufsize %d, send_bufsize %d, sockopt 0x%0lX",
-	   port, recv_bufsize, send_bufsize, sockopt_flags
-	   );
+  Debug("iocore_net_processor",
+           "NetProcessor::accept - port %d,recv_bufsize %d, send_bufsize %d, sockopt 0x%0lX",
+           port, recv_bufsize, send_bufsize, sockopt_flags
+           );
 
   AcceptOptions opt;
   opt.port = port;
+  opt.domain = domain;
   opt.etype = etype;
   opt.f_callback_on_open = callback_on_open;
   opt.recv_bufsize = recv_bufsize;
@@ -97,19 +98,20 @@ NetProcessor::accept(Continuation * cont
                                                       frequent_accept,
                                                       net_accept,
                                                       accept_ip,
-						      opt
-						      );
+                                                      accept_ip_str,
+                                                      opt
+                                                      );
 }
 
 Action *
 NetProcessor::main_accept(Continuation * cont, SOCKET fd,
                           sockaddr * bound_sockaddr, int *bound_sockaddr_size,
                           bool accept_only,
-			  AcceptOptions const& opt
-			  )
+                          AcceptOptions const& opt
+                          )
 {
   (void) accept_only;           // NT only
-  NetDebug("iocore_net_processor", "NetProcessor::main_accept - port %d,recv_bufsize %d, send_bufsize %d, sockopt 0x%0lX",
+  Debug("iocore_net_processor", "NetProcessor::main_accept - port %d,recv_bufsize %d, send_bufsize %d, sockopt 0x%0lX",
         opt.port, opt.recv_bufsize, opt.send_bufsize, opt.sockopt_flags);
   return ((UnixNetProcessor *) this)->accept_internal(cont, fd,
                                                       bound_sockaddr,
@@ -117,8 +119,9 @@ NetProcessor::main_accept(Continuation *
                                                       true,
                                                       net_accept,
                                                       ((UnixNetProcessor *) this)->incoming_ip_to_bind_saddr,
-						      opt
-						      );
+                                                      ((UnixNetProcessor *) this)->incoming_ip_to_bind,
+                                                      opt
+                                                      );
 }
 
 
@@ -131,20 +134,25 @@ UnixNetProcessor::accept_internal(Contin
                                   bool frequent_accept,
                                   AcceptFunction fn,
                                   unsigned int accept_ip,
-				  AcceptOptions const& opt
-				  )
+                                  char *accept_ip_str,
+                                  AcceptOptions const& opt
+                                  )
 {
   EventType et = opt.etype; // setEtype requires non-const ref.
-  setEtype(et);
   NetAccept *na = createNetAccept();
-
   EThread *thread = this_ethread();
   ProxyMutex *mutex = thread->mutex;
+
+  // Potentially upgrade to SSL.
+  upgradeEtype(et);
+
   NET_INCREMENT_DYN_STAT(net_accepts_currently_open_stat);
   na->port = opt.port;
+  na->domain = opt.domain;
   na->accept_fn = fn;
   na->server.fd = fd;
   na->server.accept_ip = accept_ip;
+  na->server.accept_ip_str = accept_ip_str;
   na->server.f_outbound_transparent = opt.f_outbound_transparent;
   na->server.f_inbound_transparent = opt.f_inbound_transparent;
   if (opt.f_outbound_transparent) Debug("http_tproxy", "Marking accept server %x on port %d as outbound transparent.\n", na, opt.port);
@@ -159,10 +167,23 @@ UnixNetProcessor::accept_internal(Contin
   if (na->callback_on_open)
     na->mutex = cont->mutex;
   if (frequent_accept) { // true
-    if (use_accept_thread) // 0
-      na->init_accept_loop();
-    else
+    if (opt.accept_threads > 0)  {
+      if (0 == na->do_listen(BLOCKING)) {
+        NetAccept *a;
+
+        for (int i=1; i < opt.accept_threads; ++i) {
+          a = NEW(new NetAccept);
+          *a = *na;
+          a->init_accept_loop();
+          Debug("iocore_net_accept", "Created accept thread #%d for port %d", i, opt.port);
+        }
+        // Start the "template" accept thread last.
+        Debug("iocore_net_accept", "Created accept thread #%d for port %d", opt.accept_threads, opt.port);
+        na->init_accept_loop();
+      }
+    } else {
       na->init_accept_per_thread();
+    }
   } else
     na->init_accept();
   if (bound_sockaddr && bound_sockaddr_size)
@@ -184,18 +205,17 @@ Action *
 UnixNetProcessor::connect_re_internal(Continuation * cont,
                                       unsigned int ip, int port,  NetVCOptions * opt)
 {
-
   ProxyMutex *mutex = cont->mutex;
   EThread *t = mutex->thread_holding;
   UnixNetVConnection *vc = allocateThread(t);
+
   if (opt)
     vc->options = *opt;
   else
     opt = &vc->options;
 
-  // virtual function used to set etype to ET_SSL
-  // for SSLNetProcessor.  Does nothing if not overwritten.
-  setEtype(opt->etype);
+  // virtual function used to upgrade etype to ET_SSL for SSLNetProcessor.
+  upgradeEtype(opt->etype);
 
 #ifndef INK_NO_SOCKS
   bool using_socks = (socks_conf_stuff->socks_needed && opt->socks_support != NO_SOCKS
@@ -210,7 +230,7 @@ UnixNetProcessor::connect_re_internal(Co
     );
   SocksEntry *socksEntry = NULL;
 #endif
-  NET_INCREMENT_DYN_STAT(net_connections_currently_open_stat);
+  NET_SUM_GLOBAL_DYN_STAT(net_connections_currently_open_stat, 1);
   vc->id = net_next_connection_number();
   vc->submit_time = ink_get_hrtime();
   vc->setSSLClientConnection(true);
@@ -220,7 +240,7 @@ UnixNetProcessor::connect_re_internal(Co
   Action *result = &vc->action_;
 #ifndef INK_NO_SOCKS
   if (using_socks) {
-    NetDebug("Socks", "Using Socks ip: %u.%u.%u.%u:%d\n", PRINT_IP(ip), port);
+    Debug("Socks", "Using Socks ip: %u.%u.%u.%u:%d\n", PRINT_IP(ip), port);
     socksEntry = socksAllocator.alloc();
     socksEntry->init(cont->mutex, vc, opt->socks_support, opt->socks_version);        /*XXXX remove last two args */
     socksEntry->action_ = cont;
@@ -235,7 +255,7 @@ UnixNetProcessor::connect_re_internal(Co
     result = &socksEntry->action_;
     vc->action_ = socksEntry;
   } else {
-    NetDebug("Socks", "Not Using Socks %d \n", socks_conf_stuff->socks_needed);
+    Debug("Socks", "Not Using Socks %d \n", socks_conf_stuff->socks_needed);
     vc->action_ = cont;
   }
 #else
@@ -292,7 +312,7 @@ struct CheckConnect:public Continuation
     switch (event) {
     case NET_EVENT_OPEN:
       vc = (UnixNetVConnection *) e;
-      NetDebug("iocore_net_connect", "connect Net open");
+      Debug("iocore_net_connect", "connect Net open");
       vc->do_io_write(this, 10, /* some non-zero number just to get the poll going */
                       reader);
       /* dont wait for more than timeout secs */
@@ -301,7 +321,7 @@ struct CheckConnect:public Continuation
       break;
 
       case NET_EVENT_OPEN_FAILED:
-	NetDebug("iocore_net_connect", "connect Net open failed");
+        Debug("iocore_net_connect", "connect Net open failed");
       if (!action_.cancelled)
         action_.continuation->handleEvent(NET_EVENT_OPEN_FAILED, (void *) e);
       break;
@@ -314,7 +334,7 @@ struct CheckConnect:public Continuation
           ret = getsockopt(vc->con.fd, SOL_SOCKET, SO_ERROR, (char *) &sl, &sz);
         if (!ret && sl == 0)
         {
-          NetDebug("iocore_net_connect", "connection established");
+          Debug("iocore_net_connect", "connection established");
           /* disable write on vc */
           vc->write.enabled = 0;
           vc->cancel_inactivity_timeout();
@@ -335,7 +355,7 @@ struct CheckConnect:public Continuation
         action_.continuation->handleEvent(NET_EVENT_OPEN_FAILED, (void *) -ENET_CONNECT_FAILED);
       break;
     case VC_EVENT_INACTIVITY_TIMEOUT:
-      NetDebug("iocore_net_connect", "connect timed out");
+      Debug("iocore_net_connect", "connect timed out");
       vc->do_io_close();
       if (!action_.cancelled)
         action_.continuation->handleEvent(NET_EVENT_OPEN_FAILED, (void *) -ENET_CONNECT_TIMEOUT);
@@ -384,7 +404,7 @@ Action *
 NetProcessor::connect_s(Continuation * cont, unsigned int ip,
                         int port, int timeout, NetVCOptions * opt)
 {
-  NetDebug("iocore_net_connect", "NetProcessor::connect_s called");
+  Debug("iocore_net_connect", "NetProcessor::connect_s called");
   CheckConnect *c = NEW(new CheckConnect(cont->mutex));
   return c->connect_s(cont, ip, port, timeout, opt);
 }
@@ -397,13 +417,14 @@ int
 UnixNetProcessor::start(int)
 {
   EventType etype = ET_NET;
+
   netHandler_offset = eventProcessor.allocate(sizeof(NetHandler));
   pollCont_offset = eventProcessor.allocate(sizeof(PollCont));
 
-  // customize the threads for net
-  setEtype(etype);
   // etype is ET_NET for netProcessor
   // and      ET_SSL for sslNetProcessor
+  upgradeEtype(etype);
+
   n_netthreads = eventProcessor.n_threads_for_type[etype];
   netthreads = eventProcessor.eventthread[etype];
   for (int i = 0; i < n_netthreads; i++) {
@@ -447,7 +468,8 @@ UnixNetProcessor::start(int)
  */
 #ifdef NON_MODULAR
   extern Action *register_ShowNet(Continuation * c, HTTPHdr * h);
-  statPagesManager.register_http("net", register_ShowNet);
+  if (etype == ET_NET)
+    statPagesManager.register_http("net", register_ShowNet);
 #endif
   return 1;
 }
@@ -466,10 +488,10 @@ UnixNetProcessor::allocateThread(EThread
 void
 UnixNetProcessor::freeThread(UnixNetVConnection * vc, EThread * t)
 {
+  ink_assert(!vc->from_accept_thread);
   THREAD_FREE(vc, netVCAllocator, t);
 }
 
-
 // Virtual function allows creation of an
 // SSLNetAccept or NetAccept transparent to NetProcessor.
 NetAccept *

Modified: trafficserver/traffic/branches/wccp/iocore/net/UnixNetVConnection.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/iocore/net/UnixNetVConnection.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/iocore/net/UnixNetVConnection.cc (original)
+++ trafficserver/traffic/branches/wccp/iocore/net/UnixNetVConnection.cc Tue Nov 30 01:42:55 2010
@@ -318,7 +318,7 @@ read_from_net(NetHandler *nh, UnixNetVCo
     buf.writer()->fill(r);
 #ifdef DEBUG
     if (buf.writer()->write_avail() <= 0)
-      NetDebug("iocore_net", "read_from_net, read buffer full");
+      Debug("iocore_net", "read_from_net, read buffer full");
 #endif
     s->vio.ndone += r;
     net_activity(vc, thread);
@@ -331,7 +331,7 @@ read_from_net(NetHandler *nh, UnixNetVCo
     ink_assert(ntodo >= 0);
     if (s->vio.ntodo() <= 0) {
       read_signal_done(VC_EVENT_READ_COMPLETE, nh, vc);
-      NetDebug("iocore_net", "read_from_net, read finished - signal done");
+      Debug("iocore_net", "read_from_net, read finished - signal done");
       return;
     } else {
       if (read_signal_and_update(VC_EVENT_READ_READY, vc) != EVENT_CONT)
@@ -784,15 +784,16 @@ UnixNetVConnection::reenable_re(VIO *vio
 }
 
 
-UnixNetVConnection::UnixNetVConnection():
-closed(0), inactivity_timeout_in(0), active_timeout_in(0),
+UnixNetVConnection::UnixNetVConnection()
+  : closed(0), inactivity_timeout_in(0), active_timeout_in(0),
 #ifdef INACTIVITY_TIMEOUT
-  inactivity_timeout(NULL),
+    inactivity_timeout(NULL),
 #else
-  next_inactivity_timeout_at(0),
+    next_inactivity_timeout_at(0),
 #endif
-  active_timeout(NULL), nh(NULL),
-  id(0), ip(0), accept_port(0), port(0), flags(0), recursion(0), submit_time(0), oob_ptr(0)
+    active_timeout(NULL), nh(NULL),
+    id(0), ip(0), accept_port(0), port(0), flags(0), recursion(0), submit_time(0), oob_ptr(0),
+    from_accept_thread(false)
 {
   memset(&local_sa, 0, sizeof local_sa);
   SET_HANDLER((NetVConnHandler) & UnixNetVConnection::startEvent);
@@ -961,7 +962,7 @@ UnixNetVConnection::acceptEvent(int even
   nh = get_NetHandler(thread);
   PollDescriptor *pd = get_PollDescriptor(thread);
   if (ep.start(pd, this, EVENTIO_READ|EVENTIO_WRITE) < 0) {
-    NetDebug("iocore_net", "acceptEvent : failed EventIO::start\n");
+    Debug("iocore_net", "acceptEvent : failed EventIO::start\n");
     close_UnixNetVConnection(this, e->ethread);
     return EVENT_DONE;
   }
@@ -1074,7 +1075,7 @@ UnixNetVConnection::connectUp(EThread *t
   // Initialize this UnixNetVConnection
   //
   int res = 0;
-  NetDebug("iocore_net", "connectUp:: local_addr=%u.%u.%u.%u [%s]\n",
+  Debug("iocore_net", "connectUp:: local_addr=%u.%u.%u.%u [%s]\n",
 	   PRINT_IP(options.local_addr),
 	   NetVCOptions::toString(options.addr_binding)
 	   );
@@ -1087,7 +1088,7 @@ UnixNetVConnection::connectUp(EThread *t
     // when edge triggering is used.
     if (ep.start(get_PollDescriptor(t), this, EVENTIO_READ|EVENTIO_WRITE) < 0) {
       lerrno = errno;
-      NetDebug("iocore_net", "connectUp : Failed to add to epoll list\n");
+      Debug("iocore_net", "connectUp : Failed to add to epoll list\n");
       action_.continuation->handleEvent(NET_EVENT_OPEN_FAILED, (void *) res);
       free(t);
       return CONNECT_FAILURE;
@@ -1123,7 +1124,7 @@ UnixNetVConnection::connectUp(EThread *t
 void
 UnixNetVConnection::free(EThread *t)
 {
-  NET_DECREMENT_THREAD_DYN_STAT(net_connections_currently_open_stat, t);
+  NET_SUM_GLOBAL_DYN_STAT(net_connections_currently_open_stat, -1);
   // clear variables for reuse
   got_remote_addr = 0;
   got_local_addr = 0;
@@ -1147,5 +1148,10 @@ UnixNetVConnection::free(EThread *t)
   ink_debug_assert(!active_timeout);
   ink_debug_assert(con.fd == NO_FD);
   ink_debug_assert(t == this_ethread());
-  THREAD_FREE(this, netVCAllocator, t);
+
+  if (from_accept_thread) {
+    netVCAllocator.free(this);  
+  } else {
+    THREAD_FREE(this, netVCAllocator, t);
+  }
 }

Modified: trafficserver/traffic/branches/wccp/iocore/net/UnixUDPNet.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/iocore/net/UnixUDPNet.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/iocore/net/UnixUDPNet.cc (original)
+++ trafficserver/traffic/branches/wccp/iocore/net/UnixUDPNet.cc Tue Nov 30 01:42:55 2010
@@ -1078,7 +1078,6 @@ UDPQueue::SendUDPPacket(UDPPacketInterna
   int n, count, iov_len = 0;
 
   if (!p->isReliabilityPkt) {
-    p->conn->SetLastSentPktTSSeqNum(p->pktTSSeqNum);
     p->conn->lastSentPktStartTime = p->delivery_time;
   }
 

Propchange: trafficserver/traffic/branches/wccp/libinktomi++/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Tue Nov 30 01:42:55 2010
@@ -6,5 +6,9 @@ ParseRulesCTypeToUpper
 ParseRulesCType
 CompileParseRules
 libinktomi++.a
+ink_config.h
+ink_autoconf.h.in
+ink_autoconf.h
+stamp-h1
 .deps
 .libs

Modified: trafficserver/traffic/branches/wccp/libinktomi++/Allocator.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/Allocator.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/Allocator.cc (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/Allocator.cc Tue Nov 30 01:42:55 2010
@@ -41,58 +41,3 @@ Allocator::Allocator(const char *name, u
   ink_freelist_init(&fl, name, element_size, chunk_size, 0, alignment);
 #endif
 }
-
-#ifdef USE_PARTITION_MEMORY     /* VxWorks */
-
-PART_ID uts_part_id = NULL;
-
-void
-partfree(void *ptr)
-{
-  memPartFree(uts_part_id, (char *) ptr);
-}
-
-void *
-partmalloc(unsigned int size)
-{
-  char *mem;
-  if (NULL == uts_part_id) {
-    if (NULL == (uts_part_id = memPartCreate("uTSmem", 10000000))) {
-      fprintf(stderr, "[TS]: main: Unable to allocate Memory pool(%d bytes)\n", 10000000);
-      return NULL;
-    }
-    memPartOptionsSet(uts_part_id, MEM_ALLOC_ERROR_LOG_FLAG
-                      | MEM_ALLOC_ERROR_SUSPEND_FLAG |
-                      MEM_BLOCK_ERROR_LOG_FLAG | MEM_BLOCK_ERROR_SUSPEND_FLAG | MEM_BLOCK_CHECK);
-
-    /*fprintf(stdout,"[TS]: main: create memory pool, armMemPartitionId=%x\n",  uts_part_id); */
-  }
-
-  mem = (char *) memPartAlloc(uts_part_id, size);
-  return mem;
-}
-
-void *
-partrealloc(void *ptr, unsigned int size)
-{
-  char *mem;
-
-  mem = (char *) memPartRealloc(uts_part_id, (char *) ptr, size);
-  return mem;
-}
-
-void *
-partstrdup(const char *str, int length)
-{
-  char *mem;
-
-  if (length == -1) {
-    mem = (char *) memPartAlloc(uts_part_id, strlen(str) + 1);
-    strcpy(mem, str);
-  } else {
-    mem = (char *) memPartAlloc(uts_part_id, length);
-    strncpy(mem, str, length);
-  }
-  return mem;
-}
-#endif /* PARTITION_MEMORY */

Modified: trafficserver/traffic/branches/wccp/libinktomi++/Allocator.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/Allocator.h?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/Allocator.h (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/Allocator.h Tue Nov 30 01:42:55 2010
@@ -247,10 +247,8 @@ template<class C> inline
 }
 
 template<class C> inline
-  SparceClassAllocator<C>::SparceClassAllocator(const char *name, unsigned int chunk_size, unsigned int alignment,
-                                                   void (*instantiate_func) (C * proto, C * instance)):
-  ClassAllocator <
-C > (name, chunk_size, alignment)
+SparceClassAllocator<C>::SparceClassAllocator(const char *name, unsigned int chunk_size, unsigned int alignment,
+                                              void (*instantiate_func) (C * proto, C * instance)) : ClassAllocator <C> (name, chunk_size, alignment)
 {
   instantiate = instantiate_func;       // NULL by default
 }

Modified: trafficserver/traffic/branches/wccp/libinktomi++/Diags.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/Diags.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/Diags.cc (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/Diags.cc Tue Nov 30 01:42:55 2010
@@ -209,7 +209,7 @@ Diags::print_va(const char *debug_tag, D
 
   // add the thread id
   pthread_t id = pthread_self();
-  end_of_format += snprintf(end_of_format, sizeof(format_buf), "{%lu} ", (unsigned long) id);
+  end_of_format += snprintf(end_of_format, sizeof(format_buf), "{%llu} ", (uint64) id);
 
   ////////////////////////////////
   // start with the user prefix //

Modified: trafficserver/traffic/branches/wccp/libinktomi++/Diags.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/Diags.h?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/Diags.h (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/Diags.h Tue Nov 30 01:42:55 2010
@@ -79,7 +79,7 @@ typedef enum
 
 #define DiagsLevel_IsTerminal(_l) (((_l) >= DL_Fatal) && ((_l) < DL_Undefined))
 
-#ifndef INK_NO_DIAGS
+#ifdef TS_USE_DIAGS
 // Cleanup Function Prototype - Called before ink_fatal to
 //   cleanup process state
 typedef void (*DiagsCleanupFunc) ();
@@ -405,7 +405,7 @@ dummy_debug(const char *dummy_arg ...)
 #define action_tag_assert(_t,_a) /**/
 #endif
 #define	stat_debug_assert(_tst) (void)((_tst) || (Warning(#_tst), debug_tag_assert("stat_check",! #_tst), 0))
-#else // INK_NO_DIAGS
+#else // TS_USE_DIAGS
 
 class Diags
 {
@@ -446,5 +446,5 @@ dummy_debug(char *dummy_arg ...)
 #define debug_tag_assert(_t,_a) /**/
 #define action_tag_assert(_t,_a)
 #define is_diags_on(_t)          0
-#endif // INK_NO_DIAGS
+#endif // TS_USE_DIAGS
 #endif  /*_Diags_h_*/

Modified: trafficserver/traffic/branches/wccp/libinktomi++/Makefile.am
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/Makefile.am?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/Makefile.am (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/Makefile.am Tue Nov 30 01:42:55 2010
@@ -94,8 +94,6 @@ libinktomi___a_SOURCES = \
   ink_rwlock.h \
   ink_sock.cc \
   ink_sock.h \
-  ink_spill.cc \
-  ink_spill.h \
   ink_sprintf.cc \
   ink_sprintf.h \
   ink_stack_trace.cc \

Modified: trafficserver/traffic/branches/wccp/libinktomi++/MatcherUtils.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/MatcherUtils.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/MatcherUtils.cc (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/MatcherUtils.cc Tue Nov 30 01:42:55 2010
@@ -66,7 +66,7 @@ readIntoBuffer(char *file_path, const ch
   }
 
   if (file_info.st_size < 0) {
-    Error("%s Can not get correct file size for %s file : %lld", module_name, file_path, (long long) file_info.st_size);
+    Error("%s Can not get correct file size for %s file : %lld", module_name, file_path, (int64) file_info.st_size);
     close(fd);
     return NULL;
   }
@@ -115,15 +115,13 @@ unescapifyStr(char *buffer)
   char *read = buffer;
   char *write = buffer;
   char subStr[3];
-  long charVal;
 
   subStr[2] = '\0';
   while (*read != '\0') {
     if (*read == '%' && *(read + 1) != '\0' && *(read + 2) != '\0') {
       subStr[0] = *(++read);
       subStr[1] = *(++read);
-      charVal = strtol(subStr, (char **) NULL, 16);
-      *write = (char) charVal;
+      *write = (char)strtol(subStr, (char **) NULL, 16);
       read++;
       write++;
     } else if (*read == '+') {

Modified: trafficserver/traffic/branches/wccp/libinktomi++/Resource.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/Resource.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/Resource.cc (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/Resource.cc Tue Nov 30 01:42:55 2010
@@ -63,38 +63,4 @@ void operator  delete[] (void *p)
   _xfree(p);
 }
 
-#elif defined(USE_PARTITION_MEMORY)     /* VxWorks */
-
-/*-------------------------------------------------------------------------
-  -------------------------------------------------------------------------*/
-void *operator
-new(size_t size)
-{
-  return xmalloc((unsigned int) size);
-}
-
-/*-------------------------------------------------------------------------
-  -------------------------------------------------------------------------*/
-
-void operator
-delete(void *p)
-{
-  xfree(p);
-}
-
-/*-------------------------------------------------------------------------
-  -------------------------------------------------------------------------*/
-void *operator  new[] (size_t size)
-{
-  return xmalloc((unsigned int) size);
-}
-
-/*-------------------------------------------------------------------------
-  -------------------------------------------------------------------------*/
-
-void operator  delete[] (void *p)
-{
-  xfree(p);
-}
-
 #endif /* TRACK_MEMORY */

Modified: trafficserver/traffic/branches/wccp/libinktomi++/Resource.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/Resource.h?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/Resource.h (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/Resource.h Tue Nov 30 01:42:55 2010
@@ -32,15 +32,7 @@
 
 #define NEW(mem)        _xtrack_helper (mem, RES_MEM_PATH)
 
-
-#if defined(__alpha)
-extern void *operator
-new(size_t size)
-throw();
-extern void operator
-delete(void *p)
-throw();
-#elif defined(__SUNPRO_CC) && (__SUNPRO_CC >= 0x500)
+#if defined(__SUNPRO_CC) && (__SUNPRO_CC >= 0x500)
 void *operator
 new(size_t)
 throw(std::bad_alloc);
@@ -52,40 +44,20 @@ extern void *operator  new(size_t size);
 extern void operator  delete(void *p);
 #endif
 
-
-#ifndef __SUNPRO_CC
-
-#ifdef __alpha
-extern void *operator  new[] (size_t size) throw();
-extern void operator  delete[] (void *p) throw();
-#elif !defined (_WIN64)
+#if !defined(__SUNPRO_CC) && !defined (_WIN64)
 extern void *operator  new[] (size_t size);
 extern void operator  delete[] (void *p);
 #endif
 
-#endif /* __SUNPRO_CC */
-
-
 template<class T> static inline T *
 _xtrack_helper(T * ptr, const char *path)
 {
   return (T *) _xtrack(ptr, path);
 }
 
-#elif defined(USE_PARTITION_MEMORY)     /* VxWorks */
-
-#define NEW(mem)        mem
-
-inkcoreapi extern void *operator  new(size_t size);
-inkcoreapi extern void operator  delete(void *p);
-inkcoreapi extern void *operator  new[] (size_t size);
-inkcoreapi extern void operator  delete[] (void *p);
-
-#else /* USE_PARTITION_MEMORY */
+#else
 
 #define NEW(mem)  mem
 
-#endif /* USE_PARTITION_MEMORY */
-
-
+#endif
 #endif /* __RESOURCE_H__ */

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_atomic.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_atomic.h?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_atomic.h (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_atomic.h Tue Nov 30 01:42:55 2010
@@ -44,6 +44,7 @@
 #include "ink_port.h"
 
 #include "ink_apidefs.h"
+#include "ink_mutex.h"
 
 typedef volatile int32 vint32;
 typedef volatile int64 vint64;
@@ -88,14 +89,44 @@ static inline void *ink_atomic_increment
 /* see http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.html */
 
 static inline int32 ink_atomic_swap(pvint32 mem, int32 value) { return __sync_lock_test_and_set(mem, value); }
-static inline int64 ink_atomic_swap64(pvint64 mem, int64 value) { return __sync_lock_test_and_set(mem, value); }
 static inline void *ink_atomic_swap_ptr(vvoidp mem, void *value) { return __sync_lock_test_and_set((void**)mem, value); }
 static inline int ink_atomic_cas(pvint32 mem, int old, int new_value) { return __sync_bool_compare_and_swap(mem, old, new_value); }
-static inline int64 ink_atomic_cas64(pvint64 mem, int64 old, int64 new_value) { return __sync_bool_compare_and_swap(mem, old, new_value); }
 static inline int ink_atomic_cas_ptr(pvvoidp mem, void* old, void* new_value) { return __sync_bool_compare_and_swap(mem, old, new_value); }
 static inline int ink_atomic_increment(pvint32 mem, int value) { return __sync_fetch_and_add(mem, value); }
-static inline int64 ink_atomic_increment64(pvint64 mem, int64 value) { return __sync_fetch_and_add(mem, value); }
 static inline void *ink_atomic_increment_ptr(pvvoidp mem, intptr_t value) { return __sync_fetch_and_add((void**)mem, value); }
+#if defined(__arm__) && (SIZEOF_VOIDP == 4)
+extern ProcessMutex __global_death;
+
+static inline int64 ink_atomic_swap64(pvint64 mem, int64 value) {
+  int64 old;
+  ink_mutex_acquire(&__global_death);
+  old = *mem;
+  *mem = value;
+  ink_mutex_release(&__global_death);
+  return old;
+}
+static inline int64 ink_atomic_cas64(pvint64 mem, int64 old, int64 new_value) {
+  int64 curr;
+  ink_mutex_acquire(&__global_death);
+  curr = *mem;
+  if(old == curr) *mem = new_value;
+  ink_mutex_release(&__global_death);
+  if(old == curr) return 1;
+  return 0;
+}
+static inline int64 ink_atomic_increment64(pvint64 mem, int64 value) {
+  int64 curr;
+  ink_mutex_acquire(&__global_death);
+  curr = *mem;
+  *mem = curr + value;
+  ink_mutex_release(&__global_death);
+  return curr + value;
+}
+#else
+static inline int64 ink_atomic_swap64(pvint64 mem, int64 value) { return __sync_lock_test_and_set(mem, value); }
+static inline int64 ink_atomic_cas64(pvint64 mem, int64 old, int64 new_value) { return __sync_bool_compare_and_swap(mem, old, new_value); }
+static inline int64 ink_atomic_increment64(pvint64 mem, int64 value) { return __sync_fetch_and_add(mem, value); }
+#endif
 
 /* not used for Intel Processors which have sequential(esque) consistency */
 #define INK_WRITE_MEMORY_BARRIER

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_config.h.in
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_config.h.in?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_config.h.in (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_config.h.in Tue Nov 30 01:42:55 2010
@@ -38,14 +38,6 @@
  */
 #include "ink_autoconf.h"
 
-/* Version info
- */
-#define TS_VERSION_STRING             "@TS_VERSION_STRING@"
-#define TS_VERSION_NUMBER              @TS_VERSION_NUMBER@
-#define TS_VERSION_MAJOR               @TS_VERSION_MAJOR@
-#define TS_VERSION_MINOR               @TS_VERSION_MINOR@
-#define TS_VERSION_MICRO               @TS_VERSION_MICRO@
-
 #define BUILD_MACHINE                  "@build_machine@"
 #define BUILD_PERSON                   "@build_person@"
 #define BUILD_GROUP                    "@build_group@"
@@ -133,21 +125,21 @@
 #define TS_HAS_V2STATS                 @has_v2stats@
 #define TS_HAS_PURIFY                  @has_purify@
 #define TS_HAS_DEMANGLE                @has_demangle@
+#define TS_HAS_TESTS                   @has_tests@
 
 /* XXX: Should make those individually selectable ? */
-/* TODO: Use ATS prefix instead no prefix or INK    */
+/* TODO: Use TS prefix instead no prefix or INK    */
 #if TS_IS_MICRO_BUILD
 # define TS_MICRO                       1
 # define INK_NO_ACL                     1
 # define INK_NO_CLUSTER                 1
-# define INK_NO_DIAGS                   1
+# define TS_USE_DIAGS                   0
 # define INK_NO_HOSTDB                  1
 # define INK_NO_ICP                     1
 # define INK_NO_LOG                     1
 # define INK_NO_REVERSE                 1
 # define INK_NO_SOCKS                   1
 # define INK_NO_STAT_PAGES              1
-# define INK_NO_TESTS                   1
 # define INK_USE_MUTEX_FOR_ATOMICLISTS  1
 # define INK_USE_MUTEX_FOR_FREELISTS    1
 # define USE_MD5_FOR_MMH                1
@@ -158,8 +150,8 @@
 #define TS_MAX_API_STATS               @max_api_stats@
 /* XXX: Should make those individually selectable ? */
 #else
-# define INK_NO_TRANSFORM               1
-# define INK_NO_API                     1
+# define TS_NO_TRANSFORM                1
+# define TS_NO_API                      1
 # define INK_SINGLE_THREADED            1
 #endif
 

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_hrtime.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_hrtime.h?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_hrtime.h (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_hrtime.h Tue Nov 30 01:42:55 2010
@@ -250,7 +250,7 @@ ink_get_hrtime_internal()
   timespec ts;
   clock_gettime(CLOCK_REALTIME, &ts);
   return (ts.tv_sec * HRTIME_SECOND + ts.tv_nsec * HRTIME_NSECOND);
-#else /* !defined (__alpha) */
+#else
   timeval tv;
   gettimeofday(&tv, NULL);
   return (tv.tv_sec * HRTIME_SECOND + tv.tv_usec * HRTIME_USECOND);

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_inet.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_inet.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_inet.cc (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_inet.cc Tue Nov 30 01:42:55 2010
@@ -162,3 +162,35 @@ ink_inet_addr(const char *s)
   }
   return htonl((uint32) - 1);
 }
+
+const char *ink_inet_ntop(const struct sockaddr *addr, char *dst, size_t size)
+{
+  void *address = NULL;
+
+  switch (addr->sa_family) {
+  case AF_INET:
+    address = &((struct sockaddr_in *)addr)->sin_addr;
+    break;
+  case AF_INET6:
+    address = &((struct sockaddr_in6 *)addr)->sin6_addr;
+    break;
+  }
+
+  return inet_ntop(addr->sa_family, address, dst, size);
+}
+
+uint16_t ink_inet_port(const struct sockaddr *addr)
+{
+  uint16_t port = 0;
+
+  switch (addr->sa_family) {
+  case AF_INET:
+    port = ntohs(((struct sockaddr_in *)addr)->sin_port);
+    break;
+  case AF_INET6:
+    port = ntohs(((struct sockaddr_in6 *)addr)->sin6_port);
+    break;
+  }
+
+  return port;
+}

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_inet.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_inet.h?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_inet.h (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_inet.h Tue Nov 30 01:42:55 2010
@@ -88,4 +88,7 @@ struct hostent *ink_gethostbyaddr_r(char
 */
 inkcoreapi uint32 ink_inet_addr(const char *s);
 
+const char *ink_inet_ntop(const struct sockaddr *addr, char *dst, size_t size);
+uint16_t ink_inet_port(const struct sockaddr *addr);
+
 #endif // _ink_inet.h

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_inout.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_inout.h?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_inout.h (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_inout.h Tue Nov 30 01:42:55 2010
@@ -66,7 +66,7 @@ extern "C"
 	(cp)[2] = (l >>= 8); \
 	(cp)[1] = (l >>= 8); \
 	(cp)[0] = l >> 8; \
-	(cp) += sizeof (long long); \
+	(cp) += 8; \
 }
 
 

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_memory.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_memory.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_memory.cc (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_memory.cc Tue Nov 30 01:42:55 2010
@@ -46,157 +46,6 @@
 #endif
 
 
-
-class MAMemChunk
-{
-public:
-  MAMemChunk * next;
-  void *ptr;
-};
-
-class MAHeap
-{
-private:
-  pthread_mutex_t mutex;
-  char *heap;
-  char *heap_end;
-  int size;
-  int chunk_size;
-  int total_chunks;
-  MAMemChunk *chunk_list_free;
-  MAMemChunk *chunk_list_used;
-public:
-    MAHeap(int chunk_size = 0, int total_chunks = 0);
-   ~MAHeap();
-  bool Init(int chunk_size = 0, int total_chunks = 0);
-  void *Get(void);
-  bool Free(void *ptr);
-};
-
-bool
-MAHeap::Init(int _chunk_size, int _total_chunks)
-{
-  bool retcode = true;
-  chunk_size = _chunk_size;
-  total_chunks = _total_chunks;
-  size = chunk_size * total_chunks;
-
-  if (size > 0) {
-    heap = (char *)ink_memalign(8192, size);
-    if (heap != NULL) {
-      for (int i = 0; i < total_chunks; i++) {
-        MAMemChunk *mc = new MAMemChunk();
-        mc->next = chunk_list_free;
-        chunk_list_free = mc;
-        mc->ptr = (void *) &heap[chunk_size * i];
-      }
-      heap_end = heap + size;
-    } else
-      retcode = false;
-  }
-  return retcode;
-}
-
-MAHeap::MAHeap(int _chunk_size, int _total_chunks)
-{
-  chunk_list_free = (chunk_list_used = 0);
-  heap_end = (heap = NULL);
-  pthread_mutex_init(&mutex, NULL);
-  Init(_chunk_size, _total_chunks);
-}
-
-MAHeap::~MAHeap()
-{
-  pthread_mutex_lock(&mutex);
-  // free the heap
-  if (heap != NULL) {
-    free(heap);
-  }
-  // delete the free list
-  MAMemChunk *head = chunk_list_free;
-  MAMemChunk *next = NULL;
-  while (head != NULL) {
-    next = head->next;
-    delete head;
-    head = next;
-  }
-  // delete the used list
-  head = chunk_list_used;
-  next = NULL;
-  while (head != NULL) {
-    next = head->next;
-    delete head;
-    head = next;
-  }
-  pthread_mutex_unlock(&mutex);
-}
-
-void *
-MAHeap::Get(void)
-{
-  MAMemChunk *mc;
-  void *ptr = 0;
-  if (heap) {
-    pthread_mutex_lock(&mutex);
-    if ((mc = chunk_list_free) != 0) {
-      chunk_list_free = mc->next;
-      mc->next = chunk_list_used;
-      chunk_list_used = mc;
-      ptr = mc->ptr;
-    }
-    pthread_mutex_unlock(&mutex);
-  }
-  return ptr;
-}
-
-// I know that it is not optimal but we are not going to free aligned memory at all
-// I wrote it - just in case ...
-bool
-MAHeap::Free(void *ptr)
-{
-  bool retcode = false;
-  if (ptr && heap && ptr >= heap && ptr < heap_end) {
-    MAMemChunk *mc, **mcc;
-    retcode = true;
-    pthread_mutex_lock(&mutex);
-    for (mcc = &chunk_list_used; (mc = *mcc) != 0; mcc = &(mc->next)) {
-      if (mc->ptr == ptr) {
-        *mcc = mc->next;
-        mc->next = chunk_list_free;
-        chunk_list_free = mc;
-        break;
-      }
-    }
-    pthread_mutex_unlock(&mutex);
-  }
-  return retcode;
-}
-
-static MAHeap *maheap_1m = new MAHeap();
-static MAHeap *maheap_512k = new MAHeap();
-static MAHeap *maheap_256k = new MAHeap();
-
-bool
-ink_memalign_heap_init(long long ram_cache_size)
-{
-  bool retcode = true;
-  int _total_chunks = (int) (ram_cache_size / (1024 * 1024));
-
-  if (_total_chunks > 1024)
-    _total_chunks = 1024;
-
-  if (likely(maheap_1m)) {
-    retcode = maheap_1m->Init(1024 * 1024, _total_chunks) ? retcode : false;
-  }
-  if (likely(maheap_512k)) {
-    retcode = maheap_512k->Init(512 * 1024, _total_chunks) ? retcode : false;
-  }
-  if (likely(maheap_256k)) {
-    retcode = maheap_256k->Init(256 * 1024, _total_chunks) ? retcode : false;
-  }
-  return retcode;
-}
-
 void *
 ink_malloc(size_t size)
 {
@@ -209,6 +58,8 @@ ink_malloc(size_t size)
    * certain they die quickly & don't trash things.
    */
 
+  // Useful for tracing bad mallocs
+  // ink_stack_trace_dump();
   if (likely(size > 0)) {
     if (unlikely((ptr = malloc(size)) == NULL)) {
       xdump();
@@ -247,16 +98,11 @@ void
 ink_memalign_free(void *ptr)
 {
   if (likely(ptr)) {
-    if (maheap_1m && maheap_1m->Free(ptr))
-      return;
-    if (maheap_512k && maheap_512k->Free(ptr))
-      return;
-    if (maheap_256k && maheap_256k->Free(ptr))
-      return;
     ink_free(ptr);
   }
 }
 
+
 void *
 ink_memalign(size_t alignment, size_t size)
 {
@@ -268,17 +114,6 @@ ink_memalign(size_t alignment, size_t si
   if (alignment <= 8)
     return ink_malloc(size);
 
-  if (size == (1024 * 1024)) {
-    if (maheap_1m && (ptr = maheap_1m->Get()) != 0)
-      return ptr;
-  } else if (size == (1024 * 512)) {
-    if (maheap_512k && (ptr = maheap_512k->Get()) != 0)
-      return ptr;
-  } else if (size == (1024 * 256)) {
-    if (maheap_256k && (ptr = maheap_256k->Get()) != 0)
-      return ptr;
-  }
-
   int retcode = posix_memalign(&ptr, alignment, size);
   if (unlikely(retcode)) {
     if (retcode == EINVAL) {
@@ -333,8 +168,6 @@ ink_memalign(size_t alignment, size_t si
   return NULL;
 }                               /* End ink_memalign */
 
-
-
 void
 ink_free(void *ptr)
 {
@@ -354,102 +187,6 @@ ink_duplicate_string(char *ptr)
   return (ink_string_duplicate(ptr));
 }                               /* End ink_duplicate_string */
 
-
-void
-ink_memzero(void *src_arg, int nbytes)
-{
-  ink_assert(!"don't use this slow code!");
-
-  char *src = (char *) src_arg;
-
-  ink_assert(nbytes > 0);
-
-  if (nbytes <= 20) {
-    switch (nbytes) {
-    case 1:
-      src[0] = '\0';
-      break;
-    case 2:
-      src[0] = src[1] = '\0';
-      break;
-    case 3:
-      src[0] = src[1] = src[2] = '\0';
-      break;
-    case 4:
-      src[0] = src[1] = src[2] = src[3] = '\0';
-      break;
-    case 5:
-      src[0] = src[1] = src[2] = src[3] = src[4] = '\0';
-      break;
-    case 6:
-      src[0] = src[1] = src[2] = src[3] = src[4] = src[5] = '\0';
-      break;
-    case 7:
-      src[0] = src[1] = src[2] = src[3] = src[4] = src[5] = src[6] = '\0';
-      break;
-    case 8:
-      src[0] = src[1] = src[2] = src[3] = src[4] = src[5] = src[6] = src[7] = '\0';
-      break;
-    case 9:
-      src[0] = src[1] = src[2] = src[3] = src[4] = src[5] = src[6] = src[7] = src[8] = '\0';
-      break;
-    case 10:
-      src[0] = src[1] = src[2] = src[3] = src[4] = src[5] = src[6] = src[7] = src[8] = src[9] = '\0';
-      break;
-    case 11:
-      src[0] = src[1] = src[2] = src[3] = src[4] = src[5] = src[6] = src[7] = src[8] = src[9] = src[10] = '\0';
-      break;
-    case 12:
-      src[0] = src[1] = src[2] = src[3] = src[4] = src[5] = src[6] = src[7] = src[8] = src[9] =
-        src[10] = src[11] = '\0';
-      break;
-    case 13:
-      src[0] = src[1] = src[2] = src[3] = src[4] = src[5] = src[6] = src[7] = src[8] = src[9] =
-        src[10] = src[11] = src[12] = '\0';
-      break;
-    case 14:
-      src[0] = src[1] = src[2] = src[3] = src[4] = src[5] = src[6] = src[7] = src[8] = src[9] =
-        src[10] = src[11] = src[12] = src[13] = '\0';
-      break;
-    case 15:
-      src[0] = src[1] = src[2] = src[3] = src[4] = src[5] = src[6] = src[7] = src[8] = src[9] =
-        src[10] = src[11] = src[12] = src[13] = src[14] = '\0';
-      break;
-    case 16:
-      src[0] = src[1] = src[2] = src[3] = src[4] = src[5] = src[6] = src[7] = src[8] = src[9] =
-        src[10] = src[11] = src[12] = src[13] = src[14] = src[15] = '\0';
-      break;
-    case 17:
-      src[0] = src[1] = src[2] = src[3] = src[4] = src[5] = src[6] = src[7] = src[8] = src[9] =
-        src[10] = src[11] = src[12] = src[13] = src[14] = src[15] = src[16] = '\0';
-      break;
-    case 18:
-      src[0] = src[1] = src[2] = src[3] = src[4] = src[5] = src[6] = src[7] = src[8] = src[9] =
-        src[10] = src[11] = src[12] = src[13] = src[14] = src[15] = src[16] = src[17] = '\0';
-      break;
-    case 19:
-      src[0] = src[1] = src[2] = src[3] = src[4] = src[5] = src[6] = src[7] = src[8] = src[9] =
-        src[10] = src[11] = src[12] = src[13] = src[14] = src[15] = src[16] = src[17] = src[18] = '\0';
-      break;
-    case 20:
-      src[0] = src[1] = src[2] = src[3] = src[4] = src[5] = src[6] = src[7] = src[8] = src[9] =
-        src[10] = src[11] = src[12] = src[13] = src[14] = src[15] = src[16] = src[17] = src[18] = src[19] = '\0';
-      break;
-    default:
-      break;
-    }
-  } else if (nbytes <= 1000) {
-    int i;
-    for (i = 0; i < nbytes; i++) {
-      src[i] = '\0';
-    }
-  } else {
-    memset(src, '\0', nbytes);
-  }
-  return;
-}
-
-
 void *
 ink_memcpy(void *s1, const void *s2, int n)
 {

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_memory.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_memory.h?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_memory.h (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_memory.h Tue Nov 30 01:42:55 2010
@@ -50,7 +50,6 @@ extern "C"
 #define ink_type_malloc_n(n,type)   (type *)ink_malloc((n) * sizeof(type));
 #define ink_type_calloc(n,type)     (type *)ink_calloc((n),sizeof(type));
 
-  bool ink_memalign_heap_init(long long ram_cache_size);
   void *ink_malloc(size_t size);
   void *ink_calloc(size_t nelem, size_t elsize);
   void *ink_realloc(void *ptr, size_t size);
@@ -58,7 +57,6 @@ extern "C"
   void ink_free(void *ptr);
   void ink_memalign_free(void *ptr);
   char *ink_duplicate_string(char *ptr);        /* obsoleted by ink_string_duplicate --- don't use */
-  void ink_memzero(void *src_arg, int nbytes);
   void *ink_memcpy(void *s1, const void *s2, int n);
   void ink_bcopy(void *s1, void *s2, size_t n);
 

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_mutex.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_mutex.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_mutex.cc (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_mutex.cc Tue Nov 30 01:42:55 2010
@@ -29,6 +29,9 @@
 
 x_pthread_mutexattr_t _g_mattr;
 
+ProcessMutex __global_death = PTHREAD_MUTEX_INITIALIZER;
+ProcessMutex *gobal_death_mutex = &__global_death;
+
 void
 ink_ProcessMutex_init(ProcessMutex * m, const char *name)
 {
@@ -71,5 +74,8 @@ ink_ProcessMutex_print(FILE * out, Proce
 {
   (void) out;
   (void) m;
-  fprintf(out, "ProcessMutex\n");
+  if(m == gobal_death_mutex)
+    fprintf(out, "Global ProcessMutex\n");
+  else
+    fprintf(out, "ProcessMutex\n");
 }

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_queue.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_queue.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_queue.cc (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_queue.cc Tue Nov 30 01:42:55 2010
@@ -82,7 +82,7 @@ inkcoreapi volatile int64 fastalloc_mem_
 #define MEMPROTECT_SIZE  0x200
 
 #ifdef MEMPROTECT
-static long page_size = 8192;   /* sysconf (_SC_PAGESIZE); */
+static const int page_size = 8192;   /* sysconf (_SC_PAGESIZE); */
 #endif
 
 static ink_freelist_list *freelists = NULL;

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_queue.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_queue.h?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_queue.h (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_queue.h Tue Nov 30 01:42:55 2010
@@ -74,7 +74,7 @@ extern "C"
 
   typedef union
   {
-#if defined(__i386__)
+#if (defined(__i386__) || defined(__arm__)) && (SIZEOF_VOIDP == 4)
     struct
     {
       void *pointer;
@@ -104,7 +104,7 @@ extern "C"
 #define TO_PTR(_x) ((void*)(_x))
 #endif
 
-#if defined(__i386__) || defined(__i386)
+#if (defined(__i386__) || defined(__arm__)) && (SIZEOF_VOIDP == 4)
 #define FREELIST_POINTER(_x) (_x).s.pointer
 #define FREELIST_VERSION(_x) (_x).s.version
 #define SET_FREELIST_POINTER_VERSION(_x,_p,_v) \
@@ -165,10 +165,11 @@ extern "C"
   static inline void *ink_freelist_new(InkFreeList * f)
   {
     void *retval = NULL;
-      ink_mutex_acquire(&(f->inkfreelist_mutex));
-      retval = ink_freelist_new_wrap(f);
-      ink_mutex_release(&(f->inkfreelist_mutex));
-      return retval;
+
+    ink_mutex_acquire(&(f->inkfreelist_mutex));
+    retval = ink_freelist_new_wrap(f);
+    ink_mutex_release(&(f->inkfreelist_mutex));
+    return retval;
   }
 
   inkcoreapi void ink_freelist_free_wrap(InkFreeList * f, void *item);

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_queue_utils.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_queue_utils.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_queue_utils.cc (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_queue_utils.cc Tue Nov 30 01:42:55 2010
@@ -69,7 +69,7 @@
 void
 ink_queue_load_64(void *dst, void *src)
 {
-#if defined(__i386__)
+#if (defined(__i386__) || defined(__arm__)) && (SIZEOF_VOIDP == 4)
   int32 src_version = (*(head_p *) src).s.version;
   void *src_pointer = (*(head_p *) src).s.pointer;
 

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_res_init.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_res_init.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_res_init.cc (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_res_init.cc Tue Nov 30 01:42:55 2010
@@ -411,7 +411,8 @@ ink_res_get_nibblesuffix2(ink_res_state 
  */
 /*% This function has to be reachable by res_data.c but not publically. */
 int
-ink_res_init(ink_res_state statp, unsigned int *pHostList, int *pPort, char *pDefDomain, char *pSearchList, char *pResolvConf) {
+ink_res_init(ink_res_state statp, const unsigned int *pHostList, const int *pPort, const char *pDefDomain, const char *pSearchList,
+             const char *pResolvConf) {
   register FILE *fp;
   register char *cp, **pp;
   register int n;
@@ -539,16 +540,12 @@ ink_res_init(ink_res_state statp, unsign
      ---------------------------------------------- */
 
   if (pDefDomain && '\0' != *pDefDomain && '\n' != *pDefDomain) {
-
-    cp = pDefDomain;
-    strncpy(statp->defdname, cp, sizeof(statp->defdname) - 1);
+    strncpy(statp->defdname, pDefDomain, sizeof(statp->defdname) - 1);
     if ((cp = strpbrk(statp->defdname, " \t\n")) != NULL)
       *cp = '\0';
   }
   if (pSearchList && '\0' != *pSearchList && '\n' != *pSearchList) {
-
-    cp = pSearchList;
-    strncpy(statp->defdname, cp, sizeof(statp->defdname) - 1);
+    strncpy(statp->defdname, pSearchList, sizeof(statp->defdname) - 1);
     if ((cp = strchr(statp->defdname, '\n')) != NULL)
       *cp = '\0';
     /*
@@ -731,29 +728,18 @@ ink_res_init(ink_res_state statp, unsign
         continue;
       }
     }
-    if (nserv > 0)
-      statp->nscount = nserv;
 #ifdef RESOLVSORT
     statp->nsort = nsort;
 #endif
     (void) fclose(fp);
   }
 
-/*
- * Last chance to get a nameserver.  This should not normally
- * be necessary
- */
-#ifdef NO_RESOLV_CONF
-  if(nserv == 0)
-    nserv = get_nameservers(statp);
-#endif
+  if (nserv > 0)
+    statp->nscount = nserv;
 
-  if (statp->defdname[0] == 0 &&
-      gethostname(buf, sizeof(statp->defdname) - 1) == 0 &&
-      (cp = strchr(buf, '.')) != NULL)
+  if (statp->defdname[0] == 0 && gethostname(buf, sizeof(statp->defdname) - 1) == 0 && (cp = strchr(buf, '.')) != NULL)
     strcpy(statp->defdname, cp + 1);
 
-
   /* find components of local domain that might be searched */
   if (havesearch == 0) {
     pp = statp->dnsrch;

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_resolver.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_resolver.h?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_resolver.h (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_resolver.h Tue Nov 30 01:42:55 2010
@@ -242,21 +242,21 @@ typedef __ink_res_state *ink_res_state;
 
 
 struct __ink_res_state_ext {
-        union ink_res_sockaddr_union nsaddrs[INK_MAXNS];
-        struct sort_list {
-                int     af;
-                union {
-                        struct in_addr  ina;
-                        struct in6_addr in6a;
-                } addr, mask;
-        } sort_list[MAXRESOLVSORT];
-        char nsuffix[64];
-        char nsuffix2[64];
+  union ink_res_sockaddr_union nsaddrs[INK_MAXNS];
+  struct sort_list {
+    int     af;
+    union {
+      struct in_addr  ina;
+      struct in6_addr in6a;
+    } addr, mask;
+  } sort_list[MAXRESOLVSORT];
+  char nsuffix[64];
+  char nsuffix2[64];
 };
 
 
-int ink_res_init(ink_res_state, unsigned int *pHostList, int *pPort = NULL, char *pDefDomain = NULL,
-                 char *pSearchList = NULL, char *pResolvConf = NULL);
+int ink_res_init(ink_res_state, const unsigned int *pHostList, const int *pPort = NULL, const char *pDefDomain = NULL,
+                 const char *pSearchList = NULL, const char *pResolvConf = NULL);
 int ink_res_mkquery(ink_res_state, int, const char *, int, int,
                     const unsigned char *, int, const unsigned char *, unsigned char *, int);
 

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_resource.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_resource.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_resource.cc (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_resource.cc Tue Nov 30 01:42:55 2010
@@ -419,7 +419,7 @@ _xmalloc(unsigned int size, const char *
   -------------------------------------------------------------------------*/
 
 char *
-_xstrdup(const char *str, int length, const char *path)
+_xstrdup(const char *str, int64 length, const char *path)
 {
   char *newstr;
 

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_stack_trace.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_stack_trace.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_stack_trace.cc (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_stack_trace.cc Tue Nov 30 01:42:55 2010
@@ -45,7 +45,6 @@ struct sigframe
   int sig;
 #ifdef HAVE_SIGCONTEXT
   struct sigcontext sc;
-  struct _fpstate fpstate;
 #endif
 };
 
@@ -58,19 +57,23 @@ ink_restore_signal_handler_frame(void **
   struct sigframe *sf;
   struct sigcontext *scxt;
 
-#ifdef __i386__
+#if defined(__i386__)
   asm volatile ("movl %%ebp,%0":"=r" (fp));
-#else
+#elif defined(__x86_64__)
   asm volatile ("mov %%rbp,%0":"=r" (fp));
+#elif defined(__arm__)
+  asm volatile ("mov %%r9,%0":"=r" (fp));
 #endif
   for (i = 0; i < signalhandler_frame; i++)
     fp = (void **) (*fp);
   sf = (struct sigframe *) (fp + 1);
   scxt = &(sf->sc);
-#ifdef __i386__
+#if defined(__i386__)
   stack[signalhandler_frame + 1] = (void *) scxt->eip;
-#else
+#elif defined(__x86_64__)
   stack[signalhandler_frame + 1] = (void *) scxt->rip;
+#elif defined(__arm__)
+  stack[signalhandler_frame + 1] = (void *) scxt->arm_ip;
 #endif
   for (i = signalhandler_frame + 2; i < len - 1; i++)
     stack[i] = stack[i + 1];

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_string++.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_string%2B%2B.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_string++.cc (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_string++.cc Tue Nov 30 01:42:55 2010
@@ -214,7 +214,7 @@ StrList::_new_cell(const char *s, int le
     p = (char *) alloc(sizeof(Str) + 7);
     if (p == NULL)
       return (NULL);            // FIX: scale heap
-    p = (char *) (((long) (p + 7)) & ~7);       // round up to multiple of 8
+    p = (char *) ((((uintptr_t)p) + 7) & ~7);       // round up to multiple of 8
     cell = (Str *) p;
   }
   ++cells_allocated;

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_string.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_string.h?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_string.h (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_string.h Tue Nov 30 01:42:55 2010
@@ -694,4 +694,87 @@ ptr_len_pbrk(const char *p1, int l1, con
   return NULL;
 }
 
+// Specialized "itoa", that is optimized for small integers, and use snprintf() otherwise.
+// On error, we'll return 0, and nothing is written to the buffer.
+// TODO: Do these really need to be inline?
+inline int
+ink_small_itoa(int32 val, char* buf, int buf_len)
+{
+  ink_assert(buf_len > 5);
+  ink_assert((val >= 0) && (val < 100000));
+
+  if (val < 10) {               // 0 - 9
+    buf[0] = '0' + val;
+    return 1;
+  } else if (val < 100) {       // 10 - 99
+    buf[1] = '0' + (val % 10);
+    val /= 10;
+    buf[0] = '0' + (val % 10);
+    return 2;
+  } else if (val < 1000) {      // 100 - 999
+    buf[2] = '0' + (val % 10);
+    val /= 10;
+    buf[1] = '0' + (val % 10);
+    val /= 10;
+    buf[0] = '0' + (val % 10);
+    return 3;
+  } else if (val < 10000) {     // 1000 - 9999
+    buf[3] = '0' + (val % 10);
+    val /= 10;
+    buf[2] = '0' + (val % 10);
+    val /= 10;
+    buf[1] = '0' + (val % 10);
+    val /= 10;
+    buf[0] = '0' + (val % 10);
+    return 4;
+  } else {                      // 10000 - 99999
+    buf[4] = '0' + (val % 10);
+    val /= 10;
+    buf[3] = '0' + (val % 10);
+    val /= 10;
+    buf[2] = '0' + (val % 10);
+    val /= 10;
+    buf[1] = '0' + (val % 10);
+    val /= 10;
+    buf[0] = '0' + (val % 10);
+    return 5;
+  }
+}
+
+inline int
+ink_fast_itoa(int32 val, char* buf, int buf_len)
+{
+  if ((val < 0) || (val > 99999)) {
+    int ret = snprintf(buf, buf_len, "%d", val);
+
+    return (ret >= 0 ? ret : 0);
+  }
+
+  return ink_small_itoa(val, buf, buf_len);
+}
+
+inline int
+ink_fast_uitoa(uint32 val, char* buf, int buf_len)
+{
+  if (val > 99999) {
+    int ret = snprintf(buf, buf_len, "%u", val);
+
+    return (ret >= 0 ? ret : 0);
+  }
+
+  return ink_small_itoa(val, buf, buf_len);
+}
+
+inline int
+ink_fast_ltoa(int64 val, char* buf, int buf_len)
+{
+  if ((val < 0) || (val > 99999)) {
+    int ret = snprintf(buf, buf_len, "%lld", val);
+
+    return (ret >= 0 ? ret : 0);
+  }
+
+  return ink_small_itoa(val, buf, buf_len);
+}
+
 #endif

Modified: trafficserver/traffic/branches/wccp/libinktomi++/ink_thread.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/ink_thread.h?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/ink_thread.h (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/ink_thread.h Tue Nov 30 01:42:55 2010
@@ -34,7 +34,6 @@
 #include "ink_hrtime.h"
 #include <sched.h>
 
-// #define DEBUG_VXWORKS
 
 //////////////////////////////////////////////////////////////////////////////
 //

Modified: trafficserver/traffic/branches/wccp/libinktomi++/inktomi++.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/inktomi%2B%2B.h?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/inktomi++.h (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/inktomi++.h Tue Nov 30 01:42:55 2010
@@ -68,7 +68,6 @@
 #include "ink_resource.h"
 #include "ink_sock.h"
 #include "ink_inet.h"
-#include "ink_spill.h"
 #include "ink_sprintf.h"
 #include "ink_stack_trace.h"
 #include "ink_string++.h"

Modified: trafficserver/traffic/branches/wccp/libinktomi++/mkdfa.c
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/libinktomi%2B%2B/mkdfa.c?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/libinktomi++/mkdfa.c (original)
+++ trafficserver/traffic/branches/wccp/libinktomi++/mkdfa.c Tue Nov 30 01:42:55 2010
@@ -28,10 +28,8 @@
 #include <string.h>
 #include "ink_unused.h"
 
-#ifndef __alpha
 #define TRUE    1
 #define FALSE   0
-#endif
 
 #define SIZEOF(t) (sizeof (t) / (sizeof ((t)[0])))
 

Modified: trafficserver/traffic/branches/wccp/librecords/P_RecCore.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/librecords/P_RecCore.h?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/librecords/P_RecCore.h (original)
+++ trafficserver/traffic/branches/wccp/librecords/P_RecCore.h Tue Nov 30 01:42:55 2010
@@ -98,4 +98,7 @@ int RecExecRawStatUpdateFuncs();
 
 void RecDumpRecordsHt(RecT rec_type = RECT_NULL);
 
+void
+RecDumpRecords(RecT rec_type, RecDumpEntryCb callback, void *edata);
+
 #endif

Modified: trafficserver/traffic/branches/wccp/librecords/P_RecDefs.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/librecords/P_RecDefs.h?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/librecords/P_RecDefs.h (original)
+++ trafficserver/traffic/branches/wccp/librecords/P_RecDefs.h Tue Nov 30 01:42:55 2010
@@ -171,6 +171,8 @@ struct RecMessageItr
 
 typedef RecMessageHdr RecMessage;
 
+typedef void (*RecDumpEntryCb) (RecT rec_type, void *edata, int registered, const char *name, int data_type, RecData *datum);
+
 typedef int (*RecMessageRecvCb) (RecMessage * msg, RecMessageT msg_type, void *cookie);
 
 #endif

Modified: trafficserver/traffic/branches/wccp/librecords/RecCore.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/librecords/RecCore.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/librecords/RecCore.cc (original)
+++ trafficserver/traffic/branches/wccp/librecords/RecCore.cc Tue Nov 30 01:42:55 2010
@@ -878,42 +878,52 @@ RecForceInsert(RecRecord * record)
 //-------------------------------------------------------------------------
 // RecDumpRecordsHt
 //-------------------------------------------------------------------------
+
+static void
+debug_record_callback(RecT rec_type, void *edata, int registered, const char *name, int data_type, RecData *datum)
+{
+  switch(data_type) {
+  case RECD_INT:
+    RecDebug(DL_Note, "  ([%d] '%s', '%lld')", registered, name, datum->rec_int);
+    break;
+  case RECD_FLOAT:
+    RecDebug(DL_Note, "  ([%d] '%s', '%f')", registered, name, datum->rec_float);
+    break;
+  case RECD_STRING:
+    RecDebug(DL_Note, "  ([%d] '%s', '%s')",
+             registered, name, datum->rec_string ? datum->rec_string : "NULL");
+    break;
+  case RECD_COUNTER:
+    RecDebug(DL_Note, "  ([%d] '%s', '%lld')", registered, name, datum->rec_counter);
+    break;
+  default:
+    RecDebug(DL_Note, "  ([%d] '%s', <? ? ?>)", registered, name);
+    break;
+  }
+}
 void
-RecDumpRecordsHt(RecT rec_type)
+RecDumpRecords(RecT rec_type, RecDumpEntryCb callback, void *edata)
 {
   int i, num_records;
 
-  RecDebug(DL_Note, "Dumping Records:");
-
   num_records = g_num_records;
   for (i = 0; i < num_records; i++) {
     RecRecord *r = &(g_records[i]);
     if ((rec_type == RECT_NULL) || (rec_type == r->rec_type)) {
       rec_mutex_acquire(&(r->lock));
-      switch (r->data_type) {
-      case RECD_INT:
-        RecDebug(DL_Note, "  ([%d] '%s', '%lld')", r->registered, r->name, r->data.rec_int);
-        break;
-      case RECD_FLOAT:
-        RecDebug(DL_Note, "  ([%d] '%s', '%f')", r->registered, r->name, r->data.rec_float);
-        break;
-      case RECD_STRING:
-        RecDebug(DL_Note, "  ([%d] '%s', '%s')",
-                 r->registered, r->name, r->data.rec_string ? r->data.rec_string : "NULL");
-        break;
-      case RECD_COUNTER:
-        RecDebug(DL_Note, "  ([%d] '%s', '%lld')", r->registered, r->name, r->data.rec_counter);
-        break;
-      default:
-        RecDebug(DL_Note, "  ([%d] '%s', <? ? ?>)", r->registered, r->name);
-        break;
-      }
+      callback(rec_type, edata, r->registered, r->name, r->data_type, &r->data);
       rec_mutex_release(&(r->lock));
     }
   }
 }
 
 void
+RecDumpRecordsHt(RecT rec_type) {
+  RecDebug(DL_Note, "Dumping Records:");
+  RecDumpRecords(rec_type, debug_record_callback, NULL);
+}
+
+void
 RecGetRecordTree(char *subtree)
 {
   RecTree *tree = g_records_tree;

Modified: trafficserver/traffic/branches/wccp/proxy/ControlMatcher.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/proxy/ControlMatcher.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/proxy/ControlMatcher.cc (original)
+++ trafficserver/traffic/branches/wccp/proxy/ControlMatcher.cc Tue Nov 30 01:42:55 2010
@@ -57,8 +57,8 @@
 char *
 HttpRequestData::get_string()
 {
-  char *str = hdr->url_string_get();
-  unescapifyStr(str);
+  char *str = hdr->url_string_get(NULL);
+  if (str) unescapifyStr(str);
   return str;
 }
 

Modified: trafficserver/traffic/branches/wccp/proxy/DiagsConfig.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/proxy/DiagsConfig.cc?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/proxy/DiagsConfig.cc (original)
+++ trafficserver/traffic/branches/wccp/proxy/DiagsConfig.cc Tue Nov 30 01:42:55 2010
@@ -317,13 +317,13 @@ DiagsConfig::DiagsConfig(char *bdt, char
   ////////////////////////
 
   if (access(system_log_dir, R_OK) == -1) {
-    REC_ReadConfigString(diags_logpath, "proxy.config.log2.logfile_dir", PATH_NAME_MAX);
+    REC_ReadConfigString(diags_logpath, "proxy.config.log.logfile_dir", PATH_NAME_MAX);
     Layout::get()->relative(system_log_dir, PATH_NAME_MAX, diags_logpath);
 
     if (access(system_log_dir, R_OK) == -1) {
       fprintf(stderr,"unable to access() log dir'%s': %d, %s\n",
               system_log_dir, errno, strerror(errno));
-      fprintf(stderr,"please set 'proxy.config.log2.logfile_dir'\n");
+      fprintf(stderr,"please set 'proxy.config.log.logfile_dir'\n");
       _exit(1);
     }
   }

Modified: trafficserver/traffic/branches/wccp/proxy/DynamicStats.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/branches/wccp/proxy/DynamicStats.h?rev=1040383&r1=1040382&r2=1040383&view=diff
==============================================================================
--- trafficserver/traffic/branches/wccp/proxy/DynamicStats.h (original)
+++ trafficserver/traffic/branches/wccp/proxy/DynamicStats.h Tue Nov 30 01:42:55 2010
@@ -102,14 +102,6 @@ _D(cpu_metric_fds_ready_per_loop_stat)
     //
     // Dynamic Scheduled Update Stats
     //
-    //
-    // Dynamic WMT stats
-    //
-#define WMT_STATS_1
-    //
-    // Dynamic QT stats
-    //
-#define QT_STATS_1
 #ifdef TS_MICRO
     //
     // Prefetch Stuffer Stats