From 0ee55323964a5e5d067ada4ccdf9033b34bff072 Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Mon, 12 Nov 2007 11:10:11 +0000 Subject: [PATCH] Fixup for signal handling. No more dangling unbound processes after test suite. git-svn-id: file:///svn/unbound/trunk@739 be551aaa-1e26-0410-a405-d3ace91eadb9 --- daemon/daemon.c | 8 +++----- daemon/worker.c | 9 ++++----- daemon/worker.h | 4 ++-- doc/Changelog | 4 ++++ testdata/fwd_compress_c00c.tpkg | Bin 2100 -> 2131 bytes 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/daemon/daemon.c b/daemon/daemon.c index 1ef5f6cd3..7a59974ee 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -108,10 +108,10 @@ signal_handling_record() static void signal_handling_playback(struct worker* wrk) { - if(sig_record_quit) - worker_sighandler(SIGTERM, wrk); if(sig_record_reload) worker_sighandler(SIGHUP, wrk); + if(sig_record_quit) + worker_sighandler(SIGTERM, wrk); sig_record_quit = 0; sig_record_reload = 0; } @@ -425,9 +425,7 @@ daemon_fork(struct daemon* daemon) /* we exited! a signal happened! Stop other threads */ daemon_stop_others(daemon); - if(daemon->workers[0]->need_to_restart) - daemon->need_to_exit = 0; - else daemon->need_to_exit = 1; + daemon->need_to_exit = daemon->workers[0]->need_to_exit; } void diff --git a/daemon/worker.c b/daemon/worker.c index 64ee700a3..73cd24b70 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -790,22 +790,21 @@ worker_sighandler(int sig, void* arg) switch(sig) { case SIGHUP: verbose(VERB_DETAIL, "caught signal SIGHUP"); - worker->need_to_restart = 1; comm_base_exit(worker->base); break; case SIGINT: verbose(VERB_DETAIL, "caught signal SIGINT"); - worker->need_to_restart = 0; + worker->need_to_exit = 1; comm_base_exit(worker->base); break; case SIGQUIT: verbose(VERB_DETAIL, "caught signal SIGQUIT"); - worker->need_to_restart = 0; + worker->need_to_exit = 1; comm_base_exit(worker->base); break; case SIGTERM: verbose(VERB_DETAIL, "caught signal SIGTERM"); - worker->need_to_restart = 0; + worker->need_to_exit = 1; comm_base_exit(worker->base); break; default: @@ -851,7 +850,7 @@ worker_init(struct worker* worker, struct config_file *cfg, { unsigned int seed; int startport; - worker->need_to_restart = 0; + worker->need_to_exit = 0; worker->base = comm_base_create(); if(!worker->base) { log_err("could not create event handling base"); diff --git a/daemon/worker.h b/daemon/worker.h index 94d1c65e6..2fbdb9e5d 100644 --- a/daemon/worker.h +++ b/daemon/worker.h @@ -99,8 +99,8 @@ struct worker { /** random() table for this worker. */ struct ub_randstate* rndstate; - /** do we need to restart (instead of exit) ? */ - int need_to_restart; + /** do we need to restart or quit (on signal) */ + int need_to_exit; /** allocation cache for this thread */ struct alloc_cache alloc; /** per thread statistics */ diff --git a/doc/Changelog b/doc/Changelog index a1676d7dd..42390527a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +12 November 2007: Wouter + - fixup signal handling where SIGTERM could be ignored if a SIGHUP + arrives later on. + 9 November 2007: Wouter - took ldns snapshot in repo. - default config file is /etc/unbound/unbound.conf. diff --git a/testdata/fwd_compress_c00c.tpkg b/testdata/fwd_compress_c00c.tpkg index 905bb1b3c0e617f2ac78d8c9561487bdf298f41c..372d25556fc87fd48073220d39137b947dd76065 100644 GIT binary patch literal 2131 zc-jF|2(0%XiwFRUFgQm51MOLDbK5o&_E+IoY-mlKOe%^mBIPQv#)_?6d>2cOEMJ`++W+1K_#)Dl&yMSQCOtfHND#n2i?;=Kp~=b{x$I&Q(kL3an&zsW zAJ(@X6dI!0w34^oD7{l`=~`2_HB&QmZA;S|mfhR}>tUO*8OtbkLV&FmTgEiJx!!H% z-zX*<=l^ps{oAG}>|1TkM zE@(u<&ol%+$uRNflvMkJqkkOrfMGWE1CNGkKx36uhr@SZ+L}g4w>KPo9KG&hHFDe; z9=rv%aG6KpQ+&C=C+8)D?#a84@O}WD4)prn!Jt1Nox^{goesfei_4Mkk<;$M@TlK| z_h;Qxo*-9rf&jKfpp)0{^iDr?2iIzUuW4n0 zKy3o5T36%6`BcSfYAW#)JbjuGZ745m5!=u$I&uP0xkO(oBD@D4gG($#Vkh+2DgZ%5 z-5CQV&#S)qa5y?SIs_;1pnBGO-9PJz423LK9zmLOe?I3!h3yr|nw|?`>4kGnAzC7_ zD9q{Fb&r0o2TRN|+E4YIXc>&zGVs<^1(h4<3Z>U5=@&l+?OyxAUG3kC+wmulAPd%x3LWK$&hX?6gy03`Q;66R9wr66GhZ(kvEP%N7HRR$PxXQ z;;!~TWz4&;j$6-v!_4g8uuY5Gf0M_5(*FN?q*KrWoFW(KxS_+YzN_J#M2>g&|sj<$S@F8-Rl5 zZiA;9U||wlQNqb?LSZ6>H*vk3!YJ@qNxyV_=(b*@c+VeBLeb!@FtGVeQ^St%F5Bb0 zBPRd!usuQnlzsE8BUaLp4Z5-UsM|nklV%j_7L3()Mq%GVVI~v_3KXu|{<=Nq&i;Q$ z|I`}$ANFtR*82RnEnA%brXlVBF>s^*AJWJ4{+H2J#~mgt1V6}w0pA&;$^{;fOQK+zX;wa!*J6NiuLx_&6y) zuV%hG6Cp`=@U!xg&sRVyiCBHcE@(Yj-u1B`)Qdb5pCnRHTR`5d8$6*Pf;N_@b2b%m z2|Oif5VTi)QtTtoNE0{oP((j23nu!H@g(ozkf8)OWJ-VLz{t zHMmfU^OhH9bI6NdZRiwl0JLE_7O8yT)5uM%PBe?LpZhlvxZ(H;tO>#2ZF(<@kv$Wp{iGrVN&g?}RPED{KNEVD6x| z;Z+oeXkNV1%8A`sn@pC0%UyQCGfFr{%f++j@Ly6n?))%1I~ffJANO=aBb5)Gqv2@y zcF;ZDGx3vaMRSY8%RLQV@;AKNgX&r;$$aqwO%RhFBb7?FaB+4Fw z3AKo#Nzm-({4cm)n+%gs(QPymJ5~YWDqzES<+w#RnVMktzh%39~ zj!xmeVsge7?gE;Qk}1j#t@OH_F&O((eh4N9A9oQqG1%@64E=xMAkHIN$uh={2a*3P z{Z5>*ytqKkxjla}*|0?UmDFYxhg=}jQ_95Ugc6HoTvqZYF3`Vm+;#uwe(Qa8+;;zG zHVyInpP}Qkp^5vyhAH>|$3Wt`wMYe@V;1@GWeW^a*@j?wQHy8jKlAHzbX2*=*a8uJ z?UM=)#+2bUTuZals0vGPAFoB15pFjvv}g2f{gAq`xTaT;#rL?mwm`}DCCouvbY~%B zNTeu&Aq>P%68y_!HQW|zVsoy|nd{7F;-((CQy;nZE4t6vgH#6h=t@@NcwUHE`L?>B z28a976_t>XkdTm&kdTm&kdTm&kdTm&kdTm&kdTm&kdTm&kdTm&kdTm&kdXK$@du`A Jes=&+006O_GOhps literal 2100 zc-jFp2+Q{$iwFP@k|;+21MOM=ciK1-&#&mOm^!?seO-*dV3VZ{FEpXo+%=FAvfaMB zd#teqctb2|o2J>@{oi*a*Ghf z4!~QY60LOM3@ccPB>%H!ut%l@-$(s*ru2nCxnaI*V8?I>ixEGv2{TTzT zEU|c}LA!l@ev)UcE^lob%l8D2tT51}7YArR9Nr!5&4VbZ@gY${!ihB86K*H%r^{LB z&!8&C{iMC*`xTLjWUJ5E1+B~DT_1;0y(niA63GR%1+1pE;k?N4&_;?rXH&4+Pfd6# zEqHXeSA9}kBk#x>x2*8OJE!2YXcA7vStAJzphjUQsqga{{A<6yQ?lw#eJ7_6`>PT8 zgbP&Mw-q_xLr#9RVNrYn(1zt$v{r^+Mq{>&0&zOgEykXIK8<+~IT>{KG=9Q$ja2cb zo)4|zpPvhYcGg|A)M_zBYn3_+Hyf?yd+7#CUV5SQrG&<`^3#w-Le5Ca7%dmip2L4g<+$_X=iH`N73wTQ#{uPo^j;VM45?gqV*RnYokHe?pRIZCV zmDa*7My){@K*UmMxFx`o=blZ(AqstZ ztG437){<*nsPK<|+$mhcee=H{@gJ~;Rvv`vx!8LrCz9s{qvg!VA@w{AZE z$PYA5F!Z;;)D3b-6F&|YspxnkqZ4=-F#H+y&mrgJj|%j7FG?~!$29~yBMtk>kZvZ5 zhiqs0bT4QZG71;z5iSIV=MoE49G`! zi&XGBW=WW$J6WW%4bk$Vmd?;&x%*(E!ZU^zh~#^pRL~exhN(d<>&~)jq~M!eExAfC z0cc^)gt<)^Q$H1Ms-u)J;Mryiv^-P59!#kGSQxhAq&8>1 zH=hYlMcG-7RQm;8A6Jm^VCr4TDP9m@_|QzNsT=su+|OPP_Ejp9;okKhH2Onz+~xnS z?Ov<@n1*dA|9=eJTK{4ECF~I^Km{#%$>+c6xOeG?uOMJ>g+vsLL4jRHAOs=dJe<$@ z;&BF|Su-IoOyos~1fS!Qm{STbq2lFzB`6DNYf*(a_6_0+)EgqjOQrD$G3vhlFY7xG z({ZQ&HygSCo2G4Z|F@ln^8d%cOOcxAwINY=<>j_&e{l4-qaHBqreTB*qDM5$BAG(7ZqrW$dGK2hqT|;+V z-Lh=mGMu%Lv*BA@>hR+YIlFE{NXq5(PUWwsM~VJ3JI8V8A^N@f#t-E4uklHVJ2fQqGgkrCvXMpkNXXO)Vw zU&5~t`H=bxY<&3=Ag>&4;5#ZEH%!BnN7yLBb0ogz+Z8`6!0915S>q(SE92bexiww0C~w*+!QLZYZg(mku@5P ze=CwT_H6nsK=<^tTv1-Mmdq(*Fb=1@2rdiX{1ee839f&Og#JI!i1UP2@{X|=Kob5! zzY{ffPA-V%vV(9k*>FUsj0Kxj9CC(SPpK1+6LKt;X<5mmrCWbG+&BJnV?R{KUHMP>m7X!MzV<30v_~$M?K(S z4|v=I9{7MqKH#BGN`!Liqw7+HC1!zie&EUzKt_AF!CMV*u!*xM;bd2euu()X@q?8J zt02db>oW0Tx@J+tdw%hxhz6g9h0|}^1}=mz*&VMIV)NSo=OYwAIXBA};>d+;(2dha z-4=4&G#9a+!B}tSBHTMf*iwWcjzr`q~prD|jprD|jprD|jprD|jprD|jprD|j eprD|jprD|jprD|jprD}e?cjI2G|vP8PyhfTd^86D -- 2.47.2