Mercurial > hg > freeDiameter
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 } |