ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.y
(Generate patch)

Comparing ircd-hybrid/trunk/src/conf_parser.y (file contents):
Revision 1784 by michael, Thu Jan 24 19:26:51 2013 UTC vs.
Revision 1785 by michael, Sat Jan 26 22:40:55 2013 UTC

# Line 1293 | Line 1293 | class_entry: CLASS
1293    class->active = 1;
1294    MyFree(class->name);
1295    class->name = xstrdup(block_state.class.buf);
1296 –  class->flags = block_state.flags.value;
1296    class->ping_freq = block_state.ping_freq.value;
1297    class->max_perip = block_state.max_perip.value;
1298    class->con_freq = block_state.con_freq.value;
1300 –  class->min_idle = block_state.min_idle.value;
1301 –  class->max_idle = block_state.max_idle.value;
1299    class->max_total = block_state.max_total.value;
1300    class->max_global = block_state.max_global.value;
1301    class->max_local = block_state.max_local.value;
# Line 1306 | Line 1303 | class_entry: CLASS
1303    class->max_sendq = block_state.max_sendq.value;
1304    class->max_recvq = block_state.max_recvq.value;
1305  
1306 +  if (block_state.min_idle.value > block_state.max_idle.value)
1307 +  {
1308 +    block_state.min_idle.value = 0;
1309 +    block_state.max_idle.value = 0;
1310 +    block_state.flags.value &= ~CLASS_FLAGS_FAKE_IDLE;
1311 +  }
1312 +
1313 +  class->flags = block_state.flags.value;
1314 +  class->min_idle = block_state.min_idle.value;
1315 +  class->max_idle = block_state.max_idle.value;
1316 +
1317    if (class->number_per_cidr && block_state.number_per_cidr.value)
1318      if ((class->cidr_bitlen_ipv4 && block_state.cidr_bitlen_ipv4.value) ||
1319          (class->cidr_bitlen_ipv6 && block_state.cidr_bitlen_ipv6.value))
# Line 1416 | Line 1424 | class_number_per_cidr: NUMBER_PER_CIDR '
1424  
1425   class_min_idle: MIN_IDLE '=' timespec ';'
1426   {
1427 <  if (conf_parser_ctx.pass == 1)
1428 <    block_state.min_idle.value = $3;
1427 >  if (conf_parser_ctx.pass != 1)
1428 >    break;
1429 >
1430 >  block_state.min_idle.value = $3;
1431 >  block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
1432   };
1433  
1434   class_max_idle: MAX_IDLE '=' timespec ';'
1435   {
1436 <  if (conf_parser_ctx.pass == 1)
1437 <    block_state.max_idle.value = $3;
1436 >  if (conf_parser_ctx.pass != 1)
1437 >    break;
1438 >
1439 >  block_state.max_idle.value = $3;
1440 >  block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
1441   };
1442  
1443   class_flags: IRCD_FLAGS
1444   {
1445    if (conf_parser_ctx.pass == 1)
1446 <    block_state.flags.value = 0;
1446 >    block_state.flags.value &= CLASS_FLAGS_FAKE_IDLE;
1447   } '='  class_flags_items ';';
1448  
1449   class_flags_items: class_flags_items ',' class_flags_item | class_flags_item;

Diff Legend

– Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)