IIRC I tried but gcc then complained I have two case statements in my switch with the same value.
Yes, that's correct. You'd probably need to add something along the lines of: #ifndef __GNUC__ EWOULDBLOCK: #else EAGAIN: #endif Anyway, it's not important.
This case was added especially to handle Solaris. The fd here is set into non-blocking mode in which case Linux _always_ returns EINPROGRESS, the poll loop then checks for writability and calls the callback for afsocket_dest_connected. (probably defined in afsocket.c)
Exactly.
On the other hand Solaris returned ECONNREFUSED when connecting to a local socket immediately regardless whether the fd was set into non-blocking mode.
Oh, didn't know that.
Thus I reinit when I get ECONNREFUSED or in the connected callback called from the main loop.
Ok.
Syslog-ng currently does not start if initialization fails. If the interface is not up or the routing table not complete syslog-ng might not start.
That's what I mean, yes. As you state below you will not change this anymore, so I guess I have to patch my local copy of syslog-ng then for my purposes ;).
This was intended at the time I implemented this code. This decision might not be the best but I wouldn't bother fixing those as I am currently rewriting syslog-ng from scratch. (see my announcement about the 1.9.x branch)
I know I said 'last question ...' and so forth but do you have a architecture plan for syslog-ng 2.0.0? Why is there the big rewrite, once I got familiar with the code? :) Thanks for the information so far and have a nice weekend, Roberto Nibali, ratz -- echo '[q]sa[ln0=aln256%Pln256/snlbx]sb3135071790101768542287578439snlbxq' | dc