durable_rules 0.34.48 → 0.34.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/src/rules/state.c +58 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 22182a3f342a7baddc4202f0a48cd221657b54db
|
4
|
+
data.tar.gz: 154047fd34c12c8c2203273d984d0f746a0d546e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 642cf6196149419c42a710d2509a366d2843dac644e2ca55b3590a2335dce2557ece809b9015c77372e420a40eeb1e0deaec0c5f0d60ff9710653116d66eb0bd
|
7
|
+
data.tar.gz: 6fdc663a2161aff98a5e7d432cde22b1128e1c1f075dde20107bf487698a74b219fee761f739ec20596602442b34ce967686e6da63efe4ec5af3dc237eee1b25
|
data/src/rules/state.c
CHANGED
@@ -56,6 +56,57 @@ static unsigned int evictEntry(ruleset *tree) {
|
|
56
56
|
return result;
|
57
57
|
}
|
58
58
|
|
59
|
+
static void deleteEntry(ruleset *tree, char *sid, unsigned int sidHash) {
|
60
|
+
unsigned int bucket = sidHash % tree->stateBucketsLength;
|
61
|
+
unsigned int offset = tree->stateBuckets[bucket];
|
62
|
+
unsigned int lastOffset = UNDEFINED_HASH_OFFSET;
|
63
|
+
unsigned char found = 0;
|
64
|
+
while (!found && offset != UNDEFINED_HASH_OFFSET) {
|
65
|
+
stateEntry *current = &tree->state[offset];
|
66
|
+
if (current->sidHash == sidHash) {
|
67
|
+
if (!strcmp(current->sid, sid)) {
|
68
|
+
if (lastOffset == UNDEFINED_HASH_OFFSET) {
|
69
|
+
tree->stateBuckets[bucket] = current->nextHashOffset;
|
70
|
+
} else {
|
71
|
+
tree->state[lastOffset].nextHashOffset = current->nextHashOffset;
|
72
|
+
}
|
73
|
+
|
74
|
+
if (current->state) {
|
75
|
+
free(current->state);
|
76
|
+
current->state = NULL;
|
77
|
+
}
|
78
|
+
|
79
|
+
free(current->sid);
|
80
|
+
current->sid = NULL;
|
81
|
+
current->sidHash = 0;
|
82
|
+
current->bindingIndex = 0;
|
83
|
+
current->lastRefresh = 0;
|
84
|
+
current->jo.propertiesLength = 0;
|
85
|
+
found = 1;
|
86
|
+
|
87
|
+
|
88
|
+
// remove entry from lru double linked list
|
89
|
+
if (current->prevLruOffset != UNDEFINED_HASH_OFFSET) {
|
90
|
+
tree->state[current->prevLruOffset].nextLruOffset = current->nextLruOffset;
|
91
|
+
if (tree->mruStateOffset == offset) {
|
92
|
+
tree->mruStateOffset = current->prevLruOffset;
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
if (current->nextLruOffset != UNDEFINED_HASH_OFFSET) {
|
97
|
+
tree->state[current->nextLruOffset].prevLruOffset = current->prevLruOffset;
|
98
|
+
if (tree->lruStateOffset == offset) {
|
99
|
+
tree->lruStateOffset = current->nextLruOffset;
|
100
|
+
}
|
101
|
+
}
|
102
|
+
}
|
103
|
+
}
|
104
|
+
|
105
|
+
lastOffset = offset;
|
106
|
+
offset = current->nextHashOffset;
|
107
|
+
}
|
108
|
+
}
|
109
|
+
|
59
110
|
static unsigned int addEntry(ruleset *tree, char *sid, unsigned int sidHash) {
|
60
111
|
unsigned newOffset;
|
61
112
|
if (tree->stateLength == tree->maxStateLength) {
|
@@ -628,5 +679,11 @@ unsigned int deleteState(unsigned int handle, char *sid) {
|
|
628
679
|
}
|
629
680
|
|
630
681
|
unsigned int sidHash = fnv1Hash32(sid, strlen(sid));
|
631
|
-
|
682
|
+
result = deleteSession(tree, rulesBinding, sid, sidHash);
|
683
|
+
if (result != RULES_OK) {
|
684
|
+
return result;
|
685
|
+
}
|
686
|
+
|
687
|
+
deleteEntry(tree, sid, sidHash);
|
688
|
+
return RULES_OK;
|
632
689
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: durable_rules
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.34.
|
4
|
+
version: 0.34.49
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jesus Ruiz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-03-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|