anchor.diff:  
   handle_changes_req(#httpd{method='GET',path_parts=[DbName|_]}=Req, Db) ->
       StartSeq = list_to_integer(couch_httpd:qs_value(Req, "since", "0")),
  -    Filter = couch_httpd:qs_value(Req, "filter", nil),
  -    {ok, FilterFun, EndFilterFun} = make_filter_funs(Req, Db, Filter),
  -    try
  -        {ok, Resp} = start_json_response(Req, 200),
  -        send_chunk(Resp, "{\"results\":[\n"),
  -        case couch_httpd:qs_value(Req, "continuous", "false") of
  -        "true" ->
  -            Self = self(),
  -            {ok, Notify} = couch_db_update_notifier:start_link(
  -                fun({_, DbName0}) when DbName0 == DbName ->
  -                    Self ! db_updated;
  -                (_) ->
  -                    ok
  -                end),
  -            {Timeout, TimeoutFun} = get_changes_timeout(Req, Resp),
  -            couch_stats_collector:track_process_count(Self,
  -                                {httpd, clients_requesting_changes}),
  -            try
  -                keep_sending_changes(Req, Resp, Db, StartSeq, <<"">>, Timeout, TimeoutFun, FilterFun)
  -            after
  -                couch_db_update_notifier:stop(Notify),
  -                get_rest_db_updated() % clean out any remaining update messages
  -            end;
  -
  -        "false" ->
  -            {ok, {LastSeq, _Prepend}} =
  -                    send_changes(Req, Resp, Db, StartSeq, <<"">>, FilterFun),
  -            send_chunk(Resp, io_lib:format("\n],\n\"last_seq\":~w}\n", [LastSeq])),
  -            send_chunk(Resp, "")
  -        end
  -    after
  -        EndFilterFun()
  +    {ok, Resp} = start_json_response(Req, 200),
  +    send_chunk(Resp, "{\"results\":[\n"),
  +    case couch_httpd:qs_value(Req, "continuous", "false") of
  +    "true" ->
  +        Self = self(),
  +        {ok, Notify} = couch_db_update_notifier:start_link(
  +            fun({_, DbName0}) when DbName0 == DbName ->
  +                Self ! db_updated;
  +            (_) ->
  +                ok
  +            end),
  +        {Timeout, TimeoutFun} = get_changes_timeout(Req, Resp),
  +        couch_stats_collector:track_process_count(Self,
  +                            {httpd, clients_requesting_changes}),
  +        try
  +            keep_sending_changes(Req, Resp, Db, StartSeq, <<"">>, Timeout, TimeoutFun)
  +        after
  +            couch_db_update_notifier:stop(Notify),
  +            get_rest_db_updated() % clean out any remaining update messages
  +        end;
  +
  +    "false" ->
  +        {ok, {LastSeq, _Prepend}} =
  +                send_changes(Req, Resp, Db, StartSeq, <<"">>),
  +        send_chunk(Resp, io_lib:format("\n],\n\"last_seq\":~w}\n", [LastSeq])),
  +        send_chunk(Resp, "")
       end;
   
   handle_changes_req(#httpd{path_parts=[_,<<"_changes">>]}=Req, _Db) ->
  
positive.code:         EndFilterFun = fun() ->
              couch_query_servers:end_filter(Pid)
          end,
          {ok, FilterFun, EndFilterFun};
      _Else ->
          throw({bad_request, 
              "filter parameter must be of the form `designname/filtername`"})
  
negative.code:     after 0 -> updated
      end.
  
  keep_sending_changes(#httpd{user_ctx=UserCtx,path_parts=[DbName|_]}=Req, Resp, Db, StartSeq, Prepend, Timeout, TimeoutFun) ->
      {ok, {EndSeq, Prepend2}} = send_changes(Req, Resp, Db, StartSeq, Prepend),
      couch_db:close(Db),
      case wait_db_updated(Timeout, TimeoutFun) of
      updated ->
          {ok, Db2} = couch_db:open(DbName, [{user_ctx, UserCtx}]),
          keep_sending_changes(Req, Resp, Db2, EndSeq, Prepend2, Timeout, TimeoutFun);
      stop ->
          send_chunk(Resp, io_lib:format("\n],\n\"last_seq\":~w}\n", [EndSeq])),
          send_chunk(Resp, "")
      end.
  
  send_changes(Req, Resp, Db, StartSeq, Prepend0) ->
      Style = list_to_existing_atom(
              couch_httpd:qs_value(Req, "style", "main_only")),
      {FilterFun, EndFilterFun} = make_filter_funs(Req, Db),
      try
          couch_db:changes_since(Db, Style, StartSeq,
          fun([#doc_info{id=Id, high_seq=Seq}|_]=DocInfos, {_, Prepend}) ->
              Results0 = [FilterFun(DocInfo) || DocInfo <- DocInfos],
              Results = [Result || Result <- Results0, Result /= null],
  