From: Vsevolod Stakhov Date: Fri, 7 May 2010 22:21:05 +0000 (+0400) Subject: * Fix fuzzy storage interaction with old rspamd X-Git-Tag: 0.3.0~14^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a5b2977921dfdeee2cacdf4569dd662358775812;p=thirdparty%2Frspamd.git * Fix fuzzy storage interaction with old rspamd --- diff --git a/src/fuzzy_storage.c b/src/fuzzy_storage.c index 3be9997208..8957c9d353 100644 --- a/src/fuzzy_storage.c +++ b/src/fuzzy_storage.c @@ -668,6 +668,12 @@ accept_fuzzy_socket (int fd, short what, void *arg) struct rspamd_worker *worker = (struct rspamd_worker *)arg; struct fuzzy_session session; ssize_t r; + struct { + u_char cmd; + uint32_t blocksize; + int32_t value; + u_char hash[FUZZY_HASHLEN]; + } legacy_cmd; session.worker = worker; @@ -685,6 +691,16 @@ accept_fuzzy_socket (int fd, short what, void *arg) /* Assume that the whole command was read */ process_fuzzy_command (&session); } + else if (r == sizeof (legacy_cmd)) { + /* Process requests from old rspamd */ + memcpy (&legacy_cmd, session.pos, sizeof (legacy_cmd)); + session.cmd.cmd = legacy_cmd.cmd; + session.cmd.blocksize = legacy_cmd.blocksize; + session.cmd.value = legacy_cmd.value; + session.cmd.flag = 0; + memcpy (session.cmd.hash, legacy_cmd.hash, sizeof (legacy_cmd.hash)); + process_fuzzy_command (&session); + } else { msg_err ("got incomplete data while reading from socket: %d, %s", errno, strerror (errno)); return;