Only in xmlrpc-1.13-ipr2/: ip-patch.diff diff -ru xmlrpc-1.13/src/xmlrpc.erl xmlrpc-1.13-ipr2/src/xmlrpc.erl --- xmlrpc-1.13/src/xmlrpc.erl 2003-04-23 23:06:45.000000000 +0400 +++ xmlrpc-1.13-ipr2/src/xmlrpc.erl 2006-09-22 14:29:16.000000000 +0400 @@ -110,11 +110,12 @@ case string:tokens(HeaderField, " \r\n") of ["Content-Length:", ContentLength] -> case catch list_to_integer(ContentLength) of + badarg -> + {error, {invalid_content_length, ContentLength}}; Value -> parse_header(Socket, Timeout, Header#header{content_length = - Value}); - _ -> {error, {invalid_content_length, ContentLength}} + Value}) end; ["Connection:", "close"] -> parse_header(Socket, Timeout, @@ -174,12 +175,12 @@ start_link(all, Port, MaxSessions, Timeout, Handler, State). start_link(IP, Port, MaxSessions, Timeout, Handler, State) -> - OptionList = [{active, false}, {reuseaddr, true}|ip(IP)], + OptionList = [{active, false}, {reuseaddr, true}] ++ ip(IP), SessionHandler = {xmlrpc_http, handler, [Timeout, Handler, State]}, tcp_serv:start_link([Port, MaxSessions, OptionList, SessionHandler]). ip(all) -> []; -ip(IP) when tuple(IP) -> {ip, IP}. +ip(IP) when tuple(IP) -> [{ip, IP}]. %% Exported: stop/1 diff -ru xmlrpc-1.13/src/xmlrpc_decode.erl xmlrpc-1.13-ipr2/src/xmlrpc_decode.erl --- xmlrpc-1.13/src/xmlrpc_decode.erl 2003-04-23 23:06:45.000000000 +0400 +++ xmlrpc-1.13-ipr2/src/xmlrpc_decode.erl 2007-08-24 15:34:15.000000000 +0400 @@ -28,7 +28,7 @@ -author('jocke@gleipnir.com'). -export([payload/1]). --include("xmerl.hrl"). +-include_lib("xmerl/include/xmerl.hrl"). payload(Payload) -> case xmerl_scan:string(Payload) of diff -ru xmlrpc-1.13/src/xmlrpc_http.erl xmlrpc-1.13-ipr2/src/xmlrpc_http.erl --- xmlrpc-1.13/src/xmlrpc_http.erl 2003-04-23 23:06:45.000000000 +0400 +++ xmlrpc-1.13-ipr2/src/xmlrpc_http.erl 2007-08-22 01:17:39.000000000 +0400 @@ -96,6 +96,9 @@ {"Content-Type:", "text/xml"} -> parse_header(Socket, Timeout, Header#header{content_type = "text/xml"}); + {"Content-Type:", "text/xml; charset=utf-8"} -> + parse_header(Socket, Timeout, + Header#header{content_type = "text/xml; charset=utf-8"}); {"Content-Type:", ContentType} -> {status, 415}; {"User-Agent:", UserAgent} -> parse_header(Socket, Timeout, @@ -193,6 +196,7 @@ "Content-Length: ", integer_to_list(lists:flatlength(Payload)), "\r\n", "Server: Erlang/1.13\r\n", + "Content-Type: text/xml\r\n", ExtraHeader, "\r\n", Payload], gen_tcp:send(Socket, Response). @@ -200,7 +204,7 @@ reason_phrase(200) -> "OK"; reason_phrase(400) -> "Bad Request"; reason_phrase(411) -> "Length required"; -reason_phrase(415) -> "Unsupported Media Type"; +reason_phrase(415) -> "Unsupported Media Type"; reason_phrase(500) -> "Internal Server Error"; reason_phrase(501) -> "Not Implemented"; reason_phrase(505) -> "HTTP Version not supported".