comparison freeDiameter/p_psm.c @ 22:0b3b46da2c12

Progress on server code
author Sebastien Decugis <sdecugis@nict.go.jp>
date Mon, 19 Oct 2009 18:43:09 +0900
parents 277ec00d793e
children 67ca08d5bc48
comparison
equal deleted inserted replaced
21:bef197f6826f 22:0b3b46da2c12
52 const char * fd_pev_str(int event) 52 const char * fd_pev_str(int event)
53 { 53 {
54 switch (event) { 54 switch (event) {
55 #define case_str( _val )\ 55 #define case_str( _val )\
56 case _val : return #_val 56 case _val : return #_val
57 case_str(FDEVP_DUMP_ALL);
57 case_str(FDEVP_TERMINATE); 58 case_str(FDEVP_TERMINATE);
58 case_str(FDEVP_DUMP_ALL); 59 case_str(FDEVP_CNX_MSG_RECV);
59 case_str(FDEVP_MSG_INCOMING); 60 case_str(FDEVP_MSG_INCOMING);
60 case_str(FDEVP_PSM_TIMEOUT); 61 case_str(FDEVP_PSM_TIMEOUT);
61 62
62 default: 63 default:
63 TRACE_DEBUG(FULL, "Unknown event : %d", event); 64 TRACE_DEBUG(FULL, "Unknown event : %d", event);
238 239
239 goto psm_loop; 240 goto psm_loop;
240 241
241 psm_end: 242 psm_end:
242 pthread_cleanup_pop(1); /* set STATE_ZOMBIE */ 243 pthread_cleanup_pop(1); /* set STATE_ZOMBIE */
244 pthread_detach(peer->p_psm);
245 peer->p_psm = (pthread_t)NULL;
243 return NULL; 246 return NULL;
244 } 247 }
245 248
246 249
247 250
264 /* End the PSM (clean ending) */ 267 /* End the PSM (clean ending) */
265 int fd_psm_terminate(struct fd_peer * peer ) 268 int fd_psm_terminate(struct fd_peer * peer )
266 { 269 {
267 TRACE_ENTRY("%p", peer); 270 TRACE_ENTRY("%p", peer);
268 CHECK_PARAMS( CHECK_PEER(peer) ); 271 CHECK_PARAMS( CHECK_PEER(peer) );
272
269 if (peer->p_hdr.info.pi_state != STATE_ZOMBIE) { 273 if (peer->p_hdr.info.pi_state != STATE_ZOMBIE) {
270 CHECK_FCT( fd_event_send(peer->p_events, FDEVP_TERMINATE, NULL) ); 274 CHECK_FCT( fd_event_send(peer->p_events, FDEVP_TERMINATE, NULL) );
271 } else { 275 } else {
272 TRACE_DEBUG(FULL, "Peer '%s' was already terminated", peer->p_hdr.info.pi_diamid); 276 TRACE_DEBUG(FULL, "Peer '%s' was already terminated", peer->p_hdr.info.pi_diamid);
273 } 277 }
"Welcome to our mercurial repository"