X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Ffragmentation%2Fdefragmentation.c;h=bbe6f3741c1e49cec545bdca24c6d764fbcf3dd2;hb=4e35e0bacaf1a6e2ab7a98f0a729f5ea493aef3d;hp=a890842873f7dbfbfefa2ccc016f27239a3c9036;hpb=00f87691363acaf94f533793654e610e46bf4e1d;p=oweals%2Fgnunet.git diff --git a/src/fragmentation/defragmentation.c b/src/fragmentation/defragmentation.c index a89084287..bbe6f3741 100644 --- a/src/fragmentation/defragmentation.c +++ b/src/fragmentation/defragmentation.c @@ -1,21 +1,21 @@ /* This file is part of GNUnet - Copyright (C) 2009, 2011 Christian Grothoff (and other contributing authors) + Copyright (C) 2009, 2011 GNUnet e.V. - GNUnet 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 3, or (at your - option) any later version. + GNUnet is free software: you can redistribute it and/or modify it + under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, + or (at your option) any later version. GNUnet 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. + Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . - You should have received a copy of the GNU General Public License - along with GNUnet; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. + SPDX-License-Identifier: AGPL3.0-or-later */ /** * @file src/fragmentation/defragmentation.c @@ -258,11 +258,9 @@ GNUNET_DEFRAGMENT_context_destroy (struct GNUNET_DEFRAGMENT_Context *dc) * Send acknowledgement to the other peer now. * * @param cls the message context - * @param tc the scheduler context */ static void -send_ack (void *cls, - const struct GNUNET_SCHEDULER_TaskContext *tc) +send_ack (void *cls) { struct MessageContext *mc = cls; struct GNUNET_DEFRAGMENT_Context *dc = mc->dc; @@ -508,7 +506,7 @@ GNUNET_DEFRAGMENT_process_fragment (struct GNUNET_DEFRAGMENT_Context *dc, if (n == 64) mc->bits = UINT64_MAX; /* set all 64 bit */ else - mc->bits = (1LL << n) - 1; /* set lowest 'bits' bit */ + mc->bits = (1LLU << n) - 1; /* set lowest 'bits' bit */ if (dc->list_size >= dc->num_msgs) discard_oldest_mc (dc); GNUNET_CONTAINER_DLL_insert (dc->head, @@ -518,11 +516,11 @@ GNUNET_DEFRAGMENT_process_fragment (struct GNUNET_DEFRAGMENT_Context *dc, } /* copy data to 'mc' */ - if (0 != (mc->bits & (1LL << bit))) + if (0 != (mc->bits & (1LLU << bit))) { - mc->bits -= 1LL << bit; + mc->bits -= 1LLU << bit; mbuf = (char *) &mc[1]; - memcpy (&mbuf[bit * (dc->mtu - sizeof (struct FragmentHeader))], &fh[1], + GNUNET_memcpy (&mbuf[bit * (dc->mtu - sizeof (struct FragmentHeader))], &fh[1], ntohs (msg->size) - sizeof (struct FragmentHeader)); mc->last_update = now; if (bit < mc->last_bit) @@ -545,7 +543,7 @@ GNUNET_DEFRAGMENT_process_fragment (struct GNUNET_DEFRAGMENT_Context *dc, /* count number of missing fragments after the current one */ bc = 0; for (b = bit; b < 64; b++) - if (0 != (mc->bits & (1LL << b))) + if (0 != (mc->bits & (1LLU << b))) bc++; else bc = 0; @@ -566,8 +564,8 @@ GNUNET_DEFRAGMENT_process_fragment (struct GNUNET_DEFRAGMENT_Context *dc, { dc->latency = estimate_latency (mc); } - delay = GNUNET_TIME_relative_multiply (dc->latency, - bc + 1); + delay = GNUNET_TIME_relative_saturating_multiply (dc->latency, + bc + 1); if ( (last + fid == num_fragments) || (0 == mc->bits) || (GNUNET_YES == duplicate) )