it can return a pointer to a static location, as described in the manpage.
This can happen on a Linux system with a foreign locale, where the LANG=C messages are
returned this way. (BB #1403)
git-svn: trunk@4827
This means that IDSESSION/INSTREAM must be sent as nIDSESSION\n or zIDSESSION\0,
ditto for INSTREAM.
Adjust testcases accordingly.
Old commands are still accepted when sent without delimiter.
git-svn: trunk@4811
since a buggy client implementation may get stuck in send(), and then clamd
gets stuck in send() -> deadlock. To avoid this we need nonblocking sockets, and
(low) timeouts on send.
Add more tests for clamd protocol, including a stress test for IDSESSION.
git-svn: trunk@4798
Make handling of old-style commands compatible with old clamd: if they have a \n
that will delimit the command.
If multiscan of a single file encounters errors, don't reply OK too.
git-svn: trunk@4796
handle multiple %v parameters
introduce poll_fds that also does the read into a buffer
introduce thrmgr_group* commands for keeping track of groups of commands
(multiscan, IDSESSION)
introduce 2 queues in thrmgr, multiscan queues get lower priority. Commands
are processed from both queues in a 4:1 ratio to avoid starvation.
unify reply code: conn_reply*
unify scanner code into scan_callback that is called from cli_ftw
multiscan doesn't need stat() now if readdir() provides dt_type
redesign clamd main loop: there is now an accept thread, and a
recv()/dispatch thread, +MaxThreads worker (scanner) threads.
introduce limiting on commands when worker threads are contended.
introduce IDSESSION, a replacement for the old SESSION command, that allows
asyncronous (scan) commands and scan replies
introduce INSTREAM that allows sending the data to scan on same connection
(vs STREAM that requires another port)
introduce zCOMMANDS
git-svn: trunk@4755
new top-like tool using ncurses: clamdtop
it shows what clamd is currently scanning (and since how long),
including which file(s) multiscan is working on currently,
how many items it has in the queue (and since how long they are waiting),
how many active/idle threads it has,
memory usage statistics,
can monitor local or remote clamd
git-svn: trunk@4324
if there is a version.h.static use that instead of output from svnversion
use get_version(), tools outside libclamav shouldn't rely on libclamav version
exception: clamconf itself needs both, and the milter shows both
git-svn: trunk@4076
m4/fdpassing.m4: move all FD passing checks here
clamd/session.[ch], scanner.[ch]:
contrib/clamd_fdscan:
add rfc2292/bsd4.4 style file descriptor passing support
this code is from Marc Balmer <marc*msys.ch>, with some portability
fixes applied
git-svn: trunk@3849
available, and falls back to locking with a mutex around
ctime(). (ensures we are using the same mutex always).
use cli_ctime() instead of the thread-unsafe ctime().
This fixes stability problems.
git-svn: trunk@3578