durable_rules 0.34.29 → 0.34.31

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c0e3ec90bd71ff02ebea48656f5ae1922ed362b5
4
- data.tar.gz: e77d3c791fc6933e651debc67feb0ec26fcfd0c5
3
+ metadata.gz: 695edb93b0911210ca53350c02bc61c77bf9ccd2
4
+ data.tar.gz: 425666b29236c98d761f50e43a5494f2d6cce21c
5
5
  SHA512:
6
- metadata.gz: 495e2b5d98c05f03afd446da22d99024b41df7666f8a2e57942b2957f772fbaba4e22db559d9248adf7062ec09303a1b5d949853ad7936d7a004d705ed63b5de
7
- data.tar.gz: b30ef766211611b817b8479a244ccfc6b07f9da65c7f6f50d2176e8704c352bd214da3e3155fe994265cacce0ceee39e3cbc95b1946af131e4bd45e1a87f4387
6
+ metadata.gz: 2624ce379aa4e8986b1800c79b4381eb4d0c94dab5e9b070ca14fff4a5ea0bfac37e87c004729c9b27a683de200fd63e79a9c989c2b55c6a068887b9986dce9e
7
+ data.tar.gz: d296bc9d28874dc3519d5938d10003880338372d834c0215dcbd4342615547af96dbba834af84f2ba938f05a43078eed7e4eae1fb585bb91cef2391381b6eecb
data/src/rules/events.c CHANGED
@@ -9,7 +9,6 @@
9
9
 
10
10
  #include <time.h>
11
11
 
12
- #define MAX_EVENT_PROPERTIES 64
13
12
  #define MAX_RESULT_NODES 32
14
13
  #define MAX_NODE_RESULTS 16
15
14
  #define MAX_STACK_SIZE 64
@@ -467,7 +466,7 @@ static unsigned int valueToProperty(ruleset *tree,
467
466
  case JSON_STRING:
468
467
  *state = &tree->stringPool[sourceValue->value.stringOffset];
469
468
  (*targetProperty)->valueLength = strlen(*state);
470
- (*targetProperty)->valueOffset = 0;
469
+ (*targetProperty)->valueString = *state;
471
470
  break;
472
471
  case JSON_INT:
473
472
  (*targetProperty)->value.i = sourceValue->value.i;
@@ -507,13 +506,13 @@ static unsigned int reduceProperties(unsigned char operator,
507
506
  }
508
507
 
509
508
  if (leftProperty->type == JSON_STRING) {
510
- leftTemp = leftState[leftProperty->valueOffset + leftProperty->valueLength];
511
- leftState[leftProperty->valueOffset + leftProperty->valueLength] = '\0';
509
+ leftTemp = *(leftProperty->valueString + leftProperty->valueLength);
510
+ *(leftProperty->valueString + leftProperty->valueLength) = '\0';
512
511
  }
513
512
 
514
513
  if (rightProperty->type == JSON_STRING) {
515
- rightTemp = rightState[rightProperty->valueOffset + rightProperty->valueLength];
516
- rightState[rightProperty->valueOffset + rightProperty->valueLength] = '\0';
514
+ rightTemp = *(rightProperty->valueString + rightProperty->valueLength);
515
+ *(rightProperty->valueString + rightProperty->valueLength) = '\0';
517
516
  }
518
517
  }
519
518
 
@@ -534,7 +533,7 @@ static unsigned int reduceProperties(unsigned char operator,
534
533
  if (asprintf(state,
535
534
  "%s%s",
536
535
  leftProperty->value.b ? "true" : "false",
537
- rightState + rightProperty->valueOffset) == -1) {
536
+ rightProperty->valueString) == -1) {
538
537
  return ERR_OUT_OF_MEMORY;
539
538
  }
540
539
  break;
@@ -554,7 +553,7 @@ static unsigned int reduceProperties(unsigned char operator,
554
553
  if (asprintf(state,
555
554
  "%ld%s",
556
555
  leftProperty->value.i,
557
- rightState + rightProperty->valueOffset) == -1) {
556
+ rightProperty->valueString) == -1) {
558
557
  return ERR_OUT_OF_MEMORY;
559
558
  }
560
559
  break;
@@ -574,7 +573,7 @@ static unsigned int reduceProperties(unsigned char operator,
574
573
  if (asprintf(state,
575
574
  "%g%s",
576
575
  leftProperty->value.d,
577
- rightState + rightProperty->valueOffset) == -1) {
576
+ rightProperty->valueString) == -1) {
578
577
  return ERR_OUT_OF_MEMORY;
579
578
  }
