anchor.diff:              case Path of
                  "shell" ->
                      Params=Req:parse_post(),
  -                   Str=proplists:get_value("str",Params),
                      Pid=list_to_atom(proplists:get_value("name",Params)),
  -                   Pid ! {post_msg,Str},
  +                   case string:strip(proplists:get_value("str",Params)) of
  +                      "halt()."  ->
  +                                    Pid ! {client,exit};
  +                        Str      ->
  +                                    Pid ! {post_msg,Str}
  +                   end,
                      Req:ok({"text/plain", "success"});
                   _ ->
                       Req:not_found()
  
positive.code: %% Internal API
  loop(NameField, Response,Binding ,N ) ->
      receive
          {post_msg,Str}->
               try eshell:eval(Str,Binding) of
                  {value,Value,NewBinding} ->
  
negative.code:                     Addr=Req:get(peer),
                      Port=integer_to_list(get_port(Socket)),
                      Name=list_to_atom(Addr ++ ":" ++ Port),
                      %Register process as ip:port name
                      register(Name,self()),
                      N=1,
                      NameField=get_name_field(Name),
  