X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=xfer-src%2Fxfer.c;h=bc40cf343297a3dbf6831c5e3e1fd8c01f386cf2;hb=HEAD;hp=ac97198c34cc6d46d1a9afc9712e679354c3455c;hpb=b221e8dc16f345f8c8d7df8df71f4d36daaabb4c;p=debian%2Famanda diff --git a/xfer-src/xfer.c b/xfer-src/xfer.c index ac97198..bc40cf3 100644 --- a/xfer-src/xfer.c +++ b/xfer-src/xfer.c @@ -1,9 +1,10 @@ /* - * Copyright (c) 2008, 2009, 2010 Zmanda, Inc. All Rights Reserved. + * Copyright (c) 2008-2012 Zmanda, Inc. All Rights Reserved. * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 as published - * by the Free Software Foundation. + * 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 program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY @@ -269,7 +270,10 @@ xfer_cancel( { /* Since xfer_cancel can be called from any thread, we just send a message. * The action takes place when the message is received. */ - XferElement *src = g_ptr_array_index(xfer->elements, 0); + XferElement *src; + if (xfer->cancelled > 0) return; + xfer->cancelled++; + src = g_ptr_array_index(xfer->elements, 0); xfer_queue_message(xfer, xmsg_new(src, XMSG_CANCEL, 0)); }