]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
* Try to fix memmove issues in io dispatcher
authorVsevolod Stakhov <vsevolod@rambler-co.ru>
Mon, 21 Jun 2010 16:14:00 +0000 (20:14 +0400)
committerVsevolod Stakhov <vsevolod@rambler-co.ru>
Mon, 21 Jun 2010 16:14:00 +0000 (20:14 +0400)
* Remove debug from SURBL module

src/buffer.c
src/plugins/surbl.c

index 899b42fee282797dce479c47576f09cd213d53cf..4351344fcdc1fa6662e49629f9cf28d817bd680e 100644 (file)
@@ -337,8 +337,6 @@ read_buffers (int fd, rspamd_io_dispatcher_t * d, gboolean skip_read)
                                        /* Include EOL in reply */
                                        res.len ++;
                                }
-                               /* Set new begin of line */
-                               b = c + 1;
                                /* Call callback for a line */
                                if (d->read_callback) {
                                        if (!d->read_callback (&res, d->user_data)) {
@@ -348,14 +346,22 @@ read_buffers (int fd, rspamd_io_dispatcher_t * d, gboolean skip_read)
                                                /* Drain buffer as policy is changed */
                                                len = &d->in_buf->data->len;
                                                pos = &d->in_buf->pos;
-                                               memmove (d->in_buf->data->begin, b, c - b + 1);
-                                               *len = c - b + 1;
-                                               *pos = d->in_buf->data->begin + *len;
+                                               if (c != *pos) {
+                                                               memmove (d->in_buf->data->begin, c + 1, *len - r - 1);
+                                                               *len = *len -r - 1;
+                                                               *pos = d->in_buf->data->begin + *len;
+                                               }
+                                               else {
+                                                       *len = 0;
+                                                       *pos = d->in_buf->data->begin;
+                                               }
                                                debug_ip (d->peer_addr, "policy changed during callback, restart buffer's processing");
                                                read_buffers (fd, d, TRUE);
                                                return;
                                        }
                                }
+                               /* Set new begin of line */
+                               b = c + 1;
                        }
                        r++;
                        c++;
index 4219bdd3d91444d4c944bb85b135e10d316723f7..bee37e209842611c72f246cfd1729692b5df5ef7 100644 (file)
@@ -382,12 +382,6 @@ format_surbl_request (memory_pool_t * pool, f_str_t * hostname, struct suffix_it
                        r = snprintf (result, len, "%*s",
                                        (int)(hostname->len - (dots[dots_num - 2] - hostname->begin + 1)),
                                        dots[dots_num - 2] + 1);
-                       for (i = 0; i < dots_num; i ++) {
-                               msg_info ("dot: %d, data: %*s", i, 
-                                       (int)(hostname->len - (dots[i] - hostname->begin + 1)),
-                                       dots[i] + 1);
-                       
-                       }
                }
                else {
                        r = snprintf (result, len, "%*s", (int)hostname->len, hostname->begin);