580
579
 
@@ -582,7 +581,7 @@ static unsigned int reduceProperties(unsigned char operator,
582
581
  case OP_STRING_BOOL:
583
582
  if (asprintf(state,
584
583
  "%s%s",
585
- leftState + leftProperty->valueOffset,
584
+ leftProperty->valueString,
586
585
  rightProperty->value.b ? "true" : "false") == -1) {
587
586
  return ERR_OUT_OF_MEMORY;
588
587
  }
@@ -590,7 +589,7 @@ static unsigned int reduceProperties(unsigned char operator,
590
589
  case OP_STRING_INT:
591
590
  if (asprintf(state,
592
591
  "%s%ld",
593
- leftState + leftProperty->valueOffset,
592
+ leftProperty->valueString,
594
593
  rightProperty->value.i) == -1) {
595
594
  return ERR_OUT_OF_MEMORY;
596
595
  }
@@ -598,7 +597,7 @@ static unsigned int reduceProperties(unsigned char operator,
598
597
  case OP_STRING_DOUBLE:
599
598
  if (asprintf(state,
600
599
  "%s%ld",
601
- leftState + leftProperty->valueOffset,
600
+ leftProperty->valueString,
602
601
  rightProperty->value.i) == -1) {
603
602
  return ERR_OUT_OF_MEMORY;
604
603
  }
@@ -606,8 +605,8 @@ static unsigned int reduceProperties(unsigned char operator,
606
605
  case OP_STRING_STRING:
607
606
  if (asprintf(state,
608
607
  "%s%s",
609
- leftState + leftProperty->valueOffset,
610
- rightState + rightProperty->valueOffset) == -1) {
608
+ leftProperty->valueString,
609
+ rightProperty->valueString) == -1) {
611
610
  return ERR_OUT_OF_MEMORY;
612
611
  }
613
612
  break;
@@ -615,15 +614,15 @@ static unsigned int reduceProperties(unsigned char operator,
615
614
 
616
615
  if (leftProperty->type == JSON_STRING || rightProperty->type == JSON_STRING) {
617
616
  targetValue->type = JSON_STRING;
618
- targetValue->valueOffset = 0;
617
+ targetValue->valueString = *state;
619
618
  targetValue->valueLength = strlen(*state);
620
619
 
621
620
  if (leftTemp) {
622
- leftState[leftProperty->valueOffset + leftProperty->valueLength] = leftTemp;
621
+ *(leftProperty->valueString + leftProperty->valueLength) = leftTemp;
623
622
  }
624
623
 
625
624
  if (rightTemp) {
626
- rightState[rightProperty->valueOffset + rightProperty->valueLength] = rightTemp;
625
+ *(rightProperty->valueString + rightProperty->valueLength) = rightTemp;
627
626
  }
628
627
  }
629
628
 
@@ -751,13 +750,13 @@ static unsigned int isMatch(ruleset *tree,
751
750
  case OP_BOOL_STRING:
752
751
  if (currentProperty->value.b) {
753
752
  *propertyMatch = compareStringProperty("true",
754
- rightState + rightProperty->valueOffset,
753
+ rightProperty->valueString,
755
754
  rightProperty->valueLength,
756
755
  alphaOp);
757
756
  }
758
757
  else {
759
758
  *propertyMatch = compareStringProperty("false",
760
- rightState + rightProperty->valueOffset,
759
+ rightProperty->valueString,
761
760
  rightProperty->valueLength,
762
761
  alphaOp);
763
762
  }
@@ -783,7 +782,7 @@ static unsigned int isMatch(ruleset *tree,
783
782
  snprintf(leftStringInt, sizeof(char)*(rightLength), "%ld", currentProperty->value.i);
784
783
  #endif
785
784
  *propertyMatch = compareStringProperty(leftStringInt,
786
- rightState + rightProperty->valueOffset,
785
+ rightProperty->valueString,
787
786
  rightProperty->valueLength,
788
787
  alphaOp);
789
788
  }
@@ -808,20 +807,20 @@ static unsigned int isMatch(ruleset *tree,
808
807
  snprintf(leftStringDouble, sizeof(char)*(rightLength), "%f", currentProperty->value.d);
809
808
  #endif
810
809
  *propertyMatch = compareStringProperty(leftStringDouble,
811
- rightState + rightProperty->valueOffset,
810
+ rightProperty->valueString,
812
811
  rightProperty->valueLength,
813
812
  alphaOp);
814
813
  }
815
814
  break;
816
815
  case OP_STRING_BOOL:
817
816
  if (rightProperty->value.b) {
818
- *propertyMatch = compareString(message + currentProperty->valueOffset,
817
+ *propertyMatch = compareString(currentProperty->valueString,
819
818
  currentProperty->valueLength,
820
819
  "true",
821
820
  alphaOp);
822
821
  }
823
822
  else {
824
- *propertyMatch = compareString(message + currentProperty->valueOffset,
823
+ *propertyMatch = compareString(currentProperty->valueString,
825
824
  currentProperty->valueLength,
826
825
  "false",
827
826
  alphaOp);
@@ -837,7 +836,7 @@ static unsigned int isMatch(ruleset *tree,
837
836
  char rightStringInt[leftLength];
838
837
  snprintf(rightStringInt, sizeof(char)*(leftLength), "%ld", rightProperty->value.i);
839
838
  #endif
840
- *propertyMatch = compareString(message + currentProperty->valueOffset,
839
+ *propertyMatch = compareString(currentProperty->valueString,
841
840
  currentProperty->valueLength,
842
841
  rightStringInt,
843
842
  alphaOp);
@@ -853,16 +852,16 @@ static unsigned int isMatch(ruleset *tree,
853
852
  char rightStringDouble[leftLength];
854
853
  snprintf(rightStringDouble, sizeof(char)*(leftLength), "%f", rightProperty->value.d);
855
854
  #endif
856
- *propertyMatch = compareString(message + currentProperty->valueOffset,
855
+ *propertyMatch = compareString(currentProperty->valueString,
857
856
  currentProperty->valueLength,
858
857
  rightStringDouble,
859
858
  alphaOp);
860
859
  }
861
860
  break;
862
861
  case OP_STRING_STRING:
863
- *propertyMatch = compareStringAndStringProperty(message + currentProperty->valueOffset,
862
+ *propertyMatch = compareStringAndStringProperty(currentProperty->valueString,
864
863
  currentProperty->valueLength,
865
- rightState + rightProperty->valueOffset,
864
+ rightProperty->valueString,
866
865
  rightProperty->valueLength,
867
866
  alphaOp);
868
867
  break;
@@ -888,7 +887,7 @@ static unsigned int isMatch(ruleset *tree,
888
887
  case OP_STRING_REGEX:
889
888
  case OP_STRING_IREGEX:
890
889
  *propertyMatch = evaluateRegex(tree,
891
- message + currentProperty->valueOffset,
890
+ currentProperty->valueString,
892
891
  currentProperty->valueLength,
893
892
  (type == OP_STRING_REGEX) ? 0 : 1,
894
893
  currentAlpha->right.value.regex.vocabularyLength,
@@ -908,8 +907,7 @@ static unsigned int handleAlpha(ruleset *tree,
908
907
  char *sid,
909
908
  char *mid,
910
909
  char *message,
911
- jsonProperty *allProperties,
912
- unsigned int propertiesLength,
910
+ jsonObject *jo,
913
911
  alpha *alphaNode,
914
912
  unsigned char actionType,
915
913
  char **evalKeys,
@@ -932,8 +930,8 @@ static unsigned int handleAlpha(ruleset *tree,
932
930
  for (entry = 0; nextList[entry] != 0; ++entry) {
933
931
  node *listNode = &tree->nodePool[nextList[entry]];
934
932
  char exists = 0;
935
- for(unsigned int propertyIndex = 0; propertyIndex < propertiesLength; ++propertyIndex) {
936
- if (listNode->value.a.hash == allProperties[propertyIndex].hash) {
933
+ for(unsigned int propertyIndex = 0; propertyIndex < jo->propertiesLength; ++propertyIndex) {
934
+ if (listNode->value.a.hash == jo->properties[propertyIndex].hash) {
937
935
  exists = 1;
938
936
  break;
939
937
  }
@@ -952,8 +950,8 @@ static unsigned int handleAlpha(ruleset *tree,
952
950
 
953
951
  if (currentAlpha->nextOffset) {
954
952
  unsigned int *nextHashset = &tree->nextPool[currentAlpha->nextOffset];
955
- for(unsigned int propertyIndex = 0; propertyIndex < propertiesLength; ++propertyIndex) {
956
- jsonProperty *currentProperty = &allProperties[propertyIndex];
953
+ for(unsigned int propertyIndex = 0; propertyIndex < jo->propertiesLength; ++propertyIndex) {
954
+ jsonProperty *currentProperty = &jo->properties[propertyIndex];
957
955
  for (entry = currentProperty->hash & HASH_MASK; nextHashset[entry] != 0; entry = (entry + 1) % NEXT_BUCKET_LENGTH) {
958
956
  node *hashNode = &tree->nodePool[nextHashset[entry]];
959
957
  if (currentProperty->hash == hashNode->value.a.hash) {
@@ -1018,82 +1016,35 @@ static unsigned int handleAlpha(ruleset *tree,
1018
1016
  return result;
1019
1017
  }
1020
1018
 
1021
- static unsigned int getId(jsonProperty *allProperties,
1022
- unsigned int idIndex,
1023
- jsonProperty **idProperty,
1024
- int *idLength) {
1025
- jsonProperty *currentProperty;
1026
- if (idIndex == UNDEFINED_INDEX) {
1027
- return ERR_NO_ID_DEFINED;
1028
- }
1029
-
1030
- currentProperty = &allProperties[idIndex];
1031
- *idLength = currentProperty->valueLength;
1032
- switch(currentProperty->type) {
1033
- case JSON_INT:
1034
- case JSON_DOUBLE:
1035
- *idLength = *idLength + 1;
1036
- case JSON_STRING:
1037
- break;
1038
- case JSON_NIL:
1039
- return ERR_NO_ID_DEFINED;
1040
- default:
1041
- return ERR_INVALID_ID;
1042
- }
1043
-
1044
- *idProperty = currentProperty;
1045
- return RULES_OK;
1046
- }
1047
-
1048
1019
  static unsigned int handleMessageCore(ruleset *tree,
1049
1020
  char *state,
1050
1021
  char *message,
1051
- jsonProperty *properties,
1052
- unsigned int propertiesLength,
1053
- unsigned int midIndex,
1054
- unsigned int sidIndex,
1022
+ jsonObject *jo,
1055
1023
  unsigned char actionType,
1056
1024
  char **commands,
1057
1025
  unsigned int *commandCount,
1058
1026
  void **rulesBinding) {
1059
- jsonProperty *midProperty = NULL;
1060
- int midLength;
1061
- jsonProperty *sidProperty = NULL;
1062
- int sidLength;
1027
+ unsigned int result;
1063
1028
  char *storeCommand;
1064
- int result = getId(properties, sidIndex, &sidProperty, &sidLength);
1065
- if (result == ERR_NO_ID_DEFINED) {
1066
- sidLength = 1;
1067
- } else if (result != RULES_OK) {
1068
- return result;
1069
- }
1029
+ jsonProperty *sidProperty = &jo->properties[jo->sidIndex];
1030
+ jsonProperty *midProperty = &jo->properties[jo->idIndex];
1031
+
1070
1032
  #ifdef _WIN32
1071
- char *sid = (char *)_alloca(sizeof(char)*(sidLength + 1));
1033
+ char *sid = (char *)_alloca(sizeof(char)*(sidProperty->valueLength + 1));
1072
1034
  #else
1073
- char sid[sidLength + 1];
1035
+ char sid[sidProperty->valueLength + 1];
1074
1036
  #endif
1075
- if (result == ERR_NO_ID_DEFINED) {
1076
- *sid = '0';
1077
- } else {
1078
- strncpy(sid, message + sidProperty->valueOffset, sidLength);
1079
- }
1080
- sid[sidLength] = '\0';
1037
+ strncpy(sid, sidProperty->valueString, sidProperty->valueLength);
1038
+ sid[sidProperty->valueLength] = '\0';
1081
1039
 
1082
- result = getId(properties, midIndex, &midProperty, &midLength);
1083
- if (result == ERR_NO_ID_DEFINED) {
1084
- midLength = 0;
1085
- } else if (result != RULES_OK) {
1086
- return result;
1087
- }
1088
1040
  #ifdef _WIN32
1089
- char *mid = (char *)_alloca(sizeof(char)*(midLength + 1));
1041
+ char *mid = (char *)_alloca(sizeof(char)*(midProperty->valueLength + 1));
1090
1042
  #else
1091
- char mid[midLength + 1];
1043
+ char mid[midProperty->valueLength + 1];
1092
1044
  #endif
1093
- if (midLength) {
1094
- strncpy(mid, message + midProperty->valueOffset, midLength);
1095
- }
1096
- mid[midLength] = '\0';
1045
+ strncpy(mid, midProperty->valueString, midProperty->valueLength);
1046
+ mid[midProperty->valueLength] = '\0';
1047
+
1097
1048
  if (*commandCount == MAX_COMMAND_COUNT) {
1098
1049
  return ERR_MAX_COMMAND_COUNT;
1099
1050
  }
@@ -1123,8 +1074,7 @@ static unsigned int handleMessageCore(ruleset *tree,
1123
1074
  sid,
1124
1075
  mid,
1125
1076
  message,
1126
- properties,
1127
- propertiesLength,
1077
+ jo,
1128
1078
  &tree->nodePool[NODE_M_OFFSET].value.a,
1129
1079
  actionType,
1130
1080
  evalKeys,
@@ -1156,9 +1106,9 @@ static unsigned int handleMessageCore(ruleset *tree,
1156
1106
  result = formatStoreMessage(*rulesBinding,
1157
1107
  sid,
1158
1108
  message,
1159
- properties,
1160
- propertiesLength,
1109
+ jo,
1161
1110
  actionType == ACTION_ASSERT_FACT ? 1 : 0,
1111
+ evalCount == 0 ? 1 : 0,
1162
1112
  addKeys,
1163
1113
  addCount,
1164
1114
  &addCommand);
@@ -1184,8 +1134,7 @@ static unsigned int handleMessageCore(ruleset *tree,
1184
1134
  sid,
1185
1135
  mid,
1186
1136
  message,
1187
- properties,
1188
- propertiesLength,
1137
+ jo,
1189
1138
  actionType,
1190
1139
  evalKeys,
1191
1140
  evalCount,
@@ -1223,30 +1172,20 @@ static unsigned int handleMessageCore(ruleset *tree,
1223
1172
  return RULES_OK;
1224
1173
  }
1225
1174
 
1226
- result = refreshState(tree,sid);
1175
+ result = refreshState(tree, sid);
1227
1176
  if (result != ERR_NEW_SESSION) {
1228
1177
  return result;
1229
1178
  }
1230
1179
  #ifdef _WIN32
1231
- char *stateMessage = (char *)_alloca(sizeof(char)*(36 + sidLength));
1232
- char *newState = (char *)_alloca(sizeof(char)*(12 + sidLength));
1233
- if (sidProperty && sidProperty->type == JSON_STRING) {
1234
- sprintf_s(stateMessage, sizeof(char)*(26 + sidLength), "{\"sid\":\"%s\", \"$s\":1}", sid);
1235
- sprintf_s(newState, sizeof(char)*(12 + sidLength), "{\"sid\":\"%s\"}", sid);
1236
- } else {
1237
- sprintf_s(stateMessage, sizeof(char)*(26 + sidLength), "{\"sid\":%s, \"$s\":1}", sid);
1238
- sprintf_s(newState, sizeof(char)*(12 + sidLength), "{\"sid\":%s}", sid);
1239
- }
1180
+ char *stateMessage = (char *)_alloca(sizeof(char)*(36 + sidProperty->valueLength));
1181
+ char *newState = (char *)_alloca(sizeof(char)*(12 + sidProperty->valueLength));
1182
+ sprintf_s(stateMessage, sizeof(char)*(26 + sidProperty->valueLength), "{\"sid\":\"%s\", \"$s\":1}", sid);
1183
+ sprintf_s(newState, sizeof(char)*(12 + sidProperty->valueLength), "{\"sid\":\"%s\"}", sid);
1240
1184
  #else
1241
- char stateMessage[36 + sidLength];
1242
- char newState[12 + sidLength];
1243
- if (sidProperty && sidProperty->type == JSON_STRING) {
1244
- snprintf(stateMessage, sizeof(char)*(26 + sidLength), "{\"sid\":\"%s\", \"$s\":1}", sid);
1245
- snprintf(newState, sizeof(char)*(12 + sidLength), "{\"sid\":\"%s\"}", sid);
1246
- } else {
1247
- snprintf(stateMessage, sizeof(char)*(26 + sidLength), "{\"sid\":%s, \"$s\":1}", sid);
1248
- snprintf(newState, sizeof(char)*(12 + sidLength), "{\"sid\":%s}", sid);
1249
- }
1185
+ char stateMessage[36 + sidProperty->valueLength];
1186
+ char newState[12 + sidProperty->valueLength];
1187
+ snprintf(stateMessage, sizeof(char)*(26 + sidProperty->valueLength), "{\"sid\":\"%s\", \"$s\":1}", sid);
1188
+ snprintf(newState, sizeof(char)*(12 + sidProperty->valueLength), "{\"sid\":\"%s\"}", sid);
1250
1189
  #endif
1251
1190
 
1252
1191
  if (*commandCount == MAX_COMMAND_COUNT) {
@@ -1290,19 +1229,12 @@ static unsigned int handleMessage(ruleset *tree,
1290
1229
  unsigned int *commandCount,
1291
1230
  void **rulesBinding) {
1292
1231
  char *next;
1293
- unsigned int propertiesLength = 0;
1294
- unsigned int midIndex = UNDEFINED_INDEX;
1295
- unsigned int sidIndex = UNDEFINED_INDEX;
1296
- jsonProperty properties[MAX_EVENT_PROPERTIES];
1232
+ jsonObject jo;
1297
1233
  int result = constructObject(message,
1298
1234
  NULL,
1299
1235
  NULL,
1300
- 0,
1301
- MAX_EVENT_PROPERTIES,
1302
- properties,
1303
- &propertiesLength,
1304
- &midIndex,
1305
- &sidIndex,
1236
+ JSON_OBJECT_SEQUENCED,
1237
+ &jo,
1306
1238
  &next);
1307
1239
  if (result != RULES_OK) {
1308
1240
  return result;
@@ -1311,10 +1243,7 @@ static unsigned int handleMessage(ruleset *tree,
1311
1243
  return handleMessageCore(tree,
1312
1244
  state,
1313
1245
  message,
1314
- properties,
1315
- propertiesLength,
1316
- midIndex,
1317
- sidIndex,
1246
+ &jo,
1318
1247
  actionType,
1319
1248
  commands,
1320
1249
  commandCount,
@@ -1329,11 +1258,8 @@ static unsigned int handleMessages(void *handle,
1329
1258
  void **rulesBinding) {
1330
1259
  unsigned int result;
1331
1260
  unsigned int returnResult = RULES_OK;
1332
- jsonProperty properties[MAX_EVENT_PROPERTIES];
1333
- unsigned int propertiesLength = 0;
1334
- unsigned int propertiesMidIndex = UNDEFINED_INDEX;
1335
- unsigned int propertiesSidIndex = UNDEFINED_INDEX;
1336
-
1261
+ jsonObject jo;
1262
+
1337
1263
  char *first = messages;
1338
1264
  char *last = NULL;
1339
1265
  char lastTemp;
@@ -1345,12 +1271,8 @@ static unsigned int handleMessages(void *handle,
1345
1271
  while (constructObject(first,
1346
1272
  NULL,
1347
1273
  NULL,
1348
- 0,
1349
- MAX_EVENT_PROPERTIES,
1350
- properties,
1351
- &propertiesLength,
1352
- &propertiesMidIndex,
1353
- &propertiesSidIndex,
1274
+ JSON_OBJECT_SEQUENCED,
1275
+ &jo,
1354
1276
  &last) == RULES_OK) {
1355
1277
 
1356
1278
  while (*last != ',' && *last != ']' ) {
@@ -1362,10 +1284,7 @@ static unsigned int handleMessages(void *handle,
1362
1284
  result = handleMessageCore(handle,
1363
1285
  NULL,
1364
1286
  first,
1365
- properties,
1366
- propertiesLength,
1367
- propertiesMidIndex,
1368
- propertiesSidIndex,
1287
+ &jo,
1369
1288
  actionType,
1370
1289
  commands,
1371
1290
  commandCount,
@@ -1379,11 +1298,7 @@ static unsigned int handleMessages(void *handle,
1379
1298
  if (result == ERR_EVENT_NOT_HANDLED) {
1380
1299
  returnResult = ERR_EVENT_NOT_HANDLED;
1381
1300
  }
1382
-
1383
- propertiesLength = 0;
1384
- propertiesMidIndex = UNDEFINED_INDEX;
1385
- propertiesSidIndex = UNDEFINED_INDEX;
1386
-
1301
+
1387
1302
  first = last;
1388
1303
  while (*first != '{' && *first != '\0' ) {
1389
1304
  ++first;