name mode size
..
doc 040000
Makefile 100644 222B
README 100644 5kB
api.h 100644 1.52kB
xhttp_mod.c 100644 11.22kB
xhttp_trans.c 100644 3.65kB
xhttp_trans.h 100644 995B
README
xHTTP Module Daniel-Constantin Mierla <miconda@gmail.com> Edited by Daniel-Constantin Mierla <miconda@gmail.com> Edited by Alex Balashov <abalashov@evaristesys.com> Copyright � 2010 asipto.com __________________________________________________________________ Table of Contents 1. Admin Guide 1. Overview 2. Note on Latency 3. Dependencies 3.1. Kamailio Modules 3.2. Kamailio Core Settings 3.3. External Libraries or Applications 4. Parameters 4.1. url_skip (str) 4.2. url_match (str) 5. Functions 5.1. xhttp_reply(code, reason, ctype, body) List of Examples 1.1. Set url_skip parameter 1.2. Set url_match parameter 1.3. xhttp_reply usage Chapter 1. Admin Guide Table of Contents 1. Overview 2. Note on Latency 3. Dependencies 3.1. Kamailio Modules 3.2. Kamailio Core Settings 3.3. External Libraries or Applications 4. Parameters 4.1. url_skip (str) 4.2. url_match (str) 5. Functions 5.1. xhttp_reply(code, reason, ctype, body) 1. Overview This module provides basic HTTP/1.0 server functionality inside SIP Router. SIP and HTTP are very similar protocols, so, practically, the SIP parser can easily handle HTTP requests just by adding a fake Via header. The xmlrpc module uses the same concept. xHTTP module offers a generic HTTP handling way, by calling event_route[xhttp:request] in your config. You can check the HTTP URL via config variable $hu. Note that use of $ru will raise errors since the structure of an HTTP URL is not compatible with that of a SIP URI. 2. Note on Latency Because HTTP requests in xhttp are handled by the same, finite number of SIP worker processes that operate on SIP messages, the same general principles regarding script execution speed and throughput should be observed by the writer in event_route[xhttp:request] as in any other part of the route script. For example, if you initiate a database query in the HTTP request route that takes a long time to return rows, the SIP worker process in which the request is handled will be blocked for that time and unable to process other SIP messages. In most typical installations, there are only a few of these worker processes running. Therefore, it is highly inadvisable to execute particularly slow things in the event_route[xhttp:request], because the request is not handled in an asynchronous manner or otherwise peripherally to general SIP processing. SIP worker threads will block, pending the outcome of the event route just like any other config script route. This is no more or less true for xhttp than it is for any other block of script in any other scenario, and does not warrant any extraordinary concern. It nevertheless bears mention here because some processes with embedded HTTP servers have the request processing take place "outside" of the main synchronous event sequence, whether by creating separate threads or by some other asynchronous handling. That is not the case with xhttp. 3. Dependencies 3.1. Kamailio Modules 3.2. Kamailio Core Settings 3.3. External Libraries or Applications 3.1. Kamailio Modules The following modules must be loaded before this module: * sl - stateless reply. 3.2. Kamailio Core Settings SIP requires a Content-Length header for TCP transport. But most HTTP clients do not set the content length for normal GET requests. Therefore, the core must be configured to allow incoming requests without content length header: * tcp_accept_no_cl=yes 3.3. External Libraries or Applications The following libraries or applications must be installed before running Kamailio with this module loaded: * None 4. Parameters 4.1. url_skip (str) 4.2. url_match (str) 4.1. url_skip (str) Regular expression to match the HTTP URL. If there is a match, then event route is not executed. Default value is null (don't skip). Example 1.1. Set url_skip parameter ... modparam("xhttp", "url_skip", "^/RPC2") ... 4.2. url_match (str) Regular expression to match the HTTP URL. If there is no match, then event route is not executed. This check is done after url_skip, so if both url_skip and url_match would match then the event route is not executed (url_skip has higher priority). Default value is null (match everything). Example 1.2. Set url_match parameter ... modparam("xhttp", "url_match", "^/sip/") ... 5. Functions 5.1. xhttp_reply(code, reason, ctype, body) 5.1. xhttp_reply(code, reason, ctype, body) Send back a reply with content-type and body. Example 1.3. xhttp_reply usage ... event_route[xhttp:request] { xhttp_reply("200", "OK", "text/html", "<html><body>OK - [$si:$sp]</body></html>"); } ...