[Date Prev][Date Next]
Re: (ITS#3704) slapd: socket problem using gcc elf-64
>> (...) the thing to do is
>> to add -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 to CFLAGS (I also added
>> it to CPPFLAGS, although I don't know if it's mandatory), and also add
>> -lxnet to LDFLAGS. (...)
> Thanks for the information. Apparently the trouble is that on the 64 bit
> compile, sizeof(int) < sizeof(socklen_t). Since daemon.c uses socklen_t
> and the default HPUX implementation uses int, accept() sees a zero
> passed for the addrlen. There are probably other reasons to use
> -D_XOPEN_SOURCE hiding in there too.
>> P.S. when compiling openldap on HP-UX 11.00 using native cc compiler (v
>> 3.45) you could run into trouble because the usr/include/arpa/nameser.h file
>> has a problem at line 94 (some nested comments). So better correct the file,
>> if possible (you should need root acces for that...).
Sounds like a more portable fix - or fallback - would be for configure
to try to compile
#include <whatever socket files are needed>
int accept(int, struct sockaddr *, AC_SOCKLEN_T *);
with -DAC_SOCKLEN_T=socklen_t, if that fail then -DAC_SOCKLEN_T=int,
if that succeeds then use int instead.
(Actually it must also try void* instead of struct sockaddr *;
HPUX is *different*. But that differente is harmless.)