On Wed, Apr 16, 2003 at 11:01:56PM -0700, Brian C. Hill wrote:
I am still trying to solve this problem.
I have verirified from debugging that there is some disconnect in the values salen and addrlen and between
A_RECV(read, closure->max_log_line - closure->pos, closure-> buffer + closure->pos, (abstract_addr *) &sabuf, &salen);
in syslog-ng-1.6rc0/src/sources.c and
res = recvfrom(closure->fd, buffer, length, 0, (struct sockaddr *) addr, (socklen_t *) addrlen);
in libol-0.3.9/src/io.c. salen is set to 256 before and after the A_RECV() is called, but addrlen is set to 0 and sockaddr seems to point to nothing in before recvfrom() is called. As a result recvfrom() simply doesn't record the address information of the sending host.
This is on SunOS-5.8-sparc in 64-bit mode with gcc 3.2.1 compiling 64-bit binaries.
Anyway, the result is that syslog-ng is unable to record the address of the sending host and winds up prepending all logged messages with it's own hostname, rather than the sending host's.
With all of the casting and and abstraction involved in the code, I am not sure what to try next.
Any suggestions? Is this a 64-bit problem?
syslog-ng has never been compiled in 64bit userspace, therefore it is almost certain that you will run into problems. IMHO you should try to compile syslog-ng as a 32 bit executable. -- Bazsi PGP info: KeyID 9AF8D0A9 Fingerprint CD27 CFB0 802C 0944 9CFD 804E C82C 8EB1