[evol] Librarian API work §3
[fix] Cyborg: try to stop harder (without useless delay)
[fix] Conversation: handle timer better when closing
[evol] Protocol/Interface: don't check for existence before node call, it is already done in call and a loss of time
[fix] method name mistake
[evol] Librarian API work §2
[evol] Librarian API work §1, using DI too
[evol] MapMaker API and internals rework §1, going forward to Dependency Injection using Needle
[evol] DNS API rework §1
[fix] Interface: intercept several possible errors around interface definition
[evol] API: implemented hidden nodes and used it to create a '?' node used to search children based on their attributes
[fix] DNS: don't fail if zone cannot be parsed (not a nice solution yet)
[fix] corrected MapMaker API
[fix] Protocol: check node existence asynchronously for CALL
[evol] Protocol/DSL: implemented node existence check
[evol] allow splitting the API interface declaration over multiple files/directories, split MapMaker interface, and added cross-nodes storage during the interface life (as we can't use closures across files)
[fix] recreate the whole API interface tree, root included, to ensure no clash is possible during concurrent calls
Merge branch '0.3.x' of ssh://rcs-git.duckcorp.org/rcs/git/duckcorp/cyborghood
[fix] Mail: don't forget to reverse-propagate the user into the original mail object when decrypting
[debug] more IMAP debug
[workaround] TMail does not respect RFC2045 §5.2
[evol] select and record I18n locale in DSL Task (future use)
[fix] clarify language/locale in I18nController
[fix] a task must have a name (and be unique, but this is not enforced yet)
[evol] BotnetTask DSL: now that we have one Task per task, close conversation thread as soon as the task is finished
[evol] Task DSL: rework to use the same Task objet for the same task (in order to have a proper count of tasks and be able to transport information easily through steps)
[fix] separate core api version from cyborg service api version
[fix] mistakes in API Interface: forgot to export node_name, and forgot :inspect is not available for nodes
[fix] mistake in variable name
[evol] server API tree reworked using a DSL (reply handling rework is WIP)
[evol] DNS: add better support for signed zones and serials, and partial support for slave zones
[evol] catch all remaining reactor errors
[fix] do not try to stop the bot by default
[fix] DSL: allow scheduled job to send back a reply
[cleanup] minor
[fix] missing config change leading to failure when generating server UNIX socket filename
[layout] reorganization
[evol] connect_peer: made most of the code generic to all backends
[evol] connect_peer: do not open multiple connections to the same peer while one is being attempted already
[fix] ConversationThread: register communication when communication is validated, not when peer info are received
[evol] ConversationThread: added convenience method for notification
[fix] remove traces of old Botnet DSL
[evol] Botnet Conversation: removed old idle check mecanism while preserving notification
[evol] Botnet Conversation: created a new idle threads check (old method is pending for removal)
[evol] Task-based client DSL §6 (added botnet 'ask' subtask)
[fix] Task-based client DSL: use :task instead of :thread from old DSL for task notification shortcut name
[evol] Task-based client DSL §5 (allow running subtasks in callbacks, implement 'meet' command, and fixed a race btw)
[evol] Task-based client DSL §4 (many fixes, helper, bot stop condition, more logging)
[evol] Task-based client DSL §3 (pass errors and results to next step)
[evol] Task-based client DSL §2 (Subtask and logger)
[evol] added preliminary work on new Task-based client DSL
[fix] DSL: correct mistake for outgoing notifications
[evol] DSL: partial implementation for wait_notification with callback (unfinished, but kept as example)
[evol] client DSL: reorganized notification code and move 'acts' (currently sending notifies) in the _start_dsl call
[evol] preliminary work for Conversation synchronization in DSL (action callbacks had to be moved from Protocol to ConversationThread to be able to check idle with the new locks, needed to process notifications without falling idle)
[evol] reworked notification system a bit (global registration)
[fix] corrected silly mistakes in Botnet DSL
[fix] don't crash if config or default config is empty
[evol] created a DSL for client-side calls (several conditions (calls only at the moment) can be joined together in order to exploit parallel tasks via asynchronous calls)
[evol] improve a bit how interface errors are transmitted
[evol] added convenience method to CALL directly from a thread
[fix] adapted Interface to recent changes, pass bot object, and correct api_methods() calculation
[fix] correct argument passing for send/receive_request_call
[evol] move notification from Protocol to Conversation
[fix] ensure pending threads are removed from the list when destroyed
[fix] ensure pending threads/conversations are uniquely registered
[evol] add system/user notif to bot level and detecte when a conversation is idle, to close it after used in connect_peer() with block
[evol] added a user event queue for NOTIFY EVENT received
[evol] internal notification when thread is idle allowed to mark thread closing pending
[evol] preliminary work for NOTIFY: closed thread are handled but close too early in most situations yet (need request/reply tracking)
[evol] conversation/bot protocol rework §8 (refs #30): preliminary client-side protocol handling
[fix] correct action_id generation (a reply should use the same id as the corresponding request)
[fix] interface: accept no data as empty list of arguments
[fix] interface: pattern check was broken
[fix] ensure ask_to_stop() waits gracefully for conversations to finish while stop() just stopp at once
[evol] partially implement receiving QUIT actions
[fix/evol] conversation/bot protocol rework §8 (refs #30)
[fix] BotNet: handle UNIX Socket connect failure (EM.connect fails at once, not via the handler)
[fix] workaround config loaded too late (i need to find a better way to select code in the included modules)
[evol] fix silly mistakes/typos
[evol] add client support to BotNet
[evol] use autoload to reduce explicit dependencies
[evol] unified BotNet interface for both client and servers (as a client is also a micro server)
[evol] moved EM loop in Cyborg, simplified and enhanced bot interface, and made Conversation common for any connection type
[fix] a few silly mistakes for the conversation
[evol] conversation/bot protocol rework §7 (refs #30)
[evol] conversation/bot protocol rework §6 (refs #30)
[evol] conversation/bot protocol rework §5 (refs #30)
[evol] conversation/bot protocol rework §4 (refs #30)
[evol] conversation/bot protocol rework §3 (refs #30)
[evol] conversation/bot protocol rework §2 (refs #30)
[evol] conversation protocol complete rework + work on action protocol §1 (refs #30)
[merge] from 0.3.2
[fix] tmail_gpg: remove final CRLF added to respect OpenPGP convention
[fix] use normalized mail/parts body (UNIX EOL is much appreciated by UNIX tools)
[evol] quick code to handle running an external script to reload the zone (needed for signed zones)
[fix] return error properly when attachment is missing, avoiding a crash (code is still not properly split in this branch)
[fix/security] Cyborg server interface: restrict non-leaf path lookup to containers
[fix] CyborgServerStatefulInterface must be a singleton