diff --git a/lib/curl_darwinssl.c b/lib/curl_darwinssl.c
index e8fa275..e42c96e 100644
--- a/lib/curl_darwinssl.c
+++ b/lib/curl_darwinssl.c
@@ -1388,7 +1388,10 @@ static ssize_t darwinssl_send(struct connectdata *conn,
 
   if(err != noErr) {
     switch (err) {
-      case errSSLWouldBlock:  /* we're not done yet; keep sending */
+      case errSSLWouldBlock:  /* writing got to a certain point and
+                                 then stopped; return how much we sent */
+        if(processed)
+          return (ssize_t)processed;
         *curlcode = CURLE_AGAIN;
         return -1;
         break;

