anchor.diff:                          [] ->
                               erlang:demonitor(WebMon),
                               Reply = do_stop_server(Ref),
  -                            {reply, Reply, State1#state{servers=Rest}};
  +                            {reply, Reply, State1#state{servers=Servers1}};
                           WebApps1 ->
  -                            Servers1 = [{Ref, WebApps1, WebPid, WebMon}|Rest],
  -                            {reply, ok, State1#state{servers=Servers1}}
  +                            do_update_server(Ref, Apps1),
  +                            Server1 = Server#server_info{apps=WebApps1},
  +                            {reply, ok, State1#state{servers=[Server1|Servers1]}}
                       end;
                   false ->
                       {reply, {error, not_found}, State1}
  
positive.code: 
  handle_info({'DOWN', MRef, process, _Pid, _Reason}, State) ->
      #state{apps=Apps, servers=Servers} = State,
      case lists:keyfind(MRef, 2, Apps) of
          {{AppId, Ref}, _} -> 
              {reply, _, State1} = handle_call({stop, AppId, Ref}, none, State),
              {noreply, State1};
          false ->
              case lists:keytake(MRef, 4, Servers) of
                  false ->
                      {noreply, State};
                  {value, {Ref, _WebApps, _WebPid, MRef}, Rest} ->
                      lager:warning("Web server ~p has failed!", [Ref]),
                      {noreply, State#state{servers=Rest}}
              end
      end.
  
  
negative.code: 
  handle_cast({webserver_started, Ref, WebPid}, State) ->
      #state{apps=Apps, servers=Servers} = State,
      WebApps = [AppId || #app_info{index={AppId, WebRef}} <- Apps, WebRef==Ref],
      Server = #server_info{
          ref = Ref, 
          apps = WebApps, 
          pid = WebPid, 
          mon = erlang:monitor(process, WebPid)
      },
      {noreply, State#state{servers=[Server|Servers]}};
  
  handle_cast(stop_all, State) ->
      nksip_webserver_sup:terminate_all(),
  