Hello community, here is the log from the commit of package atftp for openSUSE:12.3 checked in at 2013-02-14 21:41:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:12.3/atftp (Old) and /work/SRC/openSUSE:12.3/.atftp.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "atftp", Maintainer is "vci...@suse.com" Changes: -------- --- /work/SRC/openSUSE:12.3/atftp/atftp.changes 2013-02-14 20:33:28.000000000 +0100 +++ /work/SRC/openSUSE:12.3/.atftp.new/atftp.changes 2013-02-14 21:42:00.000000000 +0100 @@ -2,29 +1,0 @@ -Thu Feb 7 13:05:52 UTC 2013 - vci...@suse.com - -- create capabilites provided by both tftp and atftp - (bnc#801481 or bnc#725378) - -------------------------------------------------------------------- -Thu Jan 3 13:28:02 UTC 2013 - vci...@suse.com - -- change ownership of /srv/tftpboot, because atftpd running as - tftp:tftp can't write to that directory -- create pid directory on service start -- manpage changes: - * substitute /tftpboot with /srv/tftpboot - * default user is now tftp:tftp - * added patches: - atftp-0.7-default_user_man.patch - atftp-0.7-default_dir_man.patch - -------------------------------------------------------------------- -Mon Oct 8 08:49:53 UTC 2012 - vci...@suse.com - -- use Vladimir Nadvornik's heuristic for packet retransmission - by default (see bnc#774376) - The RFC1350 compliant behaviour stays optional. - (added atftp-0.7-ack_heuristic.patch) -- merged the two sorcerer's apprentice syndrome patches to one - (removed atftp-0.7-prevent-sas.patch) - -------------------------------------------------------------------- Old: ---- atftp-0.7-ack_heuristic.patch atftp-0.7-default_dir_man.patch atftp-0.7-default_user_man.patch New: ---- atftp-0.7-prevent-sas.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ atftp.spec ++++++ --- /var/tmp/diff_new_pack.mx3HhZ/_old 2013-02-14 21:42:01.000000000 +0100 +++ /var/tmp/diff_new_pack.mx3HhZ/_new 2013-02-14 21:42:01.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package atftp # -# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2012 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 @@ -44,14 +44,8 @@ Patch9: atftp-0.7-sorcerers_apprentice.patch # PATCH-FIX-SUSE server receive thread race (bnc#599856) Patch10: atftp-0.7-server_receive_race.patch -# PATCH-FIX-SUSE drop one duplicated ACK each round (bnc#774376) -Patch12: atftp-0.7-ack_heuristic.patch -Patch13: atftp-0.7-default_user_man.patch -# PATCH-FIX-SUSE update default directory in man (bnc#507011) -Patch14: atftp-0.7-default_dir_man.patch +Patch11: atftp-0.7-prevent-sas.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build -Provides: tftp(client) -Provides: tftp(server) PreReq: %insserv_prereq %fillup_prereq PreReq: pwdutils BuildRequires: autoconf @@ -83,9 +77,7 @@ %patch8 %patch9 -p1 %patch10 -p0 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 +%patch11 -p1 %build autoreconf -fi @@ -142,8 +134,7 @@ %{_mandir}/man8/atftpd.8.gz %{_mandir}/man8/in.tftpd.8.gz %config %{_fwdefdir}/atftp -%dir %attr(0750,tftp,tftp) /srv/tftpboot -%dir %attr(0750,tftp,tftp) /var/log/atftpd/ -%ghost %dir /var/run/atftpd +%dir %attr(0750,root,tftp) /srv/tftpboot +%dir %attr(0750,tftp,root) /var/log/atftpd/ %changelog ++++++ atftp-0.7-prevent-sas.patch ++++++ Index: atftp-0.7/tftpd.c =================================================================== --- atftp-0.7.orig/tftpd.c 2012-09-11 13:55:28.303292010 +0200 +++ atftp-0.7/tftpd.c 2012-09-11 13:58:20.701437613 +0200 @@ -62,6 +62,7 @@ int retry_timeout = S_TIMEOUT; int tftpd_daemon = 0; /* By default we are started by inetd */ int tftpd_daemon_no_fork = 0; /* For who want a false daemon mode */ +int tftpd_prevent_sas = 0; /* For who don't want the sorcerer's apprentice syndrome */ short tftpd_port = 0; /* Port atftpd listen to */ char tftpd_addr[MAXLEN] = ""; /* IP address atftpd binds to */ @@ -833,6 +834,7 @@ int tftpd_cmd_line_options(int argc, cha { "mtftp", 1, NULL, OPT_MTFTP }, { "mtftp-port", 1, NULL, OPT_MTFTP_PORT }, #endif + { "prevent-sas", 0, NULL, 'X' }, { "no-source-port-checking", 0, NULL, OPT_PORT_CHECK }, { "mcast-switch-client", 0, NULL, OPT_MCAST_SWITCH }, { "version", 0, NULL, 'V' }, @@ -896,6 +898,9 @@ int tftpd_cmd_line_options(int argc, cha case 'N': tftpd_daemon_no_fork = 1; break; + case 'X': + tftpd_prevent_sas = 1; + break; case 'U': tmp = strtok(optarg, "."); if (tmp != NULL) @@ -1120,6 +1125,7 @@ void tftpd_usage(void) " --pidfile <file> : write PID to this file\n" " --daemon : run atftpd standalone (no inetd)\n" " --no-fork : run as a daemon, don't fork\n" + " --prevent-sas : prevent Sorcerer's Apprentice Syndrome\n" " --user <user[.group]> : default is nobody\n" " --group <group> : default is nogroup\n" " --port <port> : port on which atftp listen\n" Index: atftp-0.7/tftpd_file.c =================================================================== --- atftp-0.7.orig/tftpd_file.c 2012-09-11 13:55:28.405295054 +0200 +++ atftp-0.7/tftpd_file.c 2012-09-11 13:55:28.422295562 +0200 @@ -55,6 +55,7 @@ extern char directory[MAXLEN]; /* read only except for the main thread */ extern int tftpd_cancel; +extern int tftpd_prevent_sas; #ifdef HAVE_PCRE extern tftpd_pcre_self_t *pcre_top; @@ -863,31 +864,31 @@ int tftpd_send_file(struct thread_data * 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; + /* if turned on, check whether the block request isn't already fulfilled */ + if (tftpd_prevent_sas) { + /* 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; } - else - last_requested_block = block_number; } - if (ntohs(tftphdr->th_block) == 65535) { block_loops++; Index: atftp-0.7/tftp_file.c =================================================================== --- atftp-0.7.orig/tftp_file.c 2012-09-11 13:55:28.387294518 +0200 +++ atftp-0.7/tftp_file.c 2012-09-11 13:55:28.422295562 +0200 @@ -49,6 +49,7 @@ #define NB_BLOCK 2048 extern int tftp_cancel; +extern int tftp_prevent_sas; /* * Find a hole in the file bitmap. @@ -767,15 +768,18 @@ int tftp_send_file(struct client_data *d } 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; + /* if turned on, check whether the block request isn't already fulfilled */ + if (tftp_prevent_sas) { + 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; } - else - last_requested_block = block_number; if (data->trace) fprintf(stderr, "received ACK <block: %ld>\n", Index: atftp-0.7/tftp.c =================================================================== --- atftp-0.7.orig/tftp.c 2012-09-11 13:55:28.255290577 +0200 +++ atftp-0.7/tftp.c 2012-09-11 14:01:13.437593304 +0200 @@ -57,6 +57,7 @@ /* defined as extern in tftp_file.c and mtftp_file.c, set by the signal handler */ int tftp_cancel = 0; +int tftp_prevent_sas = 0; /* local flags */ int interactive = 1; /* if false, we run in batch mode */ @@ -982,6 +983,7 @@ int tftp_cmd_line_options(int argc, char #endif { "mtftp", 1, NULL, '1'}, { "no-source-port-checking", 0, NULL, '0'}, + { "prevent-sas", 0, NULL, 'X'}, { "verbose", 0, NULL, 'v'}, { "trace", 0, NULL, 'd'}, #if DEBUG @@ -1086,6 +1088,9 @@ int tftp_cmd_line_options(int argc, char case '0': data.checkport = 0; break; + case 'X': + tftp_prevent_sas = 1; + break; case 'v': snprintf(string, sizeof(string), "verbose on"); make_arg(string, &ac, &av); @@ -1182,6 +1187,7 @@ void tftp_usage(void) " --mtftp <\"name value\"> : set mtftp variable to value\n" #endif " --no-source-port-checking: violate RFC, see man page\n" + " --prevent-sas : prevent Sorcerer's Apprentice Syndrome\n" " --verbose : set verbose mode on\n" " --trace : set trace mode on\n" #if DEBUG Index: atftp-0.7/atftpd.8 =================================================================== --- atftp-0.7.orig/atftpd.8 2004-03-06 21:41:40.000000000 +0100 +++ atftp-0.7/atftpd.8 2012-09-11 13:55:28.423295591 +0200 @@ -180,6 +180,14 @@ implication. Be aware that this option v option has effect only for non-multicast transfer. .TP +.B \-\-prevent\-sas +Address the Sorcerer's Apprentice Syndrome situation as requested by RFC 1350. +This RFC requires repeated responses to a single packet to be +rejected. Thus a block will only get retransmitted on a timeout. +For backward compatibility, the default stays to ignore this RFC. +So blocks get transmitted on every request. + +.TP .B \-\-mcast\-switch\-client This option allow the server to proceed with the next multicast client as soon as the current client timeout. When the current master client Index: atftp-0.7/atftp.1 =================================================================== --- atftp-0.7.orig/atftp.1 2004-03-06 21:41:40.000000000 +0100 +++ atftp-0.7/atftp.1 2012-09-11 13:55:28.423295591 +0200 @@ -77,6 +77,14 @@ to configure client side port to use. See atftpd's man page. .TP +.B \-\-prevent\-sas +Address the Sorcerer's Apprentice Syndrome situation as requested by RFC 1350. +This RFC requires repeated responses to a single packet to be +rejected. Thus a block will only get retransmitted on a timeout. +For backward compatibility, the default stays to ignore this RFC. +So blocks get transmitted on every request. + +.TP .B \-\-verbose Instruct atftp to be verbose. It will print more information about what's going on. ++++++ atftp-0.7-sorcerers_apprentice.patch ++++++ --- /var/tmp/diff_new_pack.mx3HhZ/_old 2013-02-14 21:42:01.000000000 +0100 +++ /var/tmp/diff_new_pack.mx3HhZ/_new 2013-02-14 21:42:01.000000000 +0100 @@ -1,15 +1,8 @@ -diff -u atftp-0.7/tftp_file.c atftp-0.7/tftp_file.c ---- atftp-0.7/tftp_file.c 2012-03-27 11:39:59.441167084 +0200 -+++ atftp-0.7/tftp_file.c 2012-09-11 13:55:28.422295562 +0200 -@@ -49,6 +49,7 @@ - #define NB_BLOCK 2048 - - extern int tftp_cancel; -+extern int tftp_prevent_sas; - - /* - * Find a hole in the file bitmap. -@@ -605,6 +606,7 @@ +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; @@ -17,39 +10,29 @@ long last_block = -1; int data_size; /* size of data received */ int sockfd = data->sockfd; /* just to simplify calls */ -@@ -765,6 +767,20 @@ +@@ -765,6 +766,17 @@ connected = 1; } block_number = ntohs(tftphdr->th_block); + -+ /* if turned on, check whether the block request isn't already fulfilled */ -+ if (tftp_prevent_sas) { -+ 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 (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); -diff -u atftp-0.7/tftpd_file.c atftp-0.7/tftpd_file.c ---- atftp-0.7/tftpd_file.c 2012-03-30 14:02:04.335089843 +0200 -+++ atftp-0.7/tftpd_file.c 2012-09-11 13:55:28.422295562 +0200 -@@ -55,6 +55,7 @@ - extern char directory[MAXLEN]; - /* read only except for the main thread */ - extern int tftpd_cancel; -+extern int tftpd_prevent_sas; - - #ifdef HAVE_PCRE - extern tftpd_pcre_self_t *pcre_top; -@@ -403,6 +404,7 @@ +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; @@ -57,50 +40,40 @@ long last_block = -1; int block_loops = 0; int data_size; -@@ -785,6 +787,10 @@ - inet_ntoa(client_info->client.sin_addr), - ntohs(client_info->client.sin_port)); - sa = &client_info->client; -+ -+ /* rewind the last_requested_block counter */ -+ last_requested_block = -1; -+ - state = S_SEND_OACK; - break; - } -@@ -858,5 +864,31 @@ +@@ -859,6 +860,32 @@ + { logger(LOG_DEBUG, "received ACK <block: %d>", block_number); } + -+ /* if turned on, check whether the block request isn't already fulfilled */ -+ if (tftpd_prevent_sas) { -+ /* 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; ++ /* 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 +990,8 @@ +@@ -958,6 +985,8 @@ /* nedd to send an oack to that client */ state = S_SEND_OACK; fseek(fp, 0, SEEK_SET); @@ -109,117 +82,3 @@ } else { -only in patch2: -unchanged: ---- atftp-0.7.orig/tftpd.c 2012-09-11 13:55:28.303292010 +0200 -+++ atftp-0.7/tftpd.c 2012-09-11 13:58:20.701437613 +0200 -@@ -62,6 +62,7 @@ int retry_timeout = S_TIMEOUT; - - int tftpd_daemon = 0; /* By default we are started by inetd */ - int tftpd_daemon_no_fork = 0; /* For who want a false daemon mode */ -+int tftpd_prevent_sas = 0; /* For who don't want the sorcerer's apprentice syndrome */ - short tftpd_port = 0; /* Port atftpd listen to */ - char tftpd_addr[MAXLEN] = ""; /* IP address atftpd binds to */ - -@@ -833,6 +834,7 @@ int tftpd_cmd_line_options(int argc, cha - { "mtftp", 1, NULL, OPT_MTFTP }, - { "mtftp-port", 1, NULL, OPT_MTFTP_PORT }, - #endif -+ { "prevent-sas", 0, NULL, 'X' }, - { "no-source-port-checking", 0, NULL, OPT_PORT_CHECK }, - { "mcast-switch-client", 0, NULL, OPT_MCAST_SWITCH }, - { "version", 0, NULL, 'V' }, -@@ -896,6 +898,9 @@ int tftpd_cmd_line_options(int argc, cha - case 'N': - tftpd_daemon_no_fork = 1; - break; -+ case 'X': -+ tftpd_prevent_sas = 1; -+ break; - case 'U': - tmp = strtok(optarg, "."); - if (tmp != NULL) -@@ -1120,6 +1125,7 @@ void tftpd_usage(void) - " --pidfile <file> : write PID to this file\n" - " --daemon : run atftpd standalone (no inetd)\n" - " --no-fork : run as a daemon, don't fork\n" -+ " --prevent-sas : prevent Sorcerer's Apprentice Syndrome\n" - " --user <user[.group]> : default is nobody\n" - " --group <group> : default is nogroup\n" - " --port <port> : port on which atftp listen\n" -only in patch2: -unchanged: ---- atftp-0.7.orig/tftp.c 2012-09-11 13:55:28.255290577 +0200 -+++ atftp-0.7/tftp.c 2012-09-11 14:01:13.437593304 +0200 -@@ -57,6 +57,7 @@ - /* defined as extern in tftp_file.c and mtftp_file.c, set by the signal - handler */ - int tftp_cancel = 0; -+int tftp_prevent_sas = 0; - - /* local flags */ - int interactive = 1; /* if false, we run in batch mode */ -@@ -982,6 +983,7 @@ int tftp_cmd_line_options(int argc, char - #endif - { "mtftp", 1, NULL, '1'}, - { "no-source-port-checking", 0, NULL, '0'}, -+ { "prevent-sas", 0, NULL, 'X'}, - { "verbose", 0, NULL, 'v'}, - { "trace", 0, NULL, 'd'}, - #if DEBUG -@@ -1086,6 +1088,9 @@ int tftp_cmd_line_options(int argc, char - case '0': - data.checkport = 0; - break; -+ case 'X': -+ tftp_prevent_sas = 1; -+ break; - case 'v': - snprintf(string, sizeof(string), "verbose on"); - make_arg(string, &ac, &av); -@@ -1182,6 +1187,7 @@ void tftp_usage(void) - " --mtftp <\"name value\"> : set mtftp variable to value\n" - #endif - " --no-source-port-checking: violate RFC, see man page\n" -+ " --prevent-sas : prevent Sorcerer's Apprentice Syndrome\n" - " --verbose : set verbose mode on\n" - " --trace : set trace mode on\n" - #if DEBUG -only in patch2: -unchanged: ---- atftp-0.7.orig/atftpd.8 2004-03-06 21:41:40.000000000 +0100 -+++ atftp-0.7/atftpd.8 2012-09-11 13:55:28.423295591 +0200 -@@ -180,6 +180,14 @@ implication. Be aware that this option v - option has effect only for non-multicast transfer. - - .TP -+.B \-\-prevent\-sas -+Address the Sorcerer's Apprentice Syndrome situation as requested by RFC 1350. -+This RFC requires repeated responses to a single packet to be -+rejected. Thus a block will only get retransmitted on a timeout. -+For backward compatibility, the default stays to ignore this RFC. -+So blocks get transmitted on every request. -+ -+.TP - .B \-\-mcast\-switch\-client - This option allow the server to proceed with the next multicast client - as soon as the current client timeout. When the current master client -only in patch2: -unchanged: ---- atftp-0.7.orig/atftp.1 2004-03-06 21:41:40.000000000 +0100 -+++ atftp-0.7/atftp.1 2012-09-11 13:55:28.423295591 +0200 -@@ -77,6 +77,14 @@ to configure client side port to use. - See atftpd's man page. - - .TP -+.B \-\-prevent\-sas -+Address the Sorcerer's Apprentice Syndrome situation as requested by RFC 1350. -+This RFC requires repeated responses to a single packet to be -+rejected. Thus a block will only get retransmitted on a timeout. -+For backward compatibility, the default stays to ignore this RFC. -+So blocks get transmitted on every request. -+ -+.TP - .B \-\-verbose - Instruct atftp to be verbose. It will print more information about - what's going on. ++++++ atftpd.init.d ++++++ --- /var/tmp/diff_new_pack.mx3HhZ/_old 2013-02-14 21:42:01.000000000 +0100 +++ /var/tmp/diff_new_pack.mx3HhZ/_new 2013-02-14 21:42:01.000000000 +0100 @@ -74,12 +74,13 @@ # start as daemon with some default opts ATFTP_DEF_OPTS="--daemon --user $ATFTP_USR --group $ATFTP_GRP --logfile $ATFTP_LOG_FILE" -# create logfile and PID directory if they don't exist -create_logfile_and_piddir(){ - # /var/run is mounted as tmpfs on openSUSE >= 11.4 - [ ! -d "$ATFTP_PID_DIR" ] && /usr/bin/install -o ${ATFTP_USR} -g ${ATFTP_GRP} -d "$ATFTP_PID_DIR"; - # must exist otherwise atftp will log to syslog - [ ! -f "$ATFTP_PID_DIR" ] && /usr/bin/install -m 0644 -o ${ATFTP_USR} -g ${ATFTP_GRP} /dev/null "$ATFTP_LOG_FILE" +# set correct perm on log_dir/pid_dir +# IN: $ATFTP_USR +set_perm(){ + [ ! -f "$ATFTP_LOG_FILE" ] && touch "$ATFTP_LOG_FILE"; + chown -R ${1}:root "$ATFTP_LOG_DIR" + [ ! -d "$ATFTP_PID_DIR" ] && /usr/bin/install -d "$ATFTP_PID_DIR"; + chown -R ${1}:root "$ATFTP_PID_DIR" } if [ "$ATFTP_USE_INETD" = "yes" ]; then @@ -89,7 +90,7 @@ case "$1" in start) - create_logfile_and_piddir + set_perm "${ATFTP_USR}" if [ -n "$ATFTP_BIND" ]; then for IP in $ATFTP_BIND; do echo -n "Starting Advanced Trivial FTP server on $IP: " -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org