On Thu, 30 Aug 2007 08:50:40 +0200
Stefan Priebe <[EMAIL PROTECTED]> wrote:
> So here are some problems and the solutions ( the patches may not apply
> cleanly to the actual 0.40 version):
>
>
> 1.) You get some errors with the auth mechanism if an old process has
> used auth the value seems not to be destroyed. So add
> "delete($qpsmtpd->{_auth});"
> in function new_child before my ($client, $iinfo) = $d->accept().
> otherwise some other hosts are authorized even if they don't authourize
> at all.
What about $qpsmtpd->{_auth_user}, $qpsmtpd->{_auth_mechanism}?
Do we want to reset the $qpsmtpd->command_counter, too (AKA
$qpsmtpd->{_counter})?
I'd rather not fix it this way if possible. Better would be to create a
new instance of $qpsmtpd when a new client connects. Else we'll be hunting bugs
like these if something like $qpsmtpd->{_auth} is added to the core.
[...]
> 3.) If you would like to run more than one qpsmtpd-prefork on a single
> machine you get a problem with the shared memory so my patch:
> # setup shared memory
> - $chld_shmem = shmem("qpsmtpd", 1);
> + $chld_shmem = shmem($d_port."qpsmtpd", 1);
> untie $chld_shmem;
>
> @@ -470,7 +485,7 @@ sub shmem_opt {
>
> my ($chld_shmem, $chld_busy);
> eval {
> - $chld_shmem = &shmem("qpsmtpd", 0); #connect to shared
> memory hash
> + $chld_shmem = &shmem($d_port."qpsmtpd", 0); #connect to
> shared memory hash
>
> if (tied %{$chld_shmem}) {
> # perform options
Seems to be ok, if noone speaks against it, I'll commit tomorrow. There
should be a note in the docs then, that you can't use two ports like
10025 and 10026:
The association between variables in distinct processes is
provided by GLUE. This is an integer number or 4 character
string[1] that serves as a common identifier for data across
process space.
> 4.) The only last problem i have is, that if i don't exit the child if
> it has done a TLS connection a second or third TLS connection mostly fail.
Any (verbose) logs about the failed connections?