[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#491098: [Patch] packages/debian-installer-utils/fetch-url-methods/http fix for wget404 for latest busybox wget



Package: di-utils
Version: 1.60
Tags: patch

The wget404 code in
packages/debian-installer-utils/fetch-url-methods/http no longer
matches the error messages from busybox wget.

The attached patch fixes this for the busybox wget in the daily builds of d-i.
The attached patch also considers ftp and matches a different error
generated by ftp.

patch made againt debian-installer svn trunk revision 54394

Regards
Alex Owen
Index: packages/debian-installer-utils/fetch-url-methods/http
===================================================================
--- packages/debian-installer-utils/fetch-url-methods/http	(revision 54394)
+++ packages/debian-installer-utils/fetch-url-methods/http	(working copy)
@@ -3,16 +3,29 @@
 	url="$1"
 	file="$2"
 
+	if [ "$proto" = "http" ] ; then 
 	wget404() {
 	# see README.wget404 in the debian-installer-utils udeb source for more info about this
 		local RETVAL=$( {
 			echo 1
 			wget "$@" 2>&1 >&3 && echo %OK%
 			echo %EOF%
-			} | ( sed -ne '1{h;d};/server returned error 404/{p;s/.*/4/;h;d};/^%OK%$/{s/.*/0/;h;d};$!p;$x;$w /dev/fd/4' >&2 ) 4>&1
+			} | ( sed -ne '1{h;d};/server returned error: HTTP\/1\.[01] 404 /{p;s/.*/4/;h;d};/^%OK%$/{s/.*/0/;h;d};$!p;$x;$w /dev/fd/4' >&2 ) 4>&1
 		) 3>&1
 		return $RETVAL
 	}
+	elif [ "$proto" = "ftp" ] ; then
+	wget404() {
+	# see README.wget404 in the debian-installer-utils udeb source for more info about this
+		local RETVAL=$( {
+			echo 1
+			wget "$@" 2>&1 >&3 && echo %OK%
+			echo %EOF%
+			} | ( sed -ne '1{h;d};/bad response to RETR: 550 /{p;s/.*/4/;h;d};/^%OK%$/{s/.*/0/;h;d};$!p;$x;$w /dev/fd/4' >&2 ) 4>&1
+		) 3>&1
+		return $RETVAL
+	}
+	fi
 
 	# use the proxy for wgets (should speed things up)
 	if db_get mirror/$proto/proxy; then
Index: packages/debian-installer-utils/README.wget404
===================================================================
--- packages/debian-installer-utils/README.wget404	(revision 54394)
+++ packages/debian-installer-utils/README.wget404	(working copy)
@@ -11,6 +11,20 @@
 output does change, the sed will fail safe by returning 1 (i.e. general
 error) if no specific error is found.
 
+From etch to lenny busybox wget error output did change.
+For lenny busybox wget 404 output is for example:
+"server returned error: HTTP/1.1 404 Not Found"
+This comprises the static string "server returned error: " 
+followed by the server response which should follow rfc2616 section 6.1.
+Thus the output may say HTTP/1.0 instead of HTTP/1.1 and the string "Not Found"
+may also change. Thus the regular expression:
+  /server returned error: HTTP\/1\.[01] 404 /
+should catch all possible output for lenny.
+
+For the ftp method the error sring is different. The following regexp should work:
+ /bad response to RETR: 550 /
+
+
 Here is a copy of the function being documented (since it's bound to
 get out of sync with the one in the fetch-url-methods/http file, so you
 might as well see the one that's being documented as well ;-)
@@ -20,8 +34,8 @@
                 local RETVAL=$( {
                         echo 1
                         wget "$@" 2>&1 >&3 && echo %OK%
-                        echo %EOF%
-                        } | ( sed -ne '1{h;d};/server returned error 404/{p;s/.*/4/;h;d};/^%OK%$/{s/.*/0/;h;d};$!p;$x;$w /dev/fd/4' >&2 ) 4>&1
+                        echo %EOF% 
+                       } | ( sed -ne '1{h;d};/server returned error: HTTP\/1\.[01] 404 /{p;s/.*/4/;h;d};/^%OK%$/{s/.*/0/;h;d};$!p;$x;$w /dev/fd/4' >&2 ) 4>&1
                 ) 3>&1
                 return $RETVAL
         }
@@ -35,7 +49,7 @@
   1{h;d}  --  take the first line (provided by the echo 1) and put it in sed's hold space
               this will provide a default return value of 1 unless something else happens
 
-  /server returned error 404/{p;s/.*/4/;h;d}
+  /server returned error: HTTP\/1\.[01] 404 /{p;s/.*/4/;h;d}
           If we see a 404 error, print it, then turn it into a "4" and stuff it in the 
           sed hold space, and finally, delete the "4"
           This is where our return value of 4 comes from
@@ -86,3 +100,4 @@
 STDOUT anyway -- Doh!
 
 Phil Hands -- 2008-02-29
+Alex Owen  -- 2008-07-16

Reply to: