From: VANHULLEBUS Y. <va...@us...> - 2004-11-29 10:27:43
|
Update of /cvsroot/ipsec-tools/ipsec-tools/src/racoon In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2095/src/racoon Modified Files: session.c Log Message: Only listen on pfkey socket when received shutdown signal Index: session.c =================================================================== RCS file: /cvsroot/ipsec-tools/ipsec-tools/src/racoon/session.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- session.c 22 Nov 2004 17:21:31 -0000 1.8 +++ session.c 29 Nov 2004 10:27:29 -0000 1.9 @@ -96,8 +96,10 @@ static int close_sockets __P((void)); static fd_set mask0; +static fd_set maskdying; static int nfds = 0; static int sigreq = 0; +static int dying = 0; int session(void) @@ -131,7 +133,10 @@ sigreq = 0; while (1) { - rfds = mask0; + if (dying) + rfds = maskdying; + else + rfds = mask0; /* * asynchronous requests via signal. @@ -212,6 +217,7 @@ nfds = 0; FD_ZERO(&mask0); + FD_ZERO(&maskdying); #ifdef ENABLE_ADMINPORT if (lcconf->sock_admin >= FD_SETSIZE) { @@ -219,6 +225,11 @@ exit(1); } FD_SET(lcconf->sock_admin, &mask0); + /* XXX should we listen on admin socket when dying ? + */ +#if 0 + FD_SET(lcconf->sock_admin, &maskdying); +#endif nfds = (nfds > lcconf->sock_admin ? nfds : lcconf->sock_admin); #endif if (lcconf->sock_pfkey >= FD_SETSIZE) { @@ -226,6 +237,7 @@ exit(1); } FD_SET(lcconf->sock_pfkey, &mask0); + FD_SET(lcconf->sock_pfkey, &maskdying); nfds = (nfds > lcconf->sock_pfkey ? nfds : lcconf->sock_pfkey); if (lcconf->rtsock >= 0) { if (lcconf->rtsock >= FD_SETSIZE) { @@ -316,6 +328,7 @@ pfkey_send_flush(lcconf->sock_pfkey, SADB_SATYPE_UNSPEC); sched_new(1, check_flushsa_stub, NULL); sigreq = 0; + dying = 1; break; } } |