AC_HEADER_SYS_WAIT
AC_TYPE_OFF_T
AC_TYPE_UID_T
-AC_CHECK_FUNCS([floor gethostname memmove rmdir strncasecmp strrchr strtol atoll dup2 fdatasync ftruncate gettimeofday memset mkdir mkfifo select socket strcasecmp strchr strdup strerror strstr clock_gettime getrusage rand uname setlocale getcwd mktime gmtime_r gmtime strlcpy strlcat ftruncate stat64 sbrk mmap mremap setrlimit gethostbyaddr initgroups getifaddrs freeifaddrs getnameinfo getaddrinfo inet_ntoa localtime_r nl_langinfo putenv realpath strndup gethostbyname2 gethostbyname])
+AC_CHECK_FUNCS([floor gethostname memmove rmdir strncasecmp strrchr strtol atoll dup2 fdatasync ftruncate gettimeofday memset mkdir mkfifo select socket strcasecmp strchr strdup strerror strstr clock_gettime getrusage rand uname setlocale getcwd mktime gmtime_r gmtime strlcpy strlcat ftruncate stat64 sbrk mmap mremap setrlimit sysconf gethostbyaddr initgroups getifaddrs freeifaddrs getnameinfo getaddrinfo inet_ntoa localtime_r nl_langinfo putenv realpath strndup gethostbyname2 gethostbyname])
# restore LIBS
LIBS=$SAVE_LIBS
char *data;
};
+/**
+ * Local max hostname length (some platforms use sysconf() for it)
+ */
+static int max_hostname_length;
+
/**
* Task that will produce a new response object.
*/
unsigned long long port;
char *uri;
- char hostname[HOST_NAME_MAX];
+ char hostname[max_hostname_length + 1];
char *protocol = "http://";
char *port_s = GNUNET_malloc(6 * sizeof(char));
- if (0 != gethostname (hostname, sizeof (hostname) - 1))
+ if (0 != gethostname (hostname, sizeof (hostname)))
{
GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR,
"Could not get system's hostname, unable to create advertisement message");
{
unsigned long long port;
+#if HAVE_SYSCONF && defined(_SC_HOST_NAME_MAX)
+ max_hostname_length = sysconf(_SC_HOST_NAME_MAX);
+ if (-1 == max_hostname_length)
+ return GNUNET_SYSERR;
+#elif defined(HOST_NAME_MAX)
+ max_hostname_length = HOST_NAME_MAX;
+#else
+ max_hostname_length = 255; /* sensible default? */
+#endif
+
sched = s;
cfg = c;
stats = st;
#endif
#ifdef FREEBSD
-#ifndef HOST_NAME_MAX
-#define HOST_NAME_MAX MAXHOSTNAMELEN
-#endif
#define __BYTE_ORDER BYTE_ORDER
#define __BIG_ENDIAN BIG_ENDIAN
#endif
#ifdef DARWIN
-#ifndef HOST_NAME_MAX
-#define HOST_NAME_MAX MAXHOSTNAMELEN
-#endif
#define __BYTE_ORDER BYTE_ORDER
#define __BIG_ENDIAN BIG_ENDIAN
/* not available on darwin, override configure */