Merge tag 'upstream/3.3.3'
[debian/amanda] / xfer-src / dest-null.c
index 5167ceb29ec3f15ad991912a08702fdedbeb72b6..3c538727c621a95687208b58a93b78d101b0edb2 100644 (file)
@@ -1,24 +1,27 @@
 /*
  * Amanda, The Advanced Maryland Automatic Network Disk Archiver
- * Copyright (c) 2008 Zmanda Inc.
+ * Copyright (c) 2008-2012 Zmanda, Inc.  All Rights Reserved.
  *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
  *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
  *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ *
+ * Contact information: Zmanda Inc., 465 S. Mathilda Ave., Suite 300
+ * Sunnyvale, CA 94085, USA, or: http://www.zmanda.com
  */
 
-#include "amxfer.h"
 #include "amanda.h"
+#include "amxfer.h"
 #include "simpleprng.h"
 
 /*
@@ -49,6 +52,7 @@ typedef struct XferDestNull {
 
     gboolean do_verify;
     simpleprng_state_t prng;
+    guint64 byte_position;
 } XferDestNull;
 
 /*
@@ -76,13 +80,15 @@ push_buffer_impl(
 
     if (self->do_verify && !elt->cancelled) {
        if (!simpleprng_verify_buffer(&self->prng, buf, len)) {
-           xfer_element_handle_error(elt,
-               _("verification of incoming bytestream failed"));
+           xfer_cancel_with_error(elt,
+               "verification of incoming bytestream failed; see stderr for details"),
+           wait_until_xfer_cancelled(elt->xfer);
            amfree(buf);
            return;
        }
     }
 
+    self->byte_position += len;
     if (!self->sent_info) {
        /* send a superfluous message (this is a testing XferElement,
         * after all) */
@@ -101,8 +107,8 @@ class_init(
 {
     XferElementClass *klass = XFER_ELEMENT_CLASS(selfc);
     static xfer_element_mech_pair_t mech_pairs[] = {
-       { XFER_MECH_PUSH_BUFFER, XFER_MECH_NONE, 0, 0},
-       { XFER_MECH_NONE, XFER_MECH_NONE, 0, 0},
+       { XFER_MECH_PUSH_BUFFER, XFER_MECH_NONE, XFER_NROPS(0), XFER_NTHREADS(0) },
+       { XFER_MECH_NONE, XFER_MECH_NONE, XFER_NROPS(0), XFER_NTHREADS(0) },
     };
 
     klass->push_buffer = push_buffer_impl;
@@ -150,7 +156,6 @@ xfer_dest_null(
        self->do_verify = TRUE;
        simpleprng_seed(&self->prng, prng_seed);
     } else {
-       g_assert(0);
        self->do_verify = FALSE;
     }