Mercurial > hg > freeDiameter
diff freeDiameter/peers.c @ 454:f1484823cb4a
Small hack which might spear some concurrency problems and is quite harmless
author | Sebastien Decugis <sdecugis@nict.go.jp> |
---|---|
date | Thu, 29 Jul 2010 16:11:12 +0900 |
parents | 26aafbbc1640 |
children | 5e5d8152c229 |
line wrap: on
line diff
--- a/freeDiameter/peers.c Thu Jul 29 15:32:08 2010 +0900 +++ b/freeDiameter/peers.c Thu Jul 29 16:11:12 2010 +0900 @@ -278,6 +278,7 @@ for (li = fd_g_peers.next; li != &fd_g_peers; li = li->next) { struct fd_peer * peer = (struct fd_peer *)li; + fd_cpu_flush_cache(); if (peer->p_hdr.info.runtime.pir_state != STATE_ZOMBIE) { CHECK_FCT_DO( fd_psm_terminate(peer, "REBOOTING"), /* continue */ ); } else { @@ -305,6 +306,7 @@ CHECK_FCT_DO( pthread_rwlock_wrlock(&fd_g_peers_rw), /* continue */ ); for (li = fd_g_peers.next; li != &fd_g_peers; li = li->next) { struct fd_peer * peer = (struct fd_peer *)li; + fd_cpu_flush_cache(); if (peer->p_hdr.info.runtime.pir_state == STATE_ZOMBIE) { li = li->prev; /* to avoid breaking the loop */ fd_list_unlink(&peer->p_hdr.chain); @@ -461,6 +463,7 @@ CHECK_FCT_DO( ret = fd_psm_begin(peer), goto out ); } else { /* Check if the peer is in zombie state */ + fd_cpu_flush_cache(); if (peer->p_hdr.info.runtime.pir_state == STATE_ZOMBIE) { /* Re-activate the peer */ if (peer->p_hdr.info.config.pic_flags.exp)