Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--src/ejabberd_service.erl27
2 files changed, 10 insertions, 22 deletions
diff --git a/ChangeLog b/ChangeLog
index ef6bf63b5..bd692189e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,8 @@
2008-08-09 Badlop <badlop@process-one.net>
* src/ejabberd_service.erl: Fix XEP-0114 compliance: define xmlns
- in header of error response; check the connection is attempted to
- a served component; include in response the JID of served
- component not server (thanks to Sergei Golovan)
+ in header of error response; include in response the JID of served
+ component not server (thanks to Sergei Golovan)(EJAB-717)
2008-08-04 Jerome Sautret <jerome.sautret@process-one.net>
diff --git a/src/ejabberd_service.erl b/src/ejabberd_service.erl
index d7216fc6e..66025fce7 100644
--- a/src/ejabberd_service.erl
+++ b/src/ejabberd_service.erl
@@ -79,13 +79,6 @@
"</stream:stream>"
).
--define(HOST_UNKNOWN_ERR,
- "<stream:stream "
- "xmlns:stream='http://etherx.jabber.org/streams'>"
- "<stream:error>Host Unknown</stream:error>"
- "</stream:stream>"
- ).
-
-define(INVALID_HANDSHAKE_ERR,
"<stream:error>Invalid Handshake</stream:error>"
"</stream:stream>"
@@ -178,19 +171,15 @@ init([{SockMod, Socket}, Opts]) ->
wait_for_stream({xmlstreamstart, _Name, Attrs}, StateData) ->
case xml:get_attr_s("xmlns", Attrs) of
"jabber:component:accept" ->
- %% Check that destination is a served component
+ %% Note: XEP-0114 requires to check that destination is a Jabber
+ %% component served by this Jabber server.
+ %% However several transports don't respect that,
+ %% so ejabberd doesn't check 'to' attribute (EJAB-717)
To = xml:get_attr_s("to", Attrs),
- case lists:member(To, StateData#state.hosts) of
- true ->
- Header = io_lib:format(?STREAM_HEADER,
- [StateData#state.streamid,
- xml:crypt(To)]),
- send_text(StateData, Header),
- {next_state, wait_for_handshake, StateData};
- _ ->
- send_text(StateData, ?HOST_UNKNOWN_ERR),
- {stop, normal, StateData}
- end;
+ Header = io_lib:format(?STREAM_HEADER,
+ [StateData#state.streamid, xml:crypt(To)]),
+ send_text(StateData, Header),
+ {next_state, wait_for_handshake, StateData};
_ ->
send_text(StateData, ?INVALID_HEADER_ERR),
{stop, normal, StateData}