commit atftp for openSUSE:11.3
Hello community, here is the log from the commit of package atftp for openSUSE:11.3 checked in at Wed Nov 30 15:32:45 CET 2011. -------- --- old-versions/11.3/all/atftp/atftp.changes 2008-09-12 16:30:01.000000000 +0200 +++ 11.3/atftp/atftp.changes 2011-11-24 17:08:23.000000000 +0100 @@ -1,0 +2,6 @@ +Thu Nov 3 16:56:46 UTC 2011 - vcizek@suse.com + +- fixed the "Sorcerer's Apprentice Syndrome" bug + (bnc#727843) + +------------------------------------------------------------------- Package does not exist at destination yet. Using Fallback old-versions/11.3/all/atftp Destination is old-versions/11.3/UPDATES/all/atftp calling whatdependson for 11.3-i586 New: ---- atftp-0.7-sorcerers_apprentice.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ atftp.spec ++++++ --- /var/tmp/diff_new_pack.RqWTDs/_old 2011-11-30 15:27:51.000000000 +0100 +++ /var/tmp/diff_new_pack.RqWTDs/_new 2011-11-30 15:27:51.000000000 +0100 @@ -1,7 +1,7 @@ # -# spec file for package atftp (Version 0.7.0) +# spec file for package atftp # -# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -21,7 +21,7 @@ Name: atftp %define pkg_version 0.7 Version: 0.7.0 -Release: 132 +Release: 137.<RELEASE2> License: GPL v2 or later Group: System/Daemons BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -40,6 +40,8 @@ Patch6: atftp-0.7_bug-213384_OPT_NUMBER.patch Patch7: atftpd-0.7_unprotected_assignments_crash.patch Patch8: atftpd-0.7_circumvent_tftp_size_restrictions.patch +# PATCH-FIX-SUSE sorcerer's apprentice syndrome (bnc#727843) +Patch9: atftp-0.7-sorcerers_apprentice.patch # Summary: Advanced TFTP Server and Client @@ -69,6 +71,7 @@ %patch6 %patch7 %patch8 +%patch9 -p1 %build autoreconf -fi ++++++ atftp-0.7-sorcerers_apprentice.patch ++++++ Index: atftp-0.7/tftp_file.c =================================================================== --- atftp-0.7.orig/tftp_file.c 2011-11-22 15:12:53.792744083 +0100 +++ atftp-0.7/tftp_file.c 2011-11-22 15:13:51.706421893 +0100 @@ -605,6 +605,7 @@ int timeout_state = state; /* what state should we go on when timeout */ int result; long block_number = 0; + long last_requested_block = -1; long last_block = -1; int data_size; /* size of data received */ int sockfd = data->sockfd; /* just to simplify calls */ @@ -765,6 +766,17 @@ connected = 1; } block_number = ntohs(tftphdr->th_block); + + if (last_requested_block >= block_number) + { + if (data->trace) + fprintf(stderr, "received duplicated ACK <block: %ld >= %ld>\n", + last_requested_block, block_number); + break; + } + else + last_requested_block = block_number; + if (data->trace) fprintf(stderr, "received ACK <block: %ld>\n", block_number); Index: atftp-0.7/tftpd_file.c =================================================================== --- atftp-0.7.orig/tftpd_file.c 2011-11-22 15:12:53.793744112 +0100 +++ atftp-0.7/tftpd_file.c 2011-11-22 15:15:04.617534260 +0100 @@ -403,6 +403,7 @@ int timeout_state = state; int result; long block_number = 0; + long last_requested_block = -1; long last_block = -1; int block_loops = 0; int data_size; @@ -859,6 +860,32 @@ { logger(LOG_DEBUG, "received ACK <block: %d>", block_number); } + + /* check whether the block request isn't already fulfilled */ + + /* multicast, block numbers could contain gaps */ + if (multicast) { + if (last_requested_block >= block_number) + { + if (data->trace) + logger(LOG_DEBUG, "received duplicated ACK <block: %d >= %d>", last_requested_block, block_number); + break; + } + else + last_requested_block = block_number; + /* unicast, blocks should be requested one after another */ + } else { + if (last_requested_block + 1 != block_number && last_requested_block != -1) + { + if (data->trace) + logger(LOG_DEBUG, "received out of order ACK <block: %d != %d>", last_requested_block + 1, block_number); + break; + } + else + last_requested_block = block_number; + } + + if (ntohs(tftphdr->th_block) == 65535) { block_loops++; @@ -958,6 +985,8 @@ /* nedd to send an oack to that client */ state = S_SEND_OACK; fseek(fp, 0, SEEK_SET); + /* reset the last block received counter */ + last_requested_block = -1; } else { continue with "q"... Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@hilbert.suse.de