Commit 3ef477c6 authored by Andy Polyakov's avatar Andy Polyakov
Browse files

s3_pkt.c: move ssl3_release_write_buffer to ssl3_write_bytes.

If application has more data than maximum fragment, hold to buffer
for whole write, as opposite to per-fragment strategy.
parent 24e20db4
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -654,6 +654,7 @@ int ssl3_write_bytes(SSL *s, int type, const void *buf_, int len)
		i=do_ssl3_write(s, type, &(buf[tot]), nw, 0);
		if (i <= 0)
			{
			/* XXX should we ssl3_release_write_buffer if i<0? */
			s->s3->wnum=tot;
			return i;
			}
@@ -666,6 +667,10 @@ int ssl3_write_bytes(SSL *s, int type, const void *buf_, int len)
			 * in ciphersuites with known-IV weakness: */
			s->s3->empty_fragment_done = 0;

			if ((i==(int)n) && s->mode & SSL_MODE_RELEASE_BUFFERS &&
				!SSL_IS_DTLS(s))
				ssl3_release_write_buffer(s);

			return tot+i;
			}

@@ -995,9 +1000,6 @@ int ssl3_write_pending(SSL *s, int type, const unsigned char *buf,
			{
			wb->left=0;
			wb->offset+=i;
			if (s->mode & SSL_MODE_RELEASE_BUFFERS &&
				!SSL_IS_DTLS(s))
				ssl3_release_write_buffer(s);
			s->rwstate=SSL_NOTHING;
			return(s->s3->wpend_ret);
			}