diff options
Diffstat (limited to 'libglusterfs')
-rw-r--r-- | libglusterfs/src/events.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/libglusterfs/src/events.c b/libglusterfs/src/events.c index 908a318a8a1..6369e8f55be 100644 --- a/libglusterfs/src/events.c +++ b/libglusterfs/src/events.c @@ -51,13 +51,6 @@ _gf_event(eventtypes_t event, const char *fmt, ...) goto out; } - /* Initialize UDP socket */ - sock = socket(AF_INET, SOCK_DGRAM, 0); - if (sock < 0) { - ret = EVENT_ERROR_SOCKET; - goto out; - } - if (ctx) { volfile_server_transport = ctx->cmd_args.volfile_server_transport; } @@ -66,7 +59,6 @@ _gf_event(eventtypes_t event, const char *fmt, ...) } /* host = NULL returns localhost */ - host = NULL; if (ctx && ctx->cmd_args.volfile_server && (strcmp(volfile_server_transport, "unix"))) { /* If it is client code then volfile_server is set @@ -84,6 +76,23 @@ _gf_event(eventtypes_t event, const char *fmt, ...) goto out; } + // iterate over the result and break when socket creation is success. + for (; result != NULL; result = result->ai_next) { + sock = socket(result->ai_family, result->ai_socktype, + result->ai_protocol); + if (sock != -1) { + break; + } + } + /* + * If none of the addrinfo structures lead to a successful socket + * creation, socket creation has failed. + */ + if (sock < 0) { + ret = EVENT_ERROR_SOCKET; + goto out; + } + va_start(arguments, fmt); ret = gf_vasprintf(&msg, fmt, arguments); va_end(arguments); |