diff --git a/libs/libks/src/kws.c b/libs/libks/src/kws.c
index a9c5141d72..8994a67489 100644
--- a/libs/libks/src/kws.c
+++ b/libs/libks/src/kws.c
@@ -482,7 +482,13 @@ KS_DECLARE(ks_ssize_t) kws_raw_write(kws_t *kws, void *data, ks_size_t bytes)
 			ks_sleep_ms(ms);
 		}
 		
-	} while (--sanity > 0 && ((r == -1 && ks_errno_is_blocking(ks_errno())) || (kws->block && wrote < bytes)));
+		if (r == -1) {
+			if (!ks_errno_is_blocking(ks_errno())) {
+				break;
+			}
+		}
+
+	} while (--sanity > 0 && kws->block && wrote < bytes);
 	
 	//if (r<0) {
 		//printf("wRITE FAIL: %s\n", strerror(errno));
diff --git a/libs/sofia-sip/.update b/libs/sofia-sip/.update
index c3cfd79ba3..cafd8c857c 100644
--- a/libs/sofia-sip/.update
+++ b/libs/sofia-sip/.update
@@ -1 +1 @@
-Thu Apr  6 17:08:51 CDT 2017
+Fri Apr 21 15:42:59 CDT 2017
diff --git a/libs/sofia-sip/libsofia-sip-ua/tport/ws.c b/libs/sofia-sip/libsofia-sip-ua/tport/ws.c
index 8d3db0a73e..774c694625 100644
--- a/libs/sofia-sip/libsofia-sip-ua/tport/ws.c
+++ b/libs/sofia-sip/libsofia-sip-ua/tport/ws.c
@@ -476,7 +476,13 @@ ssize_t ws_raw_write(wsh_t *wsh, void *data, size_t bytes)
 			ms_sleep(ms);
 		}
 
-	} while (--sanity > 0 && ((r == -1 && xp_is_blocking(xp_errno())) || (wsh->block && wrote < bytes)));
+		if (r == -1) {
+			if (!ks_errno_is_blocking(ks_errno())) {
+				break;
+			}
+		}
+
+	} while (--sanity > 0 && kws->block && wrote < bytes);
 
 	//if (r<0) {
 		//printf("wRITE FAIL: %s\n", strerror(errno));
diff --git a/src/mod/endpoints/mod_verto/ws.c b/src/mod/endpoints/mod_verto/ws.c
index 8d3db0a73e..774c694625 100644
--- a/src/mod/endpoints/mod_verto/ws.c
+++ b/src/mod/endpoints/mod_verto/ws.c
@@ -476,7 +476,13 @@ ssize_t ws_raw_write(wsh_t *wsh, void *data, size_t bytes)
 			ms_sleep(ms);
 		}
 
-	} while (--sanity > 0 && ((r == -1 && xp_is_blocking(xp_errno())) || (wsh->block && wrote < bytes)));
+		if (r == -1) {
+			if (!ks_errno_is_blocking(ks_errno())) {
+				break;
+			}
+		}
+
+	} while (--sanity > 0 && kws->block && wrote < bytes);
 
 	//if (r<0) {
 		//printf("wRITE FAIL: %s\n", strerror(errno));