From 634d936a027664b6e0d1cb46f71e0070f5f5a9bc Mon Sep 17 00:00:00 2001
From: Anthony Minessale <anthm@freeswitch.org>
Date: Wed, 20 Nov 2013 23:50:15 +0500
Subject: [PATCH] kill socket in esl_disconnect to prevent blocking

---
 libs/esl/src/esl.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c
index 7a29844ab4..67b82fbe6d 100644
--- a/libs/esl/src/esl.c
+++ b/libs/esl/src/esl.c
@@ -1123,6 +1123,12 @@ ESL_DECLARE(esl_status_t) esl_disconnect(esl_handle_t *handle)
 		return ESL_FAIL;
 	}
 
+	if (handle->sock != ESL_SOCK_INVALID) {
+		closesocket(handle->sock);
+		handle->sock = ESL_SOCK_INVALID;
+		status = ESL_SUCCESS;
+	}
+
 	if (mutex) {
 		esl_mutex_lock(mutex);
 	}
@@ -1145,12 +1151,6 @@ ESL_DECLARE(esl_status_t) esl_disconnect(esl_handle_t *handle)
 	esl_event_safe_destroy(&handle->last_ievent);
 	esl_event_safe_destroy(&handle->info_event);
 
-	if (handle->sock != ESL_SOCK_INVALID) {
-		closesocket(handle->sock);
-		handle->sock = ESL_SOCK_INVALID;
-		status = ESL_SUCCESS;
-	}
-	
 	if (mutex) {
 		esl_mutex_unlock(mutex);
 		esl_mutex_lock(mutex);