anchor.diff:                 compress = false,
                  rcv_pid = self()}.
   
  -wrap_elem(#xmlstreamstart{attrs=Attrs}, #state{rid=Rid}) ->
  +wrap_elem(#xmlstreamstart{attrs=Attrs}, #state{rid=Rid, sid=Sid}) ->
       Version = proplists:get_value(<<"version">>, Attrs, <<"1.0">>),
       Lang = proplists:get_value(<<"xml:lang">>, Attrs, <<"en">>),
       To = proplists:get_value(<<"to">>, Attrs, <<"localhost">>),
  -    #xmlelement{name = <<"body">>, attrs=common_attrs(Rid) ++ [
  +    #xmlelement{name = <<"body">>, attrs=common_attrs(Rid, Sid) ++ [
               {<<"content">>, <<"text/xml; charset=utf-8">>},
  +            {<<"xmlns:xmpp">>, <<"urn:xmpp:xbosh">>},
  +            {<<"xmpp:version">>, <<"1.0">>},
               {<<"hold">>, <<"1">>},
               {<<"wait">>, <<"60">>},
               {<<"xml:lang">>, Lang},
               {<<"to">>, To}
  -            ]};
  +            ] ++ [{<<"xmpp:restart">>, <<"true">>} || Sid =/= nil]};
  +
   wrap_elem(["</", <<"stream:stream">>, ">"], #state{sid=Sid, rid=Rid}) ->
       #xmlelement{name = <<"body">>, 
                   attrs = common_attrs(Rid, Sid) ++ [{<<"type">>, <<"terminate">>}],
  
positive.code: common_attrs(Rid) ->
      [{<<"rid">>, pack_rid(Rid)},
       {<<"xmlns">>, <<"http://jabber.org/protocol/httpbind">>}].
  common_attrs(Rid, Sid) ->
      common_attrs(Rid) ++ [{<<"sid">>, Sid}].
  
  pack_rid(Rid) ->
      list_to_binary(integer_to_list(Rid)).
  
  unwrap_elem(#xmlelement{name = <<"body">>, body = [], attrs=Attrs}) ->
      case proplists:get_value(<<"from">>, Attrs) of
          undefined -> [];
          Server ->
              StreamStart = #xmlstreamstart{name = <<"stream:stream">>, attrs=[
                          {<<"from">>, Server},
                          {<<"version">>, <<"1.0">>},
                          {<<"xml:lang">>, <<"en">>},
                          {<<"xmlns">>, <<"jabber:client">>},
                          {<<"xmlns:stream">>, <<"http://etherx.jabber.org/streams">>}]},
              StreamFeatures = #xmlelement{
                      name = <<"stream:features">>,
                      attrs= [], body = []},
              [StreamStart, StreamFeatures]
      end;
  unwrap_elem(#xmlelement{name = <<"body">>, body = Body}) ->
      Body.
  
  
negative.code: %%% Helpers
  %%%===================================================================
  send0(#transport{socket = {Host, Port, Path}} = Transport, Elem0, #state{parser = Parser} = State) ->
      Headers = [{"Content-Type", "text/xml; charset=utf-8"}],
      Elem = wrap_elem(Elem0, State),
      {ok, {{StatusCode, Reason}, Hdrs, RespBody}} =
          lhttpc:request(Host, Port, false, Path, 'POST',
  