* (C) 2015 Xamarin
*/
-#include <mono/utils/networking.h>
+#include <config.h>
#include <glib.h>
#ifdef HAVE_NETDB_H
#include <ifaddrs.h>
#endif
+#include <mono/utils/networking.h>
+#include <mono/utils/mono-threads-coop.h>
+
static void*
get_address_from_sockaddr (struct sockaddr *sa)
{
struct addrinfo hints, *res = NULL, *info;
MonoAddressEntry *cur = NULL, *prev = NULL;
MonoAddressInfo *addr_info;
+ int ret;
memset (&hints, 0, sizeof (struct addrinfo));
*result = NULL;
hints.ai_flags = AI_ADDRCONFIG;
#endif
sprintf (service_name, "%d", port);
- if (getaddrinfo (hostname, service_name, &hints, &info))
+
+ MONO_ENTER_GC_SAFE;
+ ret = getaddrinfo (hostname, service_name, &hints, &info);
+ MONO_EXIT_GC_SAFE;
+
+ if (ret)
return 1; /* FIXME propagate the error */
res = info;