Skip to content

Releases: kehengzhong/ejet

eJet v1.6.8 released

25 Jul 04:06
4137d5a
Compare
Choose a tag to compare

The modifications made in this version are as follows:

  1. The communication interface has added a sockopt option, allowing the setting of TCP connection attribute options.
  2. The issue of garbled characters when outputting the request line content to the log after sending an HTTP request by the reverse proxy has been corrected.
  3. In the Location configuration, an auto redirect option has been added to address whether to automatically handle redirection after receiving a 301/302 response from the Origin server following an HTTP request by the reverse proxy.
  4. Analogous to the parameter configuration for managing received HTTP requests in http.listen, add http.connect configuration items in the configuration file to manage the configuration parameters for HTTP requests initiated proactively by eJet. This includes the size of request or response headers, connection establishment timeout, certificate information, proxy server configuration, caching configuration information, script programs, etc.;
  5. When sending an HTTPS request with an SSL secure connection to the Origin server, if the configuration file has set a Proxy server for this Origin server, the direct SSL connection to the proxy server has been corrected to establish an SSL Tunnel for encrypted transmission of HTTPS requests and responses.
  6. Scripts and statements for handling local cache files have been added to the configuration file, including cache_check_script, closecache statement, and removecache statement, etc., to enhance the access efficiency and flexibility of proxy requests.
  7. Assignment statements have been added to dynamically modify the values of various variables, including request headers, response headers, cookies, queries, system-defined global variables, instance variables in HTTPMsg, parameter variables, etc.
  8. Bugs such as memory leaks during high-concurrency access, thread synchronization, exceptions caused by receiving a large number of HTTP requests on the same connection, repeated closure of instance objects, and multi-threaded access to the same object have been revised, and the efficiency of memory access and thread processing for HTTP request and response has been optimized.
  9. The six matching methods for matching an HTTPLoc under a virtual host based on the relative path of the HTTP request in the configuration file have been optimized.
  10. Memory pool technology has been adopted to fully optimize the memory usage of all system data, significantly reducing memory fragmentation during long-term operation.
  11. Load balancing configurations and algorithms for reverse proxy/FastCGI and other functions have been added. When setting up reverse proxy and other functions, the eJet server can configure multiple Origin servers and set corresponding load balancing algorithms to evenly distribute client HTTP requests to different Origin servers.
  12. The performance bottleneck of writing access logs to log files has been optimized.

本版修改的功能如下:

  1. 通信接口增加了sockopt选项,可设置TCP连接的属性选项;
  2. 反向代理发送http请求后,将请求行内容输出到日志时,出现的乱码问题已修正;
  3. 在Location中,增加了auto redirect配置选项,解决反向代理发送http请求后,收到Origin服务器返回301/302时,是否自动处理重定向问题;
  4. 类比http.listen管理接收的HTTP请求的参数配置,在配置文件中增加http.connect配置项,管理eJet主动向外发起的HTTP请求的配置参数,包括请求头或响应头大小、 连接建立超时时间、证书信息、代理服务器配置、缓存配置信息、脚本程序等;
  5. 当向Origin服务器发送SSL安全连接的HTTPS请求时,如果配置文件为这个Origin服务器设置了Proxy代理服务器,则直接建立到代理服务器的SSL连接,修正成建立SSL Tunnel方式来实现HTTPS请求和响应的加密传输;
  6. 在配置文件中,增加了处理本地缓存文件的脚本和语句,包括cache_check_script、closecache语句和removecache语句等,以提升代理请求的访问效率和灵活性;
  7. 增加了赋值语句来动态修改各种变量的值,包括请求头、响应头、cookie、query、系统定义全局变量、HTTPMsg中的实例变量、参数变量等;
  8. 修订了大并发访问时的内存泄漏、线程同步、同一个连接上收到大量的HTTP请求导致异常、实例对象重复关闭、多线程访问同一个对象等bug,优化了HTTP请求和响应相对应内存访问、线程处理的效率;
  9. 优化了配置文件中根据HTTP请求的相对路径来匹配某个虚拟主机下的HTTPLoc的六种匹配方式;
  10. 采用内存池技术,全面优化了系统所有数据的内存使用方式,大大降低了长时间运行时的内存碎片;
  11. 增加了反向代理/FastCGI等功能的负载均衡配置和算法,eJet服务器在设置反向代理等功能时,可配置多台Origin服务器,并设置相应的负载均衡算法,来均衡地分配客户端HTTP请求到不同的Origin服务器上;
  12. 优化了访问日志写入到日志文件的性能瓶颈问题;

eJet v1.2.12 released

17 Feb 12:55
71bae42
Compare
Choose a tag to compare
  1. Fixed the function calling parameters accordingly based on json_iter, buffer pointer mechanism of chunk;
  2. Fixed the bug of empty httpver value in new httpmsg instance when calling do_http_get, do_http_post or proxy;
  3. Fixed the bug of comparing http scheme with 'https';

本版本修订的内容如下:

  1. 由于更新了json_iter和chunk中的buffer pointer机制,相应地修改了eJet中对这些函数调用的接口参数;
  2. 在do_http_get和do_http_post及http proxy模式下中,修订了新的httpmsg实例中httpver值为空的bug;
  3. 修订了http_uri.c中判断scheme为https时参数错误bug;

eJet v1.2.10 released

04 Sep 06:30
1a9788a
Compare
Choose a tag to compare
  1. Solved the large concurrent handling of HTTP request/response completely based on IOCP implementation of epump library;
  2. Fixed the handling when the actual file length stored in cache info is zero;
  3. Fixed the bug of handling of extra bytes in receiving buffer of http_con;
  4. Fixed the check and handle of compatibility for Windows OS;

