summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2008-09-26 07:30:12 +0200
committerDavid Sommerseth <dazo@users.sourceforge.net>2008-09-26 07:30:12 +0200
commit4d75e5c5f8c00a11acf757c1783b3da7d583ae05 (patch)
tree9fb3cc55b053ef51df976447afbd8115e7a2b183
parent372ef358481bab5dcb3d4b34fab07409b935d485 (diff)
downloadeurephia-4d75e5c5f8c00a11acf757c1783b3da7d583ae05.tar.gz
eurephia-4d75e5c5f8c00a11acf757c1783b3da7d583ae05.tar.xz
eurephia-4d75e5c5f8c00a11acf757c1783b3da7d583ae05.zip
BUGFIX: Follow up on the commit fc8a177bc86fc7e68b15045ba7a791e2504f4b5c
Make sure that eDBget_sessionkey_macaddr(...) only returns sessionkeys for sessions ready to be destroyed, ie. sessionstatus must be 3.
-rw-r--r--database/eurephiadb-driver_template.c5
-rw-r--r--database/sqlite/eurephiadb-sqlite.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/database/eurephiadb-driver_template.c b/database/eurephiadb-driver_template.c
index a840b25..b608481 100644
--- a/database/eurephiadb-driver_template.c
+++ b/database/eurephiadb-driver_template.c
@@ -669,7 +669,10 @@ char *eDBget_sessionkey_macaddr(eurephiaCTX *ctx, const char *macaddr) {
/* WORK TO DO -- DO SQL:
"SELECT sessionkey "
" FROM openvpn_sessions "
- " WHERE datakey = 'macaddr' AND dataval = '%q'",
+ " JOIN openvpn_lastlog USING (sessionkey)"
+ " WHERE sessionstatus = 3 "
+ " AND datakey = 'macaddr' "
+ " AND dataval = '%q'",
macaddr
*/
if( /* IF SQL QUERY FAILED */ ) {
diff --git a/database/sqlite/eurephiadb-sqlite.c b/database/sqlite/eurephiadb-sqlite.c
index 9c24c07..4fc7c5d 100644
--- a/database/sqlite/eurephiadb-sqlite.c
+++ b/database/sqlite/eurephiadb-sqlite.c
@@ -644,7 +644,10 @@ char *eDBget_sessionkey_macaddr(eurephiaCTX *ctx, const char *macaddr) {
res = sqlite_query(ctx,
"SELECT sessionkey "
" FROM openvpn_sessions "
- " WHERE datakey = 'macaddr' AND dataval = '%q'", macaddr);
+ " JOIN openvpn_lastlog USING (sessionkey)"
+ " WHERE sessionstatus = 3 "
+ " AND datakey = 'macaddr' "
+ " AND dataval = '%q'", macaddr);
if( res == NULL ) {
eurephia_log(ctx, LOG_CRITICAL, 0,
"Could not remove session from database (MAC addr: %s)", macaddr);