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 2010/06/02 20:44:49 UTC
svn commit: r950713 - in /trafficserver/traffic/trunk/proxy/logging:
LogAccess.cc LogAccess.h LogAccessHttp.cc LogAccessICP.cc LogBuffer.cc
LogBuffer.h LogConfig.cc LogField.h LogFilter.cc LogFilter.h
Author: zwoop
Date: Wed Jun 2 18:44:48 2010
New Revision: 950713
URL: http://svn.apache.org/viewvc?rev=950713&view=rev
Log:
TS-34: Fix the broken logging, and some more cleanup.
Modified:
trafficserver/traffic/trunk/proxy/logging/LogAccess.cc
trafficserver/traffic/trunk/proxy/logging/LogAccess.h
trafficserver/traffic/trunk/proxy/logging/LogAccessHttp.cc
trafficserver/traffic/trunk/proxy/logging/LogAccessICP.cc
trafficserver/traffic/trunk/proxy/logging/LogBuffer.cc
trafficserver/traffic/trunk/proxy/logging/LogBuffer.h
trafficserver/traffic/trunk/proxy/logging/LogConfig.cc
trafficserver/traffic/trunk/proxy/logging/LogField.h
trafficserver/traffic/trunk/proxy/logging/LogFilter.cc
trafficserver/traffic/trunk/proxy/logging/LogFilter.h
Modified: trafficserver/traffic/trunk/proxy/logging/LogAccess.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/logging/LogAccess.cc?rev=950713&r1=950712&r2=950713&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/logging/LogAccess.cc (original)
+++ trafficserver/traffic/trunk/proxy/logging/LogAccess.cc Wed Jun 2 18:44:48 2010
@@ -57,6 +57,7 @@
#include "LogBuffer.h"
#include "Log.h"
+
/*-------------------------------------------------------------------------
LogAccess::init
-------------------------------------------------------------------------*/
@@ -780,7 +781,7 @@ int
LogAccess::marshal_config_int_var(char *config_var, char *buf)
{
if (buf) {
- int64 val = (int64)LOG_ConfigReadInteger(config_var);
+ int64 val = (int64) LOG_ConfigReadInteger(config_var);
marshal_int(buf, val);
}
return INK_MIN_ALIGN;
@@ -834,7 +835,7 @@ LogAccess::marshal_record(char *record,
#define LOG_COUNTER RECD_COUNTER
#define LOG_FLOAT RECD_FLOAT
#define LOG_STRING RECD_STRING
- typedef RecInt LogInt; // TODO/XXX: This needs to match changes made for LogInt
+ typedef RecInt LogInt; // TODO/XXX: This needs to match changes made for uint64
typedef RecCounter LogCounter;
typedef RecFloat LogFloat;
typedef RecString LogString;
@@ -959,37 +960,6 @@ LogAccess::marshal_record(char *record,
return max_chars;
}
-/*-------------------------------------------------------------------------
- The following functions are helper functions for the LogAccess* classes
- -------------------------------------------------------------------------*/
-
-/*-------------------------------------------------------------------------
- LogAccess::marshal_int
-
- Place the given value into the buffer. Note that the buffer needs to be
- aligned with the size of INK_MIN_ALIGN for this to succeed. We also convert
- to network byte order, just in case we read the data on a different
- machine; unmarshal_int() will convert back to host byte order.
-
- ASSUMES dest IS NOT NULL.
- -------------------------------------------------------------------------*/
-
-#if DO_NOT_INLINE
-void
-LogAccess::marshal_int(char *dest, int64 source)
-{
- ink_assert(dest != NULL);
- // TODO: This used to do htonl
- *((int64 *) dest) = source;
-}
-
-void
-LogAccess::marshal_int_no_byte_order_conversion(char *dest, int64 source)
-{
- ink_assert(dest != NULL);
- *((int64 *) dest) = source;
-}
-#endif
/*-------------------------------------------------------------------------
LogAccess::marshal_str
@@ -1092,14 +1062,15 @@ LogAccess::unmarshal_with_map(int64 code
pointer past the int. The int will be converted back to host byte order.
-------------------------------------------------------------------------*/
-int64 LogAccess::unmarshal_int(char **buf)
+int64
+LogAccess::unmarshal_int(char **buf)
{
ink_assert(buf != NULL);
ink_assert(*buf != NULL);
int64 val;
- // TODO: this used to do nthol
- val = ntohl(*((int64 *) (*buf)));
+ // TODO: this used to do nthol, do we need to worrry?
+ val = *((int64 *)(*buf));
*buf += INK_MIN_ALIGN;
return val;
}
@@ -1125,7 +1096,7 @@ LogAccess::unmarshal_itoa(int64 val, cha
while (dest - p < field_width) {
*p-- = leading_char;
}
- return (int64) (dest - p);
+ return (int)(dest - p);
}
while (val) {
@@ -1135,7 +1106,7 @@ LogAccess::unmarshal_itoa(int64 val, cha
while (dest - p < field_width) {
*p-- = leading_char;
}
- return (int) (dest - p);
+ return (int)(dest - p);
}
/*-------------------------------------------------------------------------
@@ -1152,19 +1123,18 @@ LogAccess::unmarshal_itox(int64 val, cha
{
ink_assert(dest != NULL);
- char *
- p = dest;
- static char
- table[] = "0123456789abcdef?";
+ char *p = dest;
+ static char table[] = "0123456789abcdef?";
- for (int i = 0; i < (int) (sizeof(int64) * 2); i++) {
+ for (int i = 0; i < (int)(sizeof(int64) * 2); i++) {
*p-- = table[val & 0xf];
val >>= 4;
}
while (dest - p < field_width) {
*p-- = leading_char;
}
- return (int) (dest - p);
+
+ return (int64)(dest - p);
}
/*-------------------------------------------------------------------------
@@ -1182,8 +1152,8 @@ LogAccess::unmarshal_int_to_str(char **b
char val_buf[128];
int64 val = unmarshal_int(buf);
-
int val_len = unmarshal_itoa(val, val_buf + 127);
+
if (val_len < len) {
memcpy(dest, val_buf + 128 - val_len, val_len);
return val_len;
@@ -1207,6 +1177,7 @@ LogAccess::unmarshal_int_to_str_hex(char
char val_buf[128];
int64 val = unmarshal_int(buf);
int val_len = unmarshal_itox(val, val_buf + 127);
+
if (val_len < len) {
memcpy(dest, val_buf + 128 - val_len, val_len);
return val_len;
@@ -1234,6 +1205,7 @@ LogAccess::unmarshal_str(char **buf, cha
char *val_buf = *buf;
int val_len = (int)::strlen(val_buf);
+
*buf += LogAccess::strlen(val_buf); // this is how it was stored
if (val_len < len) {
memcpy(dest, val_buf, val_len);
Modified: trafficserver/traffic/trunk/proxy/logging/LogAccess.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/logging/LogAccess.h?rev=950713&r1=950712&r2=950713&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/logging/LogAccess.h (original)
+++ trafficserver/traffic/trunk/proxy/logging/LogAccess.h Wed Jun 2 18:44:48 2010
@@ -25,12 +25,6 @@
Logging - LogAccess.h
-// Since we changed to 64-bit only for all int's. Look for htonl etc.
-#ifndef LITTLE_ENDIAN
-#error FIX_ME
-#endif
-
-
***************************************************************************/
#if !defined (INK_NO_LOG)
#ifndef LOG_ACCESS_H
@@ -103,8 +97,8 @@
#define DEFAULT_INT_FIELD {\
if (buf) { \
- int64 i = 0; \
- marshal_int (buf, i); \
+ int64 i = 0; \
+ marshal_int (buf, i); \
} \
return INK_MIN_ALIGN; \
}
@@ -327,7 +321,6 @@ public:
public:
inkcoreapi void static marshal_int(char *dest, int64 source);
- inkcoreapi void static marshal_int_no_byte_order_conversion(char *dest, int64 source);
inkcoreapi void static marshal_str(char *dest, const char *source, int padded_len);
inkcoreapi void static marshal_mem(char *dest, const char *source, int actual_len, int padded_len);
@@ -365,14 +358,8 @@ LogAccess::strlen(char *str)
inline void
LogAccess::marshal_int(char *dest, int64 source)
{
- // TODO: This used to to htonl().
- *((int64 *) dest) = source;
-}
-
-inline void
-LogAccess::marshal_int_no_byte_order_conversion(char *dest, int64 source)
-{
- *((int64 *) dest) = source;
+ // TODO: This used to do htonl on the source
+ *((int64 *)dest) = source;
}
/*-------------------------------------------------------------------------
Modified: trafficserver/traffic/trunk/proxy/logging/LogAccessHttp.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/logging/LogAccessHttp.cc?rev=950713&r1=950712&r2=950713&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/logging/LogAccessHttp.cc (original)
+++ trafficserver/traffic/trunk/proxy/logging/LogAccessHttp.cc Wed Jun 2 18:44:48 2010
@@ -141,10 +141,8 @@ int
LogAccessHttp::marshal_client_host_ip(char *buf)
{
if (buf) {
- int64 ip = m_http_sm->t_state.client_info.ip;
- // the ip is already in network order, no byte order conversion
- // is needed
- marshal_int_no_byte_order_conversion(buf, ip);
+ unsigned int ip = m_http_sm->t_state.client_info.ip;
+ marshal_int(buf, (int64)ntohl(ip));
}
return INK_MIN_ALIGN;
}
@@ -643,9 +641,7 @@ LogAccessHttp::marshal_proxy_req_server_
if (m_http_sm->t_state.current.server != NULL) {
the_ip = m_http_sm->t_state.current.server->ip;
}
- // the ip is already in network order, no byte order conversion
- // is needed
- marshal_int_no_byte_order_conversion(buf, (int64) the_ip);
+ marshal_int(buf, (int64)ntohl(the_ip));
}
return INK_MIN_ALIGN;
}
@@ -670,16 +666,14 @@ int
LogAccessHttp::marshal_server_host_ip(char *buf)
{
if (buf) {
- int64 val = 0;
+ unsigned int val = 0;
val = m_http_sm->t_state.server_info.ip;
if (val == 0) {
if (m_http_sm->t_state.current.server != NULL) {
val = m_http_sm->t_state.current.server->ip;
}
}
- // the ip is already in network order, no byte order conversion
- // is needed
- marshal_int_no_byte_order_conversion(buf, val);
+ marshal_int(buf, (int64)ntohl(val));
}
return INK_MIN_ALIGN;
}
Modified: trafficserver/traffic/trunk/proxy/logging/LogAccessICP.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/logging/LogAccessICP.cc?rev=950713&r1=950712&r2=950713&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/logging/LogAccessICP.cc (original)
+++ trafficserver/traffic/trunk/proxy/logging/LogAccessICP.cc Wed Jun 2 18:44:48 2010
@@ -71,7 +71,7 @@ LogAccessICP::marshal_client_host_ip(cha
if (buf) {
int64 ip = m_icp_log->GetClientIP()->s_addr;
// ip is already in network order
- marshal_int_no_byte_order_conversion(buf, ip);
+ marshal_int(buf, (int64)ntohl(ip));
}
return INK_MIN_ALIGN;
}
Modified: trafficserver/traffic/trunk/proxy/logging/LogBuffer.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/logging/LogBuffer.cc?rev=950713&r1=950712&r2=950713&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/logging/LogBuffer.cc (original)
+++ trafficserver/traffic/trunk/proxy/logging/LogBuffer.cc Wed Jun 2 18:44:48 2010
@@ -1014,6 +1014,8 @@ LogBuffer::convert_to_host_order()
convert_to_host_order(m_header);
}
+
+// TODO: This is probably broken with the migration to 64-bit log ints.
void
LogBuffer::convert_to_host_order(LogBufferHeader * header)
{
@@ -1050,6 +1052,7 @@ LogBuffer::convert_to_host_order(LogBuff
//
LogBufferIterator iter(header, true);
LogEntryHeader *entry_header;
+
while ((entry_header = iter.next())) {
entry_header->timestamp = ntohl(entry_header->timestamp);
entry_header->timestamp_usec = ntohl(entry_header->timestamp_usec);
@@ -1149,7 +1152,6 @@ LogEntryHeader *
LogBufferIterator::next()
{
LogEntryHeader *ret_val = NULL;
-
LogEntryHeader *entry = (LogEntryHeader *) m_next;
if (entry) {
Modified: trafficserver/traffic/trunk/proxy/logging/LogBuffer.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/logging/LogBuffer.h?rev=950713&r1=950712&r2=950713&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/logging/LogBuffer.h (original)
+++ trafficserver/traffic/trunk/proxy/logging/LogBuffer.h Wed Jun 2 18:44:48 2010
@@ -377,7 +377,7 @@ public:
LogEntryHeader *next();
private:
- bool m_in_network_order;
+ bool m_in_network_order;
char *m_next;
unsigned m_iter_entry_count;
unsigned m_buffer_entry_count;
@@ -398,14 +398,10 @@ private:
inline
LogBufferIterator::LogBufferIterator(LogBufferHeader * header, bool in_network_order)
- :
-m_in_network_order(in_network_order)
- ,
-m_next(0)
- ,
-m_iter_entry_count(0)
- ,
-m_buffer_entry_count(0)
+ : m_in_network_order(in_network_order),
+ m_next(0),
+ m_iter_entry_count(0),
+ m_buffer_entry_count(0)
{
ink_debug_assert(header);
Modified: trafficserver/traffic/trunk/proxy/logging/LogConfig.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/logging/LogConfig.cc?rev=950713&r1=950712&r2=950713&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/logging/LogConfig.cc (original)
+++ trafficserver/traffic/trunk/proxy/logging/LogConfig.cc Wed Jun 2 18:44:48 2010
@@ -1053,10 +1053,13 @@ LogConfig::split_by_protocol(const PreDe
return NULL;
}
// http MUST be last entry
- enum
- { icp=0, mixt, http };
- unsigned value[] = { LOG_ENTRY_ICP,
- LOG_ENTRY_MIXT, LOG_ENTRY_HTTP
+ enum { icp=0,
+ mixt,
+ http
+ };
+
+ int64 value[] = { LOG_ENTRY_ICP,
+ LOG_ENTRY_MIXT, LOG_ENTRY_HTTP
};
const char *name[] = { "icp", "mixt", "http" };
const char *filter_name[] = { "__icp__", "__mixt__", "__http__" };
Modified: trafficserver/traffic/trunk/proxy/logging/LogField.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/logging/LogField.h?rev=950713&r1=950712&r2=950713&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/logging/LogField.h (original)
+++ trafficserver/traffic/trunk/proxy/logging/LogField.h Wed Jun 2 18:44:48 2010
@@ -20,15 +20,15 @@
See the License for the specific language governing permissions and
limitations under the License.
*/
+
+
+
#ifndef LOG_FIELD_H
#define LOG_FIELD_H
#include "inktomi++.h"
#include "LogFieldAliasMap.h"
-// This is setup for 64-bit log integers
-#define MIN_ALIGN 8
-
class LogAccess;
/*-------------------------------------------------------------------------
Modified: trafficserver/traffic/trunk/proxy/logging/LogFilter.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/logging/LogFilter.cc?rev=950713&r1=950712&r2=950713&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/logging/LogFilter.cc (original)
+++ trafficserver/traffic/trunk/proxy/logging/LogFilter.cc Wed Jun 2 18:44:48 2010
@@ -497,8 +497,9 @@ LogFilterInt::_setValues(size_t n, int64
}
}
+// TODO: ival should be int64
int
-LogFilterInt::_convertStringToInt(char *value, int64 *ival, LogFieldAliasMap * map)
+LogFilterInt::_convertStringToInt(char *value, unsigned *ival, LogFieldAliasMap * map)
{
size_t i, l = strlen(value);
for (i = 0; i < l && ParseRules::is_digit(value[i]); i++);
@@ -508,8 +509,7 @@ LogFilterInt::_convertStringToInt(char *
// value is an alias and try to get the actual integer value
// from the log field alias map if field has one
//
- // TODO: should not cast
- if (map == NULL || map->asInt(value, (unsigned int*)ival) != LogFieldAliasMap::ALL_OK) {
+ if (map == NULL || map->asInt(value, ival) != LogFieldAliasMap::ALL_OK) {
return -1; // error
};
} else {
@@ -523,25 +523,23 @@ LogFilterInt::_convertStringToInt(char *
LogFilterInt::LogFilterInt(const char *name, LogField * field,
LogFilter::Action action, LogFilter::Operator oper, int64 value)
-:LogFilter(name, field, action, oper)
+ : LogFilter(name, field, action, oper)
{
- int64 v[1];
+ int64 v[1];
v[0] = value;
_setValues(1, v);
}
LogFilterInt::LogFilterInt(const char *name, LogField * field,
LogFilter::Action action, LogFilter::Operator oper, size_t num_values, int64 *value)
- :
-LogFilter(name, field, action, oper)
+ : LogFilter(name, field, action, oper)
{
_setValues(num_values, value);
}
LogFilterInt::LogFilterInt(const char *name, LogField * field,
LogFilter::Action action, LogFilter::Operator oper, char *values)
- :
-LogFilter(name, field, action, oper)
+ : LogFilter(name, field, action, oper)
{
// parse the comma-separated list of values and construct array
//
@@ -549,11 +547,12 @@ LogFilter(name, field, action, oper)
size_t i = 0;
SimpleTokenizer tok(values, ',');
size_t n = tok.getNumTokensRemaining();
+
if (n) {
val_array = NEW(new int64[n]);
char *t;
while (t = tok.getNext(), t != NULL) {
- int64 ival;
+ unsigned ival;
if (!_convertStringToInt(t, &ival, field->map())) {
// conversion was successful, add entry to array
//
Modified: trafficserver/traffic/trunk/proxy/logging/LogFilter.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/logging/LogFilter.h?rev=950713&r1=950712&r2=950713&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/logging/LogFilter.h (original)
+++ trafficserver/traffic/trunk/proxy/logging/LogFilter.h Wed Jun 2 18:44:48 2010
@@ -198,7 +198,7 @@ private:
int64 *m_value; // the array of values
void _setValues(size_t n, int64 *value);
- int _convertStringToInt(char *val, int64 *ival, LogFieldAliasMap * map);
+ int _convertStringToInt(char *val, unsigned *ival, LogFieldAliasMap * map);
// -- member functions that are not allowed --
LogFilterInt();