本版本修订的内容如下:

  1. 依赖epump的IOCP实现,彻底实现了Windows下大并发HTTP请求响应的处理;
  2. 修改了http_cache下缓存信息数据结构中缓存长度为0时的缺省处理;
  3. 修订了http_proxy模式下多余数据的处理bug;
  4. 修订了Windows版本的兼容性判断和处理;

eJet v1.2.8 released

27 Jul 10:09
577c7f1
Compare
Choose a tag to compare
  1. Compiled and tested the source in Windows, solved the incompatibility of system call;
  2. Added pcre library as regex facility in Windows;
  3. Fixed the problem about formated string output of long long type in Windows;
  4. Solved the compatible problem of tcp_sendfile and tcp_writev in Windows;
  5. Fixed offset based on the void * pointer in Windows;
  6. Solved the compatible problem of memory filemapping API in Windows;
  7. Replaced C-interface to reading/writing file with native_file_ library;
  8. Fixed the path separator problem between Linux and Windows;
  9. Compiled and tested the source in FreeBSD, solved the incompatibility of system call;

本版本修订的内容如下:

  1. 在Windows下完成了编译和调试,解决系统调用接口的不兼容问题;
  2. 由于Windows环境下没有正则表达式regex基本库,使用pcre作为Windows下的正则表达式解析和匹配设施;
  3. 解决了Windows下长整型格式输出字符串不兼容问题;
  4. 解决Windows下tcp_sendfile、tcp_writev等函数的兼容性适配问题;
  5. 纠正了Windows下void *类型指针不能加减运算的问题;
  6. 解决了Windows下的内存映射文件接口不兼容问题;
  7. 将http_cache.c中访问文件的接口从标准c函数替换为native_file函数;
  8. 解决了Windows下路径分隔符和Linux不兼容问题;
  9. 在FreeBSD下完成了编译和调试,解决了系统调用接口的不兼容问题;

eJet v1.2.6 released

22 Jun 15:08
127e91e
Compare
Choose a tag to compare
  1. If callback function of the HTTP request does not exist or return the value less than 0, the file corresponding to request location will be replied to client. If the file doest not exists, 404 is replied;
  2. Dynamical page is generated and replied to client by page template technology. Optimized the interfaces of appending data to response by http page template handling;
  3. The transmission progress of HTTP message body is tracked by callback mechanism when receiving response or sending HTTP Post request. Optimized the interface parameters of callback function;
  4. For the asynchronous event-driven framework, the worker thread sending HTTP request by do_http_get or do_http_post function is different from the worker receiving its response. This will possibly cause some unpredictable exceptions. Fixed the bug;
  5. The responsed body to client is possibly constructed from issuing one more asynchronous requests (TCP orHTTP). Original Reply function does not support the sending of asynchronously arriving data. Added the new function AsynReply, and reserved the functioin ReplyFeeding for compatibility. Added the ReplyFeedingEnd function.

本版本修订的内容如下:

  1. 在处理HTTP请求时,各级回调函数如果没有处理该请求,并且回调函数返回值小于0时,就返回该请求对应的资源位置的文件,如果没有对应的文件,则返回404;
  2. 采用页面模板方式来生成动态网页返回给客户端,优化了页面模板添加到响应体的接口函数;
  3. 当接收响应或者发送Post请求时,消息体的传输进度通过回调机制进行跟踪,优化了回调函数接口;
  4. 由于采用异步事件驱动机制,使用do_http_get或do_http_post发送HTTP请求的工作线程,和接收响应的线程不一定相同,可能会导致不可预知的异常,优化了这个Bug;
  5. 返回给客户端的响应数据,可能需要二次或多次异步请求才能获取到,原来的Reply接口不支持异步数据发送回给客户端,增加了AsynReply接口,并为了兼容性,保留了ReplyFeeding接口,增加了ReplyFeedingEnd接口。

eJet v1.2.4 released

08 Apr 15:09
378ccb4
Compare
Choose a tag to compare
  1. added reply_script function executed before sending response to client;
  2. optimized callback functions including shared library callback, global callback;
  3. added the creation of HTTPListen, HTTPHost, HTTPLoc at runtime without JSon config file;
  4. added application callback mechanism based different request path;
  5. added eJet-template file handling for output of dynamic embeded content;

eJet v1.1.2 released

28 Jan 07:35
5a45d2a
Compare
Choose a tag to compare
  1. in proxy mode, DNS resolving optimized using ePump new non-blocking DNS interface;
  2. fixed bugs of reverse proxy;
  3. auto-redirect optimization in proxy mode;
  4. fixed some http tunnel bugs;

proxy diverting optimization

28 Dec 11:12
661ce21
Compare
Choose a tag to compare
  1. optimized and siplified the content diverting by adopting chunk_t data-struct in proxy mode;
  2. fixed the bug of invalid pointer to http_srv_t of http_con in http tunnel mode;
  3. correcting uri parsing error in CONNECT method;
  4. banned the instantiation of HTTPMsg when uri is absolute or the request is forward proxy mode;
  5. when the transferring speed of connection pair is different, congestion control is needed by activating underlying TCP CC mechanism.

eJet

08 Dec 10:53
0245c28
Compare
Choose a tag to compare
v1.0.4

Add files via upload

1.0.4

08 Dec 10:50
0245c28
Compare
Choose a tag to compare
Add files via upload