GC: fix garbage collector size after a realloc of cells

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
Core: on session run, always restore session_request

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
Map: new static_add_ref() method. Link a callback by reference

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
Core: on segfault... abort

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
Event: new create_signal_fd() method

This new method allows to create a Linux eventfd and register it inside
the core to receive event notifications. Its useful when using customized
threads and requires to receive events through a polling mechanism.

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
HTTP: add support for OPTIONS method

Signed-off-by: Nil Croustillac <nilcroustillac@gmail.com>
Signed-off-by: Eduardo Silva <edsiper@gmail.com>
Map: when adding a static map set callback field to NULL

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
Response: new method headers_off()

When using this method inside a callback, it will instruct the core
to do not check if the headers were sent in the response. It will
also do not try to send them.

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
Event: when delete() event, drop entry from Monkey core

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
Request: new method header_contains()

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
Event: validate creation of eventfd for user-defined workers

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
Request: set headers_off to False by default

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
Core: do not log to console invalid map methods

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
Core: fixes when handling connections.

When a new request arrives to Duda I/O, it lookups for a current context
to try to re-use that slot allocation (mostly used on KeepAlive sessions).

There is a un-reproducible bug where sometimes the lookup returns
a duda_request_t that belongs to an old connection so it contains invalid
refereced data. I still cannot trap from where it comes from, as a workaround
for every service_run() call, we re-set the Monkey client_session (cs) and
session_request (sr) to the duda_request_t context.

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
Event: for signaling feature use pipe(2) instead of eventfd(2)

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
Core: on initialize threads, zeroed variables

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
Core: initialize services after thread key creations

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
FConf: add alias duda_string_line

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
Worker: notify when an user-defined worker thread ends

If a scheduled worker by the user "ends", print a message to the
screen and do not exit the thread, just put it to sleep. In
future versions we should allow to register a callback for when
this happen so the user can define some behavior.

Signed-off-by: Eduardo Silva <edsiper@gmail.com>
Map: do not write to console when the URI do not match an interface method

Signed-off-by: Eduardo Silva <edsiper@gmail.com>