haproxy/include/types
Thierry Fournier 49d4842e98 BUG/MAJOR: lua: segfault using Concat object
Concat object is based on "luaL_Buffer". The luaL_Buffer documentation says:

   During its normal operation, a string buffer uses a variable number of stack
   slots. So, while using a buffer, you cannot assume that you know where the
   top of the stack is. You can use the stack between successive calls to buffer
   operations as long as that use is balanced; that is, when you call a buffer
   operation, the stack is at the same level it was immediately after the
   previous buffer operation. (The only exception to this rule is
   luaL_addvalue.) After calling luaL_pushresult the stack is back to its level
   when the buffer was initialized, plus the final string on its top.

So, the stack cannot be manipulated between the first call at the function
"luaL_buffinit()" and the last call to the function "luaL_pushresult()" because
we cannot known the stack status.

In other way, the memory used by these functions seems to be collected by GC, so
if the GC is triggered during the usage of the Concat object, it can be used
some released memory.

This patch rewrite the Concat class without the "luaL_Buffer" system. It uses
"userdata()" forr the memory allocation of the buffer strings.
2016-02-19 13:24:09 +01:00
..
acl.h REORG/MAJOR: session: rename the "session" entity to "stream" 2015-04-06 11:23:56 +02:00
action.h MINOR: stream/applet: add use-service action 2015-09-28 01:03:48 +02:00
applet.h MINOR: cli: add a new "show env" command 2016-02-16 11:43:03 +01:00
arg.h MEDIUM: logs: add a new RFC5424 log-format for the structured-data 2015-09-28 14:01:27 +02:00
auth.h MAJOR: auth: Change the internal authentication system. 2014-03-17 18:06:06 +01:00
backend.h MEDIUM: backend: add the crc32 hash algorithm for load balancing 2015-01-20 19:48:14 +01:00
capture.h MINOR: capture: extend the captures to support non-header keys 2014-06-13 16:32:48 +02:00
channel.h MEDIUM: filters: Replace filter_http_headers callback by an analyzer 2016-02-09 14:53:15 +01:00
checks.h MINOR: check: add agent-send server parameter 2015-11-04 07:26:51 +01:00
compression.h MAJOR: filters/http: Rewrite the HTTP compression as a filter 2016-02-09 14:53:15 +01:00
connection.h MAJOR: tproxy: remove support for cttproxy 2015-08-20 19:35:14 +02:00
counters.h MEDIUM: session: maintain per-backend and per-server time statistics 2014-06-17 17:15:56 +02:00
dns.h MEDIUM: dns: Don't use the ANY query type 2015-10-20 22:31:01 +02:00
fd.h BUG/MEDIUM: polling: fix possible CPU hogging of worker processes after receiving SIGUSR1. 2014-05-20 14:57:36 +02:00
filters.h MINOR: filters: Extract proxy stuff from the struct filter 2016-02-09 14:53:15 +01:00
freq_ctr.h [MINOR] freq_ctr: add new types and functions for periods different from 1s 2010-08-10 14:01:09 +02:00
global.h BUG/MEDIUM: config: properly adjust maxconn with nbproc when memmax is forced 2015-12-14 13:03:09 +01:00
hdr_idx.h [BUG] files were missing for hdr_idx in previous commit 2006-12-04 02:20:02 +01:00
hlua.h BUG/MAJOR: lua: segfault using Concat object 2016-02-19 13:24:09 +01:00
lb_chash.h [MEDIUM] build: switch ebtree users to use new ebtree version 2009-10-26 21:10:04 +01:00
lb_fas.h MEDIUM: backend: add the 'first' balancing algorithm 2012-02-21 22:27:27 +01:00
lb_fwlc.h [MEDIUM] build: switch ebtree users to use new ebtree version 2009-10-26 21:10:04 +01:00
lb_fwrr.h [MEDIUM] build: switch ebtree users to use new ebtree version 2009-10-26 21:10:04 +01:00
lb_map.h [CLEANUP] proxy: move last lb-specific bits to their respective files 2009-10-03 18:41:18 +02:00
listener.h MEDIUM: ssl: Add options to forge SSL certificates 2015-06-12 18:06:59 +02:00
log.h MEDIUM: log: add a new log format flag "E" 2016-02-12 13:36:47 +01:00
mailers.h MEDIUM: Allow configuration of email alerts 2015-02-03 00:24:16 +01:00
map.h MEDIUM: map: uses HAProxy facilities to store default value 2015-03-13 14:10:30 +01:00
obj_type.h CLEANUP: applet: rename struct si_applet to applet 2015-04-23 17:56:16 +02:00
pattern.h MINOR: map: Add regex matching replacement 2016-02-10 23:38:34 +01:00
peers.h CLEANUP: proxy: remove last references to appsession 2015-08-10 19:42:30 +02:00
pipe.h [MEDIUM] introduce pipe pools 2009-01-25 13:49:53 +01:00
port_range.h [MEDIUM] add support for binding to source port ranges during connect 2009-06-10 12:23:32 +02:00
proto_http.h MINOR: filters/http: Slightly update the parsing of chunks 2016-02-09 14:53:15 +01:00
proto_udp.h MEDIUM: protocol: add minimalist UDP protocol client 2015-06-13 22:07:35 +02:00
protocol.h MEDIUM: listener: implement a per-protocol pause() function 2014-07-08 01:13:34 +02:00
proxy.h MINOR: filters: Extract proxy stuff from the struct filter 2016-02-09 14:53:15 +01:00
queue.h REORG/MAJOR: session: rename the "session" entity to "stream" 2015-04-06 11:23:56 +02:00
sample.h BUG/MINOR: http: remove stupid HTTP_METH_NONE entry 2015-09-03 17:15:21 +02:00
server.h MEDIUM: server: implement TCP_USER_TIMEOUT on the server 2015-10-13 16:18:27 +02:00
session.h MEDIUM: vars: move the session variables to the session, not the stream 2015-06-19 11:59:02 +02:00
signal.h [MEDIUM] signals: add support for registering functions and tasks 2010-08-27 18:00:40 +02:00
ssl_sock.h MEDIUM: Add support for updating TLS ticket keys via socket 2015-05-16 11:28:04 +02:00
stick_table.h MEDIUM: stick-tables: Add GPT0 in the stick tables 2015-08-20 17:13:47 +02:00
stream.h MINOR: filters: Add stream_filters structure to hide filters info 2016-02-09 14:53:15 +01:00
stream_interface.h MINOR: stream-int: add two flags to indicate an applet's wishes regarding I/O 2015-04-23 17:56:17 +02:00
task.h DIET/MINOR: task: reduce struct task size by 8 bytes 2013-12-09 16:06:22 +01:00
template.h [CLEANUP] included common/version.h everywhere 2006-06-29 18:54:54 +02:00
vars.h MINOR: samples: rename a struct from sample_storage to sample_data 2015-08-20 17:13:46 +02:00