The logic isn't as described in the source and intended by this code:
ngIRCd doesn't wait for the asynchronous resolver process until the set
penalty time is over, but until the forked process terminates or the
initial connection timeout (= PongTimeout) triggers.
So don't set the penalty time at all and remove the wrong comment.
Resolve_Addr(&My_Connections[new_sock].proc_stat, &new_addr,
identsock, cb_Read_Resolver_Result);
- /* ngIRCd waits up to 4 seconds for the result of the asynchronous
- * DNS and IDENT resolver subprocess using the "penalty" mechanism.
- * If there are results earlier, the delay is aborted. */
- Conn_SetPenalty(new_sock, 4);
-
Account_Connection();
return new_sock;
} /* New_Connection */