Enforce invitation admission in active video stream membership
This commit is contained in:
1 parent
63775a9045
commit
3a54bdd3a2
2 files changed
+6
-4
No files matched your search
@@ -164,7 +164,7 @@ int stream_member_load(struct UTUN_INSTANCE *inst, uint64_t group_id, uint64_t m
|
||||
}
|
||||
char query[256];
|
||||
snprintf(query, sizeof(query), "SELECT source,x25519_pubkey,ed25519_pubkey,join_sig,join_ts,update_sig,update_ts,"
|
||||
"userinfo,signed_by,signature,deleted FROM \"peers_%s\" WHERE node_id=?", group->channel_id);
|
||||
"userinfo,signed_by,signature,deleted,admitted FROM \"peers_%s\" WHERE node_id=?", group->channel_id);
|
||||
sqlite3_stmt *statement = NULL;
|
||||
sqlite3 *db = inst->topo_sqlite_db;
|
||||
if (sqlite3_prepare_v2(db, query, -1, &statement, NULL) != SQLITE_OK) {
|
||||
@@ -173,9 +173,10 @@ int stream_member_load(struct UTUN_INSTANCE *inst, uint64_t group_id, uint64_t m
|
||||
}
|
||||
sqlite3_bind_int64(statement, 1, (sqlite3_int64)member_id);
|
||||
int result = STREAM_WAIT, step = sqlite3_step(statement);
|
||||
if (step == SQLITE_ROW && sqlite3_column_int(statement, 10) != 0) {
|
||||
if (step == SQLITE_ROW && (sqlite3_column_int(statement, 10) != 0 ||
|
||||
(sqlite3_column_int(statement, 0) == 0 && !sqlite3_column_int(statement, 11)))) {
|
||||
result = STREAM_ERR_NOT_MEMBER;
|
||||
DEBUG_WARN(DEBUG_CATEGORY_STREAM, "member excluded by channel owner group=%llx member=%llx",
|
||||
DEBUG_WARN(DEBUG_CATEGORY_STREAM, "member excluded by group admission group=%llx member=%llx",
|
||||
(unsigned long long)group_id, (unsigned long long)member_id);
|
||||
} else if (step == SQLITE_ROW && sqlite3_column_int(statement, 0) == 0
|
||||
&& sqlite3_column_bytes(statement, 1) == 32 && sqlite3_column_bytes(statement, 2) == 32
|
||||
@@ -239,7 +240,7 @@ int stream_member_supernode(struct UTUN_INSTANCE *inst, uint64_t group_id, uint6
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_STREAM, "member role invalid channel namespace group=%llx", (unsigned long long)group_id); return -1;
|
||||
}
|
||||
char query[192];
|
||||
snprintf(query, sizeof(query), "SELECT adm_tags FROM \"peers_%s\" WHERE node_id=? AND deleted=0", group->channel_id);
|
||||
snprintf(query, sizeof(query), "SELECT adm_tags FROM \"peers_%s\" WHERE node_id=? AND deleted=0 AND admitted=1", group->channel_id);
|
||||
sqlite3 *db = inst->topo_sqlite_db; sqlite3_stmt *statement = NULL;
|
||||
int result = -1, rc = sqlite3_prepare_v2(db, query, -1, &statement, NULL);
|
||||
if (rc == SQLITE_OK) rc = sqlite3_bind_int64(statement, 1, (sqlite3_int64)member_id);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/* Проверяемый участник сетевого теста: JOIN эпохи 1, профиль версии 1 и корневая подпись группы. */
|
||||
#ifndef TEST_MEMBERSHIP_H
|
||||
#define TEST_MEMBERSHIP_H
|
||||
#include <openssl/sha.h>
|
||||
#include "chat/member_sync.h"
|
||||
#include "utun_instance.h"
|
||||
#include "routing_layer/topo_node_sqlite.h"
|
||||
|
||||
Reference in new issue
Block a user