On Tue, 11 Jun 2024 23:10:07 +0100,
Kirill A. Korinsky <[email protected]> wrote:
>
> I register session / message related things like this:
>
> osmtpd_local_session(auth_session_new, auth_session_free);
> osmtpd_local_message(auth_message_new, auth_message_free);
>
> and I made an assumtion that both free method are called when I call:
>
> osmtpd_filter_disconnect(ctx, "Internal server error");
>
> am I right with that assumtion?
>
Seems that I was wrong. Or at least it hasn't happened each connection.
It defently may missbehave on error, and to avoid complexity of code I
migrated filter to osmtpd_err/osmtpd_errx in case of error which exists a
filter if syscall returns something unexcpected.
Also, I've added trace log each time when auth_{message,session}_{new,free}
is called, as first statment of the function.
And for the last night I had 14 leaked files. All of them had happened from
incomming connections from mail.nginx.org, and usuall log associeted with
connection looks like:
mx1$ grep 78ba6f2a7dceb938 /var/log/maillog
Jun 13 05:55:11 mx1 smtpd[97991]: 78ba6f2a7dceb938 smtp connected
address=206.251.255.65 host=mail.nginx.com
Jun 13 05:55:11 mx1 smtpd[84725]: auth: 78ba6f2a7dceb938 session_new
Jun 13 05:55:13 mx1 smtpd[97991]: 78ba6f2a7dceb938 smtp tls
ciphers=TLSv1.3:TLS_AES_256_GCM_SHA384:256
Jun 13 05:55:14 mx1 smtpd[84725]: auth: 78ba6f2a7dceb938 message_new
mx1$
No dissconnect, no call auth_{message,session}_free, nothing.
--
wbr, Kirill