Mailinglist Archive: opensuse-commit (1406 mails)

< Previous Next >
commit atftp for openSUSE:12.1:Update:Test
Hello community,

here is the log from the commit of package atftp for openSUSE:12.1:Update:Test
checked in at 2011-11-30 18:51:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:12.1:Update:Test/atftp (Old)
and /work/SRC/openSUSE:12.1:Update:Test/.atftp.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "atftp", Maintainer is "VCizek@xxxxxxxx"

Changes:
--------
--- /work/SRC/openSUSE:12.1:Update:Test/atftp/atftp.changes 2011-11-30
18:51:12.000000000 +0100
+++ /work/SRC/openSUSE:12.1:Update:Test/.atftp.new/atftp.changes
2011-11-30 18:51:12.000000000 +0100
@@ -1,0 +2,6 @@
+Thu Nov 3 16:56:46 UTC 2011 - vcizek@xxxxxxxx
+
+- fixed the "Sorcerer's Apprentice Syndrome" bug
+ (bnc#727843)
+
+-------------------------------------------------------------------

New:
----
atftp-0.7-sorcerers_apprentice.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ atftp.spec ++++++
--- /var/tmp/diff_new_pack.zNLhEy/_old 2011-11-30 18:51:13.000000000 +0100
+++ /var/tmp/diff_new_pack.zNLhEy/_new 2011-11-30 18:51:13.000000000 +0100
@@ -38,6 +38,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
BuildRoot: %{_tmppath}/%{name}-%{version}-build
PreReq: %insserv_prereq %fillup_prereq
PreReq: pwdutils
@@ -65,6 +67,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
{
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-commit+help@xxxxxxxxxxxx

< Previous Next >
This Thread
  • No further messages