Fix error codes for memory-saving patch.

Also, get rid of compile-time switch OPENSSL_NO_RELEASE_BUFFERS
because it was rather pointless (the new behavior has to be explicitly
requested by setting SSL_MODE_RELEASE_BUFFERS anyway).
This commit is contained in:
Bodo Möller 2008-08-04 22:10:38 +00:00
parent 3e727a3b37
commit 474b3b1cc8
6 changed files with 17 additions and 21 deletions

View File

@ -591,7 +591,7 @@ int ssl_verify_alarm_type(long type)
return(al); return(al);
} }
#if !defined(OPENSSL_NO_BUF_FREELISTS) && !defined(OPENSSL_NO_RELEASE_BUFFERS) #ifndef OPENSSL_NO_BUF_FREELISTS
/* On some platforms, malloc() performance is bad enough that you can't just /* On some platforms, malloc() performance is bad enough that you can't just
* free() and malloc() buffers all the time, so we need to use freelists from * free() and malloc() buffers all the time, so we need to use freelists from
* unused buffers. Currently, each freelist holds memory chunks of only a * unused buffers. Currently, each freelist holds memory chunks of only a
@ -698,7 +698,7 @@ int ssl3_setup_read_buffer(SSL *s)
return 1; return 1;
err: err:
SSLerr(SSL_F_SSL3_SETUP_BUFFERS,ERR_R_MALLOC_FAILURE); SSLerr(SSL_F_SSL3_SETUP_READ_BUFFER,ERR_R_MALLOC_FAILURE);
return 0; return 0;
} }
@ -733,7 +733,7 @@ int ssl3_setup_write_buffer(SSL *s)
return 1; return 1;
err: err:
SSLerr(SSL_F_SSL3_SETUP_BUFFERS,ERR_R_MALLOC_FAILURE); SSLerr(SSL_F_SSL3_SETUP_WRITE_BUFFER,ERR_R_MALLOC_FAILURE);
return 0; return 0;
} }

View File

@ -238,11 +238,9 @@ int ssl3_read_n(SSL *s, int n, int max, int extend)
if (i <= 0) if (i <= 0)
{ {
rb->left = left; rb->left = left;
#ifndef OPENSSL_NO_RELEASE_BUFFERS if (s->mode & SSL_MODE_RELEASE_BUFFERS)
if (len+left == 0 && if (len+left == 0)
(s->mode & SSL_MODE_RELEASE_BUFFERS)) ssl3_release_read_buffer(s);
ssl3_release_read_buffer(s);
#endif
return(i); return(i);
} }
left+=i; left+=i;
@ -825,10 +823,8 @@ int ssl3_write_pending(SSL *s, int type, const unsigned char *buf,
{ {
wb->left=0; wb->left=0;
wb->offset+=i; wb->offset+=i;
#ifndef OPENSSL_NO_RELEASE_BUFFERS
if (s->mode & SSL_MODE_RELEASE_BUFFERS) if (s->mode & SSL_MODE_RELEASE_BUFFERS)
ssl3_release_write_buffer(s); ssl3_release_write_buffer(s);
#endif
s->rwstate=SSL_NOTHING; s->rwstate=SSL_NOTHING;
return(s->s3->wpend_ret); return(s->s3->wpend_ret);
} }
@ -983,10 +979,8 @@ start:
{ {
s->rstate=SSL_ST_READ_HEADER; s->rstate=SSL_ST_READ_HEADER;
rr->off=0; rr->off=0;
#ifndef OPENSSL_NO_RELEASE_BUFFERS if (s->mode & SSL_MODE_RELEASE_BUFFERS)
if ((s->mode & SSL_MODE_RELEASE_BUFFERS))
ssl3_release_read_buffer(s); ssl3_release_read_buffer(s);
#endif
} }
} }
return(n); return(n);

View File

@ -840,7 +840,7 @@ struct ssl_ctx_st
unsigned char *psk, unsigned int max_psk_len); unsigned char *psk, unsigned int max_psk_len);
#endif #endif
#if !defined(OPENSSL_NO_BUF_FREELISTS) || !defined(OPENSSL_NO_RELEASE_BUFFERS) #ifndef OPENSSL_NO_BUF_FREELISTS
#define SSL_MAX_BUF_FREELIST_LEN_DEFAULT 32 #define SSL_MAX_BUF_FREELIST_LEN_DEFAULT 32
unsigned int freelist_max_len; unsigned int freelist_max_len;
struct ssl3_buf_freelist_st *wbuf_freelist; struct ssl3_buf_freelist_st *wbuf_freelist;
@ -1851,8 +1851,9 @@ void ERR_load_SSL_strings(void);
#define SSL_F_SSL3_SEND_SERVER_CERTIFICATE 154 #define SSL_F_SSL3_SEND_SERVER_CERTIFICATE 154
#define SSL_F_SSL3_SEND_SERVER_HELLO 242 #define SSL_F_SSL3_SEND_SERVER_HELLO 242
#define SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE 155 #define SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE 155
#define SSL_F_SSL3_SETUP_BUFFERS 156
#define SSL_F_SSL3_SETUP_KEY_BLOCK 157 #define SSL_F_SSL3_SETUP_KEY_BLOCK 157
#define SSL_F_SSL3_SETUP_READ_BUFFER 156
#define SSL_F_SSL3_SETUP_WRITE_BUFFER 291
#define SSL_F_SSL3_WRITE_BYTES 158 #define SSL_F_SSL3_WRITE_BYTES 158
#define SSL_F_SSL3_WRITE_PENDING 159 #define SSL_F_SSL3_WRITE_PENDING 159
#define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 277 #define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 277

View File

@ -1,6 +1,6 @@
/* ssl/ssl_err.c */ /* ssl/ssl_err.c */
/* ==================================================================== /* ====================================================================
* Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved. * Copyright (c) 1999-2008 The OpenSSL Project. All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@ -167,8 +167,9 @@ static ERR_STRING_DATA SSL_str_functs[]=
{ERR_FUNC(SSL_F_SSL3_SEND_SERVER_CERTIFICATE), "SSL3_SEND_SERVER_CERTIFICATE"}, {ERR_FUNC(SSL_F_SSL3_SEND_SERVER_CERTIFICATE), "SSL3_SEND_SERVER_CERTIFICATE"},
{ERR_FUNC(SSL_F_SSL3_SEND_SERVER_HELLO), "SSL3_SEND_SERVER_HELLO"}, {ERR_FUNC(SSL_F_SSL3_SEND_SERVER_HELLO), "SSL3_SEND_SERVER_HELLO"},
{ERR_FUNC(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE), "SSL3_SEND_SERVER_KEY_EXCHANGE"}, {ERR_FUNC(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE), "SSL3_SEND_SERVER_KEY_EXCHANGE"},
{ERR_FUNC(SSL_F_SSL3_SETUP_BUFFERS), "SSL3_SETUP_BUFFERS"},
{ERR_FUNC(SSL_F_SSL3_SETUP_KEY_BLOCK), "SSL3_SETUP_KEY_BLOCK"}, {ERR_FUNC(SSL_F_SSL3_SETUP_KEY_BLOCK), "SSL3_SETUP_KEY_BLOCK"},
{ERR_FUNC(SSL_F_SSL3_SETUP_READ_BUFFER), "SSL3_SETUP_READ_BUFFER"},
{ERR_FUNC(SSL_F_SSL3_SETUP_WRITE_BUFFER), "SSL3_SETUP_WRITE_BUFFER"},
{ERR_FUNC(SSL_F_SSL3_WRITE_BYTES), "SSL3_WRITE_BYTES"}, {ERR_FUNC(SSL_F_SSL3_WRITE_BYTES), "SSL3_WRITE_BYTES"},
{ERR_FUNC(SSL_F_SSL3_WRITE_PENDING), "SSL3_WRITE_PENDING"}, {ERR_FUNC(SSL_F_SSL3_WRITE_PENDING), "SSL3_WRITE_PENDING"},
{ERR_FUNC(SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT), "SSL_ADD_CLIENTHELLO_TLSEXT"}, {ERR_FUNC(SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT), "SSL_ADD_CLIENTHELLO_TLSEXT"},

View File

@ -1581,7 +1581,7 @@ SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth)
ret->psk_client_callback=NULL; ret->psk_client_callback=NULL;
ret->psk_server_callback=NULL; ret->psk_server_callback=NULL;
#endif #endif
#if !defined(OPENSSL_NO_BUF_FREELISTS) && !defined(OPENSSL_NO_RELEASE_BUFFERS) #ifndef OPENSSL_NO_BUF_FREELISTS
ret->freelist_max_len = SSL_MAX_BUF_FREELIST_LEN_DEFAULT; ret->freelist_max_len = SSL_MAX_BUF_FREELIST_LEN_DEFAULT;
ret->rbuf_freelist = OPENSSL_malloc(sizeof(SSL3_BUF_FREELIST)); ret->rbuf_freelist = OPENSSL_malloc(sizeof(SSL3_BUF_FREELIST));
if (!ret->rbuf_freelist) if (!ret->rbuf_freelist)
@ -1633,7 +1633,7 @@ static void SSL_COMP_free(SSL_COMP *comp)
{ OPENSSL_free(comp); } { OPENSSL_free(comp); }
#endif #endif
#if !defined(OPENSSL_NO_BUF_FREELISTS) && !defined(OPENSSL_NO_RELEASE_BUFFERS) #ifndef OPENSSL_NO_BUF_FREELISTS
static void static void
ssl_buf_freelist_free(SSL3_BUF_FREELIST *list) ssl_buf_freelist_free(SSL3_BUF_FREELIST *list)
{ {
@ -1714,7 +1714,7 @@ void SSL_CTX_free(SSL_CTX *a)
ENGINE_finish(a->client_cert_engine); ENGINE_finish(a->client_cert_engine);
#endif #endif
#if !defined(OPENSSL_NO_BUF_FREELISTS) && !defined(OPENSSL_NO_RELEASE_BUFFERS) #ifndef OPENSSL_NO_BUF_FREELISTS
if (a->wbuf_freelist) if (a->wbuf_freelist)
ssl_buf_freelist_free(a->wbuf_freelist); ssl_buf_freelist_free(a->wbuf_freelist);
if (a->rbuf_freelist) if (a->rbuf_freelist)

View File

@ -561,7 +561,7 @@ typedef struct ssl3_comp_st
COMP_METHOD *method; /* The method :-) */ COMP_METHOD *method; /* The method :-) */
} SSL3_COMP; } SSL3_COMP;
#if !defined(OPENSSL_NO_BUF_FREELISTS) && !defined(OPENSSL_NO_RELEASE_BUFFERS) #ifndef OPENSSL_NO_BUF_FREELISTS
typedef struct ssl3_buf_freelist_st typedef struct ssl3_buf_freelist_st
{ {
size_t chunklen; size_t chunklen;