Commit graph

155 commits

Author SHA1 Message Date
Sönke Ludwig 8f4222916f Weaken the task double-resumption assertion condition.
This assertion got triggered in a number of harmless situations and it's not always easy to avoid. Trying to avoid it, it has already caused a rather bad task starvation bug (#1441), so at this point it seems to be better to get rid of it.

See also #1407

(cherry picked from commit 621e34b388848c762a7525149ea449ad082996a1)
2016-04-10 14:40:39 +02:00
Sönke Ludwig 27e0019e44 Fix regression in FreeListRef where no memory was allocated for the ref count. Fixes #1432.
Commit 6be5471 switched FreeListRef to use FreeListObjectAlloc underneath, but didn't accound for the extra memory that is needed to store the reference count directly after the object payload. The possible implications of this are memory corruption and memory leaks, although with the predefined allocator setip, this will only happen to types with a POT size or slightly less.

This commit adds an "EXTRA" template type parameter to FreeListObjectAlloc that is used to determine the additional amount of allocated memory, which is set to "int" in the case of FreeListRef.

(cherry picked from commit d78a9ce89b845e4f89a84bd70bbd48c7595463d4)

(cherry picked from commit 613d15926e241c03e75bb2d237d39ba712613aeb)
2016-04-10 14:40:39 +02:00
Sönke Ludwig 3a6583b375 Explictly avoid double-resumption of tasks during Libevent2TCPConnection.close().
The previous fix for #1376 resulted in a possible task starvation when the peer reset the connection before the outbound buffer was drained. The new approach now always resumes the waiting task exactly once, no matter how many events happen and no matter in which order.

(cherry picked from commit 350130a2b05cfbf12764ffaa6a86403eacf172d9)
2016-04-10 14:40:38 +02:00
Martin Nowak dc9002de0e make splitting of log lines configurable
- it might make sense to have newlines in a log message
  (e.g. when printing a backtrace) and they shouldn't
  be split into multiple log messages, e.g. when using syslog
- the splitting was fixed to work with more than one LF

(cherry picked from commit d14ce3dea1b98227dcd116acc6b175c56d9a1fb0)
2016-04-10 14:40:38 +02:00
Sönke Ludwig 7e2d1dd038 Initial commit.
The library is able to support simple TCP servers in the current state. The API is still mostly compatible with mainline vibe.d, but the driver systen has been replaced by the eventcore library and sockets/files/timers/... are now structs with automatic reference counting instead of GC collected classes. The stream interfaces have been removed for now.
2016-03-01 20:30:42 +01:00