forked from pool/atftp
Accepting request 93259 from home:vitezslav_cizek:branches:network
- licence in spdx format - fixed the "Sorcerer's Apprentice Syndrome" bug (bnc#727843) OBS-URL: https://build.opensuse.org/request/show/93259 OBS-URL: https://build.opensuse.org/package/show/network/atftp?expand=0&rev=11
This commit is contained in:
parent
1abbc5a8fc
commit
a0ad000cb3
84
atftp-0.7-sorcerers_apprentice.patch
Normal file
84
atftp-0.7-sorcerers_apprentice.patch
Normal file
@ -0,0 +1,84 @@
|
||||
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
|
||||
{
|
@ -1,3 +1,14 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Nov 9 15:13:18 UTC 2011 - vcizek@suse.com
|
||||
|
||||
- licence in spdx format
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Nov 3 16:56:46 UTC 2011 - vcizek@suse.com
|
||||
|
||||
- fixed the "Sorcerer's Apprentice Syndrome" bug
|
||||
(bnc#727843)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Sep 17 13:28:52 UTC 2011 - jengelh@medozas.de
|
||||
|
||||
|
@ -22,7 +22,7 @@ Name: atftp
|
||||
Summary: Advanced TFTP Server and Client
|
||||
Version: 0.7.0
|
||||
Release: 145
|
||||
License: GPLv2+
|
||||
License: GPL-2.0+
|
||||
Group: System/Daemons
|
||||
Url: ftp://ftp.mamalinux.com/pub/atftp/
|
||||
Source: %{name}-%{pkg_version}.tar.bz2
|
||||
@ -37,10 +37,11 @@ Patch5: atftp-0.7_sol_ip.patch
|
||||
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 syndrom (bnc#727843)
|
||||
Patch9: atftp-0.7-sorcerers_apprentice.patch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
PreReq: %insserv_prereq %fillup_prereq
|
||||
PreReq: pwdutils
|
||||
BuildRequires: pwdutils
|
||||
BuildRequires: pcre-devel readline-devel tcpd-devel
|
||||
Conflicts: tftp
|
||||
Recommends: logrotate
|
||||
@ -64,6 +65,7 @@ boot of hundreds of machines simultaneously.
|
||||
%patch6
|
||||
%patch7
|
||||
%patch8
|
||||
%patch9 -p1
|
||||
|
||||
%build
|
||||
autoreconf -fi
|
||||
|
Loading…
Reference in New Issue
Block a user