]> source.dussan.org Git - rspamd.git/commitdiff
* Fix fuzzy storage interaction with old rspamd
authorVsevolod Stakhov <none@none>
Fri, 7 May 2010 22:21:05 +0000 (02:21 +0400)
committerVsevolod Stakhov <none@none>
Fri, 7 May 2010 22:21:05 +0000 (02:21 +0400)
src/fuzzy_storage.c

index 3be9997208a821518dc7851ab44b135a388fd5a0..8957c9d353801eea17df35257b00c9310b2fa0e7 100644 (file)
@@ -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;