nicm/fdm

socket error after successful POP3 session

koitsu opened this issue · 3 comments

While moving from fetchmail+procmail to fdm, I found the following when using fdm -vvvv kind of strange. So far, this issue appears cosmetic, but I wanted to ask anyway.

On a successful session (but no new mail), I see:

parent: started, pid is 44521
parent: 0 children, 0 dead children
parent: child 44522 (mambo) started
mambo: fetch started, pid 44522
...
< +OK 0 0
mambo: fetch loop start
mambo: calling fetch state (0x420d60, flags 0x02)
mambo: fetch, block
mambo: queued 0; blocked 0; flags 0x02
mambo: polling: 2, timeout=900000
> QUIT
mambo: fetch loop start
mambo: calling fetch state (0x421010, flags 0x02)
mambo: fetch, block
mambo: queued 0; blocked 0; flags 0x02
mambo: polling: 2, timeout=900000
< +OK Logging out.
mambo: fetch loop start
mambo: calling fetch state (0x421010, flags 0x02)
mambo: fetch, exit
mambo: 0 messages processed in 0.723 seconds
mambo: finished processing. exiting
mambo: sending exit message to parent
mambo: waiting for exit message from parent
parent: got message type 1, id 0 from child 44522
parent: sending exit message to child 44522
parent: 1 children, 0 dead children
parent: 1 children, 0 dead children
parent: child 44522 socket error
parent: 1 children, 0 dead children
parent: waiting for children
parent: child 44522 returned 0
parent: waiting for children
parent: waiting for children
parent: finished, total time 0.724 seconds

Question: why is socket error shown? At this phase, the socket closure and underlying FIN/FIN+ACK handshake should be successful, so I don't know why fdm insists this is a "socket error".

  • Client OS: FreeBSD 11.4-STABLE running fdm version 2.0 from pkg/ports
  • Remote OS: FreeBSD 11.3-STABLE running Dovecot 2.x -- however, this same problem happens against non-FreeBSD and non-Dovecot servers (such as Comcast's IMAP/POP3 server), so I do not believe the server OS or POP3 daemon software is relevant.

I wonder if #41 is related somehow.

nicm commented

It means the socket to communicate with the child process. This is debug logging, it is not reporting a problem.

Great, thanks.