aboutsummaryrefslogtreecommitdiffstats
path: root/src/tls/sessions_sqlite
diff options
context:
space:
mode:
authorlloyd <[email protected]>2012-10-13 19:26:38 +0000
committerlloyd <[email protected]>2012-10-13 19:26:38 +0000
commit5a6afba7f8d403cd29efe3302012ecf1b5f6ce5a (patch)
tree3f0835a6828e3b85674394e16e422ce1afe3a310 /src/tls/sessions_sqlite
parent8232b76a8d332fab5a1023b37e8d0a18cc1e0985 (diff)
Add TLS::Server_Information to encapsulate the hostname/port pair.
Add a service identifier as well, to help out clients which may want to negotiate multiple protocols over a single port and need to keep the sessions disambiguated. Not sure if that is useful, but it might be.
Diffstat (limited to 'src/tls/sessions_sqlite')
-rw-r--r--src/tls/sessions_sqlite/tls_session_manager_sqlite.cpp18
-rw-r--r--src/tls/sessions_sqlite/tls_session_manager_sqlite.h6
2 files changed, 10 insertions, 14 deletions
diff --git a/src/tls/sessions_sqlite/tls_session_manager_sqlite.cpp b/src/tls/sessions_sqlite/tls_session_manager_sqlite.cpp
index d10366c60..87556ff75 100644
--- a/src/tls/sessions_sqlite/tls_session_manager_sqlite.cpp
+++ b/src/tls/sessions_sqlite/tls_session_manager_sqlite.cpp
@@ -142,16 +142,15 @@ bool Session_Manager_SQLite::load_from_session_id(const std::vector<byte>& sessi
return false;
}
-bool Session_Manager_SQLite::load_from_host_info(const std::string& hostname,
- u16bit port,
- Session& session)
+bool Session_Manager_SQLite::load_from_server_info(const Server_Information& server,
+ Session& session)
{
sqlite3_statement stmt(m_db, "select session from tls_sessions"
" where hostname = ?1 and hostport = ?2"
" order by session_start desc");
- stmt.bind(1, hostname);
- stmt.bind(2, port);
+ stmt.bind(1, server.hostname());
+ stmt.bind(2, server.port());
while(stmt.step())
{
@@ -167,9 +166,6 @@ bool Session_Manager_SQLite::load_from_host_info(const std::string& hostname,
}
}
- if(port != 0)
- return load_from_host_info(hostname, 0, session);
-
return false;
}
@@ -182,15 +178,15 @@ void Session_Manager_SQLite::remove_entry(const std::vector<byte>& session_id)
stmt.spin();
}
-void Session_Manager_SQLite::save(const Session& session, u16bit port)
+void Session_Manager_SQLite::save(const Session& session)
{
sqlite3_statement stmt(m_db, "insert or replace into tls_sessions"
" values(?1, ?2, ?3, ?4, ?5)");
stmt.bind(1, hex_encode(session.session_id()));
stmt.bind(2, session.start_time());
- stmt.bind(3, session.sni_hostname());
- stmt.bind(4, port);
+ stmt.bind(3, session.server_info().hostname());
+ stmt.bind(4, session.server_info().port());
stmt.bind(5, session.encrypt(m_session_key, m_rng));
stmt.spin();
diff --git a/src/tls/sessions_sqlite/tls_session_manager_sqlite.h b/src/tls/sessions_sqlite/tls_session_manager_sqlite.h
index db74f54b7..7892ccd6a 100644
--- a/src/tls/sessions_sqlite/tls_session_manager_sqlite.h
+++ b/src/tls/sessions_sqlite/tls_session_manager_sqlite.h
@@ -50,12 +50,12 @@ class BOTAN_DLL Session_Manager_SQLite : public Session_Manager
bool load_from_session_id(const std::vector<byte>& session_id,
Session& session) override;
- bool load_from_host_info(const std::string& hostname, u16bit port,
- Session& session) override;
+ bool load_from_server_info(const Server_Information& info,
+ Session& session) override;
void remove_entry(const std::vector<byte>& session_id) override;
- void save(const Session& session_data, u16bit port) override;
+ void save(const Session& session_data) override;
std::chrono::seconds session_lifetime() const override
{ return m_session_lifetime; }