projects
/
ircu2.10.12-pk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Only respawn an IAuth process when both sockets are destroyed.
[ircu2.10.12-pk.git]
/
ircd
/
s_auth.c
diff --git
a/ircd/s_auth.c
b/ircd/s_auth.c
index 95e7d5ca1741f7c17f267c68aeeb53933e3b0b27..ddeabbc38d8d3e2c00efed37bcd07ce1eac4203b 100644
(file)
--- a/
ircd/s_auth.c
+++ b/
ircd/s_auth.c
@@
-2248,8
+2248,7
@@
static void iauth_sock_callback(struct Event *ev)
switch (ev_type(ev)) {
case ET_DESTROY:
switch (ev_type(ev)) {
case ET_DESTROY:
- /* Hm, what happened here? */
- if (!IAuthHas(iauth, IAUTH_CLOSING))
+ if (!IAuthHas(iauth, IAUTH_CLOSING) && !s_active(i_stderr(iauth)))
iauth_do_spawn(iauth, 1);
break;
case ET_READ:
iauth_do_spawn(iauth, 1);
break;
case ET_READ:
@@
-2322,7
+2321,8
@@
static void iauth_stderr_callback(struct Event *ev)
switch (ev_type(ev)) {
case ET_DESTROY:
switch (ev_type(ev)) {
case ET_DESTROY:
- /* We do not restart iauth here: the stdout handler does that for us. */
+ if (!IAuthHas(iauth, IAUTH_CLOSING) && !s_active(i_socket(iauth)))
+ iauth_do_spawn(iauth, 1);
break;
case ET_READ:
iauth_read_stderr(iauth);
break;
case ET_READ:
iauth_read_stderr(iauth);