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 2011/10/07 23:53:54 UTC
svn commit: r1180257 - in /trafficserver/traffic/trunk: lib/ts/ink_queue.cc
lib/ts/ink_queue.h proxy/http/HttpTransact.cc
Author: zwoop
Date: Fri Oct 7 21:53:53 2011
New Revision: 1180257
URL: http://svn.apache.org/viewvc?rev=1180257&view=rev
Log:
TS-567 Remove CHECK_FOR_DOUBLE_FREE now that we have debuggable mallocs
Modified:
trafficserver/traffic/trunk/lib/ts/ink_queue.cc
trafficserver/traffic/trunk/lib/ts/ink_queue.h
trafficserver/traffic/trunk/proxy/http/HttpTransact.cc
Modified: trafficserver/traffic/trunk/lib/ts/ink_queue.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/lib/ts/ink_queue.cc?rev=1180257&r1=1180256&r2=1180257&view=diff
==============================================================================
--- trafficserver/traffic/trunk/lib/ts/ink_queue.cc (original)
+++ trafficserver/traffic/trunk/lib/ts/ink_queue.cc Fri Oct 7 21:53:53 2011
@@ -126,12 +126,9 @@ ink_freelist_init(InkFreeList * f,
#if defined(INK_USE_MUTEX_FOR_FREELISTS)
ink_mutex_init(&(f->inkfreelist_mutex), name);
#endif
-#if (defined(USE_SPINLOCK_FOR_FREELIST) || defined(CHECK_FOR_DOUBLE_FREE))
+#if defined(USE_SPINLOCK_FOR_FREELIST)
ink_mutex_init(&(f->freelist_mutex), name);
f->head = NULL;
-#ifdef CHECK_FOR_DOUBLE_FREE
- f->tail = NULL;
-#endif
#else
SET_FREELIST_POINTER_VERSION(f->head, FROM_PTR(0), 0);
#endif
@@ -168,7 +165,7 @@ ink_freelist_new(InkFreeList * f)
#endif /* !INK_USE_MUTEX_FOR_FREELISTS */
{ //static uint32_t cntf = 0;
-#if (defined(USE_SPINLOCK_FOR_FREELIST) || defined(CHECK_FOR_DOUBLE_FREE))
+#if defined(USE_SPINLOCK_FOR_FREELIST)
void *foo;
uint32_t type_size = f->type_size;
@@ -183,10 +180,6 @@ ink_freelist_new(InkFreeList * f)
* We have something on the free list..
*/
void_p *h = (void_p *) f->head;
-#ifdef CHECK_FOR_DOUBLE_FREE
- if (f->head == f->tail)
- f->tail = NULL;
-#endif /* CHECK_FOR_DOUBLE_FREE */
foo = (void *) h;
f->head = (volatile void_p *) *h;
@@ -227,7 +220,7 @@ ink_freelist_new(InkFreeList * f)
return foo;
}
-#else /* #if (defined(USE_SPINLOCK_FOR_FREELIST) || defined(CHECK_FOR_DOUBLE_FREE)) */
+#else /* #if (defined(USE_SPINLOCK_FOR_FREELIST) */
head_p item;
head_p next;
int result = 0;
@@ -330,7 +323,7 @@ ink_freelist_new(InkFreeList * f)
ink_atomic_increment64(&fastalloc_mem_in_use, (int64_t) f->type_size);
return TO_PTR(FREELIST_POINTER(item));
-#endif /* #if (defined(USE_SPINLOCK_FOR_FREELIST) || defined(CHECK_FOR_DOUBLE_FREE)) */
+#endif /* #if (defined(USE_SPINLOCK_FOR_FREELIST) */
}
typedef volatile void *volatile_void_p;
@@ -342,32 +335,15 @@ void
ink_freelist_free(InkFreeList * f, void *item)
#endif /* !INK_USE_MUTEX_FOR_FREELISTS */
{
-#if (defined(USE_SPINLOCK_FOR_FREELIST) || defined(CHECK_FOR_DOUBLE_FREE))
+#if defined(USE_SPINLOCK_FOR_FREELIST)
void_p *foo;
//printf("ink_freelist_free\n");
ink_mutex_acquire(&(f->freelist_mutex));
foo = (void_p *) item;
-#ifdef CHECK_FOR_DOUBLE_FREE
- void_p *p = (void_p *) f->head;
- while (p) {
- if (p == (void_p *) item)
- ink_release_assert(!"ink_freelist_free: Double free");
- p = (void_p *) * p;
- }
-
- if (f->tail)
- *f->tail = foo;
- *foo = (void_p) NULL;
-
- if (f->head == NULL)
- f->head = foo;
- f->tail = foo;
-#else
*foo = (void_p) f->head;
f->head = foo;
-#endif
f->count -= 1;
ink_mutex_release(&(f->freelist_mutex));
Modified: trafficserver/traffic/trunk/lib/ts/ink_queue.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/lib/ts/ink_queue.h?rev=1180257&r1=1180256&r2=1180257&view=diff
==============================================================================
--- trafficserver/traffic/trunk/lib/ts/ink_queue.h (original)
+++ trafficserver/traffic/trunk/lib/ts/ink_queue.h Fri Oct 7 21:53:53 2011
@@ -59,7 +59,6 @@
*/
/* #define USE_SPINLOCK_FOR_FREELIST */
-/* #define CHECK_FOR_DOUBLE_FREE */
#ifdef __cplusplus
extern "C"
@@ -123,19 +122,16 @@ extern "C"
typedef struct
{
-#if (defined(INK_USE_MUTEX_FOR_FREELISTS) || defined(CHECK_FOR_DOUBLE_FREE))
+#if defined(INK_USE_MUTEX_FOR_FREELISTS)
ink_mutex inkfreelist_mutex;
#endif
-#if (defined(USE_SPINLOCK_FOR_FREELIST) || defined(CHECK_FOR_DOUBLE_FREE))
+#if defined(USE_SPINLOCK_FOR_FREELIST)
/*
This assumes we will never use anything other than Pthreads
on alpha
*/
ink_mutex freelist_mutex;
volatile void_p *head;
-#ifdef CHECK_FOR_DOUBLE_FREE
- volatile void_p *tail;
-#endif
#else
volatile head_p head;
#endif
Modified: trafficserver/traffic/trunk/proxy/http/HttpTransact.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/http/HttpTransact.cc?rev=1180257&r1=1180256&r2=1180257&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/http/HttpTransact.cc (original)
+++ trafficserver/traffic/trunk/proxy/http/HttpTransact.cc Fri Oct 7 21:53:53 2011
@@ -2303,7 +2303,6 @@ HttpTransact::HandleCacheOpenReadHitFres
void
HttpTransact::CallOSDNSLookup(State* s)
{
-//printf("into HttpTransact::CallOSDNSLookup **\n");
TRANSACT_RETURN(DNS_LOOKUP, OSDNSLookup);
}
@@ -2717,10 +2716,8 @@ HttpTransact::build_response_from_cache(
// only if the cached response is a 200 OK
if (client_response_code == HTTP_STATUS_OK && client_request->presence(MIME_PRESENCE_RANGE)) {
s->state_machine->do_range_setup_if_necessary();
- if (s->range_setup == RANGE_NOT_SATISFIABLE &&
- s->http_config_param->reverse_proxy_enabled) {
+ if (s->range_setup == RANGE_NOT_SATISFIABLE && s->http_config_param->reverse_proxy_enabled) {
build_error_response(s, HTTP_STATUS_RANGE_NOT_SATISFIABLE, "Requested Range Not Satisfiable","","");
-
s->cache_info.action = CACHE_DO_NO_ACTION;
s->next_action = PROXY_INTERNAL_CACHE_NOOP;
break;
@@ -4108,7 +4105,6 @@ HttpTransact::handle_cache_operation_on_
} else if (s->cache_info.action == CACHE_DO_UPDATE && is_request_conditional(&s->hdr_info.server_request)) {
// CACHE_DO_UPDATE and server response is cacheable
-
if (is_request_conditional(&s->hdr_info.client_request)) {
if (s->txn_conf->cache_when_to_revalidate != 4)
client_response_code =
@@ -4132,12 +4128,25 @@ HttpTransact::handle_cache_operation_on_
base_response = &s->hdr_info.server_response;
}
} else {
- if (s->method == HTTP_WKSIDX_HEAD) {
- s->cache_info.action = CACHE_DO_UPDATE;
- s->next_action = SERVER_READ;
+ if (s->hdr_info.client_request.presence(MIME_PRESENCE_RANGE)) {
+ s->state_machine->do_range_setup_if_necessary();
+ if (s->range_setup == RANGE_NOT_SATISFIABLE || s->range_setup == RANGE_NOT_HANDLED) {
+ base_response = &s->hdr_info.server_response;
+ build_error_response(s, HTTP_STATUS_RANGE_NOT_SATISFIABLE, "Requested Range Not Satisfiable","","");
+ s->cache_info.action = CACHE_DO_NO_ACTION;
+ s->next_action = PROXY_INTERNAL_CACHE_NOOP;
+ } else {
+ s->cache_info.action = CACHE_DO_SERVE_AND_UPDATE;
+ s->next_action = SERVE_FROM_CACHE;
+ }
} else {
- s->cache_info.action = CACHE_DO_SERVE_AND_UPDATE;
- s->next_action = SERVE_FROM_CACHE;
+ if (s->method == HTTP_WKSIDX_HEAD) {
+ s->cache_info.action = CACHE_DO_UPDATE;
+ s->next_action = SERVER_READ;
+ } else {
+ s->cache_info.action = CACHE_DO_SERVE_AND_UPDATE;
+ s->next_action = SERVE_FROM_CACHE;
+ }
}
/* base_response will be set after updating headers below */
}