diff --git a/ChangeLog b/ChangeLog index 8c021c2b9..5120bda74 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-04-17 Alexey Shchepin + + * src/web/ejabberd_http.erl: Increased receive buffer + + * src/mod_irc/mod_irc_connection.erl: Support for "/quote" command + 2004-04-15 Alexey Shchepin * src/ejabberd.erl: Added searching of files in code:priv_lib diff --git a/src/mod_irc/mod_irc_connection.erl b/src/mod_irc/mod_irc_connection.erl index c32fa3d7a..671c98328 100644 --- a/src/mod_irc/mod_irc_connection.erl +++ b/src/mod_irc/mod_irc_connection.erl @@ -234,20 +234,27 @@ handle_info({route_chan, Channel, Resource, StateData#state.myname, StateData#state.nick), StateData#state.user, El), Body = xml:get_path_s(El, [{elem, "body"}, cdata]), - Body1 = case Body of - [$/, $m, $e, $ | Rest] -> - "\001ACTION " ++ Rest ++ "\001"; - _ -> - Body - end, - Strings = string:tokens(Body1, "\n"), - Res = lists:concat( - lists:map( - fun(S) -> - io_lib:format("PRIVMSG #~s :~s\r\n", - [Channel, S]) - end, Strings)), - ?SEND(Res); + case Body of + "/quote " ++ Rest -> + ?SEND(Rest ++ "\r\n"); + _ -> + Body1 = + case Body of + [$/, $m, $e, $ | Rest] -> + "\001ACTION " ++ Rest ++ "\001"; + _ -> + Body + end, + Strings = string:tokens(Body1, "\n"), + Res = lists:concat( + lists:map( + fun(S) -> + io_lib:format( + "PRIVMSG #~s :~s\r\n", + [Channel, S]) + end, Strings)), + ?SEND(Res) + end; Subject -> Strings = string:tokens(Subject, "\n"), Res = lists:concat( @@ -260,20 +267,25 @@ handle_info({route_chan, Channel, Resource, end; "chat" -> Body = xml:get_path_s(El, [{elem, "body"}, cdata]), - Body1 = case Body of - [$/, $m, $e, $ | Rest] -> - "\001ACTION " ++ Rest ++ "\001"; - _ -> - Body - end, - Strings = string:tokens(Body1, "\n"), - Res = lists:concat( - lists:map( - fun(S) -> - io_lib:format("PRIVMSG ~s :~s\r\n", - [Resource, S]) - end, Strings)), - ?SEND(Res); + case Body of + "/quote " ++ Rest -> + ?SEND(Rest ++ "\r\n"); + _ -> + Body1 = case Body of + [$/, $m, $e, $ | Rest] -> + "\001ACTION " ++ Rest ++ "\001"; + _ -> + Body + end, + Strings = string:tokens(Body1, "\n"), + Res = lists:concat( + lists:map( + fun(S) -> + io_lib:format("PRIVMSG ~s :~s\r\n", + [Resource, S]) + end, Strings)), + ?SEND(Res) + end; "error" -> stop; _ -> @@ -330,20 +342,25 @@ handle_info({route_nick, Nick, case xml:get_attr_s("type", Attrs) of "chat" -> Body = xml:get_path_s(El, [{elem, "body"}, cdata]), - Body1 = case Body of - [$/, $m, $e, $ | Rest] -> - "\001ACTION " ++ Rest ++ "\001"; - _ -> - Body - end, - Strings = string:tokens(Body1, "\n"), - Res = lists:concat( - lists:map( - fun(S) -> - io_lib:format("PRIVMSG ~s :~s\r\n", - [Nick, S]) - end, Strings)), - ?SEND(Res); + case Body of + "/quote " ++ Rest -> + ?SEND(Rest ++ "\r\n"); + _ -> + Body1 = case Body of + [$/, $m, $e, $ | Rest] -> + "\001ACTION " ++ Rest ++ "\001"; + _ -> + Body + end, + Strings = string:tokens(Body1, "\n"), + Res = lists:concat( + lists:map( + fun(S) -> + io_lib:format("PRIVMSG ~s :~s\r\n", + [Nick, S]) + end, Strings)), + ?SEND(Res) + end; "error" -> stop; _ -> diff --git a/src/web/ejabberd_http.erl b/src/web/ejabberd_http.erl index c5988d342..7569e11a9 100644 --- a/src/web/ejabberd_http.erl +++ b/src/web/ejabberd_http.erl @@ -40,9 +40,9 @@ start_link({SockMod, Socket}, Opts) -> ?INFO_MSG("started: ~p", [{SockMod, Socket}]), case SockMod of gen_tcp -> - inet:setopts(Socket, [{packet, http}]); + inet:setopts(Socket, [{packet, http}, {recbuf, 8192}]); ssl -> - ssl:setopts(Socket, [{packet, http}]) + ssl:setopts(Socket, [{packet, http}, {recbuf, 8192}]) end, {ok, proc_lib:spawn_link(ejabberd_http, receive_headers, diff --git a/src/web/ejabberd_http_poll.erl b/src/web/ejabberd_http_poll.erl index f53dba5bd..4366d89d7 100644 --- a/src/web/ejabberd_http_poll.erl +++ b/src/web/ejabberd_http_poll.erl @@ -77,19 +77,19 @@ process_request(#request{path = [], data = Data} = Request) -> case catch parse_request(Data) of {ok, ID1, Key, NewKey, Packet} -> - ID = case ID1 of - "0" -> - NewID = sha:sha(term_to_binary({now(), make_ref()})), - {ok, Pid} = start(NewID, ""), - mnesia:transaction( - fun() -> - mnesia:write(#http_poll{id = NewID, - pid = Pid}) - end), - NewID; - _ -> - ID1 - end, + ID = if + (ID1 == "0") or (ID1 == "mobile") -> + NewID = sha:sha(term_to_binary({now(), make_ref()})), + {ok, Pid} = start(NewID, ""), + mnesia:transaction( + fun() -> + mnesia:write(#http_poll{id = NewID, + pid = Pid}) + end), + NewID; + true -> + ID1 + end, case http_put(ID, Key, NewKey, Packet) of {error, not_exists} -> {200, ?BAD_REQUEST, ""}; @@ -106,6 +106,8 @@ process_request(#request{path = [], if ID == ID1 -> {200, [?CT], OutPacket}; + ID1 == "mobile" -> + {200, [?CT], [ID, $\n, OutPacket]}; true -> Cookie = "ID=" ++ ID ++ "; expires=-1", {200, [?CT, {"Set-Cookie", Cookie}],