Mercurial > hg > freeDiameter
diff extensions/rt_redirect/redir_expiry.c @ 1259:82280e745a89
Remove whitespace at end of line.
author | Thomas Klausner <tk@giga.or.at> |
---|---|
date | Mon, 24 Mar 2014 13:13:38 +0100 |
parents | 4a9f08d6b6ba |
children | 25fad6714991 |
line wrap: on
line diff
--- a/extensions/rt_redirect/redir_expiry.c Tue Feb 11 14:47:02 2014 +0100 +++ b/extensions/rt_redirect/redir_expiry.c Mon Mar 24 13:13:38 2014 +0100 @@ -40,23 +40,23 @@ /* Entries by their ascending expiration date, to accelerate the work of the expire thread */ static struct fd_list expire_list = FD_LIST_INITIALIZER(expire_list); -static pthread_cond_t exp_cnd = PTHREAD_COND_INITIALIZER; +static pthread_cond_t exp_cnd = PTHREAD_COND_INITIALIZER; pthread_mutex_t redir_exp_peer_lock = PTHREAD_MUTEX_INITIALIZER; /* The thread that handles expired entries cleanup. */ -void * redir_exp_thr_fct(void * arg) +void * redir_exp_thr_fct(void * arg) { fd_log_threadname ( "Redirects/expire" ); TRACE_ENTRY( "" ); CHECK_POSIX_DO( pthread_mutex_lock(&redir_exp_peer_lock), goto fatal_error ); pthread_cleanup_push( fd_cleanup_mutex, &redir_exp_peer_lock ); - + do { struct timespec now; struct redir_entry * first; -again: +again: /* Check if there are expiring entries available */ if (FD_IS_LIST_EMPTY(&expire_list)) { /* Just wait for a change or cancelation */ @@ -64,33 +64,33 @@ /* Restart the loop on wakeup */ goto again; } - + /* Get the pointer to the entry that expires first */ first = (struct redir_entry *)(expire_list.next->o); - + /* Get the current time */ CHECK_SYS_DO( clock_gettime(CLOCK_REALTIME, &now), break ); /* If first session is not expired, we just wait until it happens */ if ( TS_IS_INFERIOR( &now, &first->timeout ) ) { - - CHECK_POSIX_DO2( pthread_cond_timedwait( &exp_cnd, &redir_exp_peer_lock, &first->timeout ), + + CHECK_POSIX_DO2( pthread_cond_timedwait( &exp_cnd, &redir_exp_peer_lock, &first->timeout ), ETIMEDOUT, /* ETIMEDOUT is a normal error, continue */, /* on other error, */ break ); - + /* on wakeup, loop */ goto again; } - + /* Now, the first entry in the list is expired; destroy it */ - + CHECK_FCT_DO( redir_entry_destroy( first ), break ); - + } while (1); - + pthread_cleanup_pop( 0 ); CHECK_POSIX_DO( pthread_mutex_unlock(&redir_exp_peer_lock), ); - + fatal_error: TRACE_DEBUG(INFO, "A system error occurred in redirect module! Expiry thread is terminating..."); ASSERT(0); @@ -103,33 +103,33 @@ struct fd_list * li; TRACE_ENTRY("%p %d", e, duration); CHECK_PARAMS(e && (e->eyec == REDIR_ENTRY_EYEC) && duration ); - + /* Unlink in case it was already set before */ fd_list_unlink(&e->exp_list); - + /* Get current time */ CHECK_SYS( clock_gettime(CLOCK_REALTIME, &e->timeout) ); - + /* Add the duration */ e->timeout.tv_sec += duration; - + /* now search the next element in the list */ for (li = expire_list.next; li != &expire_list; li = li->next) { struct redir_entry * n = li->o; - + if ( TS_IS_INFERIOR( &e->timeout, &n->timeout ) ) break; - + } - + /* Insert before this element */ fd_list_insert_before(li, &e->exp_list); - + /* Signal the expiry thread if needed */ if (e->exp_list.prev == &expire_list) { /* it is the first element */ CHECK_POSIX( pthread_cond_signal(&exp_cnd) ); } - + /* Done */ return 0; }