@@ -425,25 +425,24 @@ const HTTPSRules = {
425425 var dbFile = FileUtils . getFile ( "ProfD" ,
426426 [ "extensions" , "https-everywhere@eff.org" , "defaults" , "rulesets.sqlite" ] ) ;
427427 var rulesetDBConn = Services . storage . openDatabase ( dbFile ) ;
428- this . queryForTarget = rulesetDBConn . createStatement (
429- "select id, contents from targets, rulesets " +
430- "where targets.ruleset_id = rulesets.id and host = :target;" ) ;
428+ this . queryForRuleset = rulesetDBConn . createStatement (
429+ "select contents from rulesets where id = :id" ) ;
431430
432431 // Preload the list of which targets are available in the DB.
433432 // This is a little slow (287 ms on a Core2 Duo @ 2.2GHz with SSD),
434433 // but is faster than loading all of the rulesets. If this becomes a
435434 // bottleneck, change it to load in a background webworker, or load
436435 // a smaller bloom filter instead.
437- this . targetsAvailable = new Set ( ) ; // Firefox-specific
438- var targetsQuery = rulesetDBConn . createStatement ( "select host from targets" ) ;
439- this . log ( WARN , "Adding targets..." ) ;
436+ this . targetsAvailable = { } ;
437+ var targetsQuery = rulesetDBConn . createStatement ( "select host, ruleset_id from targets" ) ;
438+ this . log ( DBUG , "Adding targets..." ) ;
440439 while ( targetsQuery . executeStep ( ) ) {
441440 var host = targetsQuery . row . host ;
442- this . targetsAvailable . add ( host ) ;
441+ this . targetsAvailable [ host ] = targetsQuery . row . ruleset_id ;
443442 }
444- this . log ( WARN , "Done adding targets." ) ;
443+ this . log ( DBUG , "Done adding targets." ) ;
445444 } catch ( e ) {
446- this . log ( WARN , "Rules Failed: " + e ) ;
445+ this . log ( DBUG , "Rules Failed: " + e ) ;
447446 }
448447 var t2 = new Date ( ) . getTime ( ) ;
449448 this . log ( NOTE , "Loading rulesets took " + ( t2 - t1 ) / 1000.0 + " seconds" ) ;
@@ -610,17 +609,16 @@ const HTTPSRules = {
610609 // flow? Perhaps we can preload all targets from the DB into memory at startup
611610 // so we only hit the DB when we know there is something to be had.
612611 queryTarget : function ( target ) {
613- this . log ( WARN , "Querying DB for " + target ) ;
612+ this . log ( DBUG , "Querying DB for " + target ) ;
614613 var output = [ ] ;
615614
616- var statement = this . queryForTarget . clone ( ) ;
617- statement . params . target = target ;
615+ this . queryForRuleset . params . id = this . targetsAvailable [ target ] ;
618616
619617 try {
620- while ( statement . executeStep ( ) )
621- output . push ( statement . row . contents ) ;
618+ while ( this . queryForRuleset . executeStep ( ) )
619+ output . push ( this . queryForRuleset . row . contents ) ;
622620 } finally {
623- statement . reset ( ) ;
621+ this . queryForRuleset . reset ( ) ;
624622 }
625623 return output ;
626624 } ,
@@ -635,7 +633,7 @@ const HTTPSRules = {
635633 if ( this . targets [ target ] &&
636634 this . targets [ target ] . length > 0 ) {
637635 this . setInsert ( results , this . targets [ target ] ) ;
638- } else if ( this . targetsAvailable . has ( target ) ) {
636+ } else if ( this . targetsAvailable [ target ] ) {
639637 // If not found there, check the DB and load the ruleset as appropriate
640638 var rulesets = this . queryTarget ( target ) ;
641639 if ( rulesets . length > 0 ) {
0 commit comments