Manuel Teira Paz wrote:
Hello again.

During the compilation stage of the trunk, I run into this error:


source='qpid/broker/Bridge.cpp' object='qpid/broker/Bridge.lo' libtool=yes \
DEPDIR=.deps depmode=dashXmstdout /bin/bash ../build-aux/depcomp \
/bin/bash ../libtool --tag=CXX --mode=compile CC -g -m64 -DHAVE_CONFIG_H -I. -Igen -I./gen -I/opt/qpid/include -library=stlport4 -mt -c -o qpid/broker/Bridge.lo qpid/broker/Bridge.cpp CC -g -m64 -DHAVE_CONFIG_H -I. -Igen -I./gen -I/opt/qpid/include -library=stlport4 -mt -c qpid/broker/Bridge.cpp -KPIC -DPIC -o qpid/broker/.libs/Bridge.o
"./qpid/sys/Socket.h", line 96: Error: socklen_t is not defined.
"qpid/broker/Bridge.cpp", line 170: Warning: id hides qpid::broker::Bridge::id.
1 Error(s) and 1 Warning(s) detected.

I started looking in my Solaris system, where socklen_t is defined, and the place was sys/socket.h. Nevertheless, I see that the way integer types are intended to be imported now regardless the platform is:
qpid/sys/IntegerTypes.h

that relies on a platform dependent file.

The question here is, where exactly the socklen_t is suposed to be defined in linux or a posix compliant system? The posix IntegerTypes.h in qpid is just including <stdint.h>, but after a fast look in an Ubuntu system, I didn't find there any declaration for socklen_t. Another curious thing about socklen_t is what I've found here:

http://portabilityblog.com/blog/archives/7-socklen_t-confusion.html

Also, the declaration for solaris is not trivial:


#if defined(_XPG4_2) && !defined(_XPG5) && !defined(_LP64)
typedef size_t          socklen_t;
#else
typedef uint32_t        socklen_t;
#endif  /* defined(_XPG4_2) && !defined(_XPG5) && !defined(_LP64) */


Anyway, it seems to rely to uint32_t on normal cases.


What do you think is the best way to proceed here? Just add a #include <sys/socket.h> in the posix IntegerTypes.h?

I would only #include socket.h in network-related files that need socklen_t, it's not really a generic integer type it's specific to sockets. Where is it being used that we're not already including socket.h?


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org

Reply via email to