]> granicus.if.org Git - curl/commitdiff
schannel: Support partial send for when data is too large
authorMarc Aldorasi <marc@groundctl.com>
Fri, 15 Sep 2017 17:00:05 +0000 (13:00 -0400)
committerJay Satiro <raysatiro@yahoo.com>
Sat, 16 Sep 2017 07:19:35 +0000 (03:19 -0400)
Schannel can only encrypt a certain amount of data at once.  Instead of
failing when too much data is to be sent at once, send as much data as
we can and let the caller send the remaining data by calling send again.

Bug: https://curl.haxx.se/mail/lib-2014-07/0033.html

Closes https://github.com/curl/curl/pull/1890

lib/vtls/schannel.c

index 83d443fd1a389a3b6b3ca3407ad5be4a896e8b88..9ca1431bdb2da1016398f4e79de7144a018b28ed 100644 (file)
@@ -1047,8 +1047,7 @@ schannel_send(struct connectdata *conn, int sockindex,
 
   /* check if the buffer is longer than the maximum message length */
   if(len > BACKEND->stream_sizes.cbMaximumMessage) {
-    *err = CURLE_SEND_ERROR;
-    return -1;
+    len = BACKEND->stream_sizes.cbMaximumMessage;
   }
 
   /* calculate the complete message length and allocate a buffer for it */