aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlloyd <[email protected]>2012-01-04 19:12:15 +0000
committerlloyd <[email protected]>2012-01-04 19:12:15 +0000
commit799ac21b42da667e1b2c6b381468982029524df7 (patch)
tree45b508272e6a02d89cb23e4fc07717864d0b5db2
parent550faf230b01c657b5883a35643e8b9865b122ca (diff)
Remove the support for writing application data before the handshake
completes. The client gets a callback when the handshake is complete so they can know exactly when it's OK to send.
-rw-r--r--src/tls/tls_channel.cpp15
-rw-r--r--src/tls/tls_channel.h2
2 files changed, 3 insertions, 14 deletions
diff --git a/src/tls/tls_channel.cpp b/src/tls/tls_channel.cpp
index 28cc8a0a4..d0f5ab1e2 100644
--- a/src/tls/tls_channel.cpp
+++ b/src/tls/tls_channel.cpp
@@ -173,19 +173,10 @@ void TLS_Channel::read_handshake(byte rec_type,
void TLS_Channel::queue_for_sending(const byte buf[], size_t buf_size)
{
- if(handshake_completed)
- {
- while(!pre_handshake_write_queue.end_of_data())
- {
- SecureVector<byte> q_buf(1024);
- const size_t got = pre_handshake_write_queue.read(&q_buf[0], q_buf.size());
- writer.send(APPLICATION_DATA, &q_buf[0], got);
- }
+ if(!handshake_completed)
+ throw std::invalid_state("Application data cannot be queued before handshake");
- writer.send(APPLICATION_DATA, buf, buf_size);
- }
- else
- pre_handshake_write_queue.write(buf, buf_size);
+ writer.send(APPLICATION_DATA, buf, buf_size);
}
void TLS_Channel::alert(Alert_Level alert_level, Alert_Type alert_code)
diff --git a/src/tls/tls_channel.h b/src/tls/tls_channel.h
index b102fc790..129182150 100644
--- a/src/tls/tls_channel.h
+++ b/src/tls/tls_channel.h
@@ -90,8 +90,6 @@ class BOTAN_DLL TLS_Channel
Record_Writer writer;
Record_Reader reader;
- SecureQueue pre_handshake_write_queue;
-
std::vector<X509_Certificate> peer_certs;
class Handshake_State* state;