-2006-06-31 Mickael Remond <mickael.remond@process-one.net>
+2006-06-02 Mickael Remond <mickael.remond@process-one.net>
* src/web/ejabberd_http_poll.erl: Messages polled between the
the last client request and the polling timeout were lost. Those
messages are now resent using ejabberd routing mechanisms.
+ * src/web/ejabberd_http.erl: The web module now accepts HTTP
+ absolute URL (used behind a proxy). This apply to HTTP polling and
+ to the web interface (Thanks to Jean-Sebastien Pedron).
+
2006-05-29 Mickael Remond <mickael.remond@process-one.net>
* src/mod_roster.erl: According to RFC3921 section 9.2, outbound
SockMod = State#state.sockmod,
Socket = State#state.socket,
case Data of
- {ok, {http_request, Method, Path, Version}} ->
+ {ok, {http_request, Method, Uri, Version}} ->
KeepAlive = case Version of
{1, 1} ->
true;
_ ->
false
end,
+ Path = case Uri of
+ {absoluteURI, _Scheme, _Host, _Port, P} -> {abs_path, P};
+ _ -> Uri
+ end,
State#state{request_method = Method,
request_version = Version,
request_path = Path,
"*" ->
% Is this correct?
"*";
- P ->
- % FIXME: Handle
- % absolute URIs
- {abs_path, P}
+ _ ->
+ case string:str(URI, "://") of
+ 0 ->
+ % Relative URI
+ % ex: /index.html
+ {abs_path, URI};
+ N ->
+ % Absolute URI
+ % ex: http://localhost/index.html
+
+ % Remove scheme
+ % ex: URI2 = localhost/index.html
+ URI2 = string:substr(URI, N + 3),
+ % Look for the start of the path
+ % (or the lack of a path thereof)
+ case string:chr(URI2, $/) of
+ 0 -> {abs_path, "/"};
+ M -> {abs_path,
+ string:substr(URI2, M + 1)}
+ end
+ end
end,
case VersionStr of
[] ->