[setup - the official Cygwin setup program used to install Cygwin and keep it up to date] branch master, updated. release_2.879

jturney@sourceware.org jturney@sourceware.org
Thu May 18 21:19:00 GMT 2017




https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=9b9237fbce6e8005fcda57241598181fb2b4985f

commit 9b9237fbce6e8005fcda57241598181fb2b4985f
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Thu May 18 13:01:06 2017 +0100

    Use INTERNET_FLAG_RESYNCHRONIZE when fetching cacheable URLs with wininet
    
    It seems this is needed for correct cache behaviour when the server doesn't
    add an ETags header (i.e. sending an If-Modified-Since: request).  Why would
    we want sane behaviour by default, eh?


Diff:
---
 Makefile.am  |   10 ++++++++++
 configure.ac |    3 +++
 geturl.cc    |    7 ++-----
 nio-ie5.cc   |   22 +++++++++++++++++++---
 4 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index a947a78..9b11917 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -273,6 +273,7 @@ inilint_SOURCES = \
 
 GITVER := $(shell cd $(srcdir) && git describe --match release_\* --abbrev=6 --dirty || "N/A")
 VER := $(subst release_,,$(GITVER))
+ARCH := @ARCH@
 
 setup_version.c : Makefile
 	@echo "Setup version: " $(VER)
@@ -301,9 +302,18 @@ strip:	all
 	$(OBJCOPY) --strip-all setup$(EXEEXT)
 	$(OBJCOPY) --add-gnu-debuglink=setup.dbg setup$(EXEEXT) setup$(EXEEXT)
 
+CLEANFILES += setup.dbg
+
 upx:	strip
 	@if [ -e `which upx` ]; then\
 		upx --best --lzma setup$(EXEEXT) ;\
 	else \
 		echo "UPX doesn't seem to be installed, cannot compress setup$(EXEEXT)." ;\
 	fi
+
+release: upx
+	cp setup.dbg setup-${VER}.${ARCH}.dbg
+	cp setup${EXEEXT} setup-${VER}.${ARCH}${EXEEXT}
+
+clean-local:
+	rm -f setup*${EXEEXT} setup*.dbg
diff --git a/configure.ac b/configure.ac
index 42ad3e2..ab548c0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -74,15 +74,18 @@ dnl add portability sources to inilint
 case "$host" in
 i?86-*-mingw32)
   SETUP="setup"
+  ARCH="x86"
   ;;
 x86_64-*-mingw32)
   SETUP="setup"
+  ARCH="x86_64"
   ;;
 *)
   AC_MSG_ERROR([Cygwin Setup can only be built for Win32 or Win64 hosts])
   ;;
 esac
 AC_SUBST(SETUP)
+AC_SUBST(ARCH)
 
 AC_CONFIG_FILES([Makefile tests/Makefile])
 AC_OUTPUT
diff --git a/geturl.cc b/geturl.cc
index 53c0a3b..1c1d1c6 100644
--- a/geturl.cc
+++ b/geturl.cc
@@ -108,14 +108,12 @@ progress (int bytes)
 static void
 getUrlToStream (const string &_url, io_stream *output)
 {
-  Log (LOG_BABBLE) << "getUrlToStream " << _url << endLog;
   is_local_install = (source == IDC_SOURCE_LOCALDIR);
   init_dialog (_url, 0);
   NetIO *n = NetIO::open (_url.c_str(), true);
   if (!n || !n->ok ())
     {
       delete n;
-      Log (LOG_BABBLE) <<  "getUrlToStream failed!" << endLog;
       throw new Exception (TOSTRING(__LINE__) " " __FILE__, "Error opening url",  APPERR_IO_ERROR);
     }
 
@@ -144,6 +142,8 @@ getUrlToStream (const string &_url, io_stream *output)
   if (n)
     delete (n);
   /* reseeking is up to the recipient if desired */
+
+  Log (LOG_BABBLE) << "Fetched URL: " << _url << endLog;
 }
 
 io_stream *
@@ -152,7 +152,6 @@ get_url_to_membuf (const string &_url, HWND owner)
   io_stream_memory *membuf = new io_stream_memory ();
   try 
     {
-      Log (LOG_BABBLE) << "get_url_to_membuf " << _url << endLog;
       getUrlToStream (_url, membuf);
       
       if (membuf->seek (0, IO_SEEK_SET))
@@ -168,7 +167,6 @@ get_url_to_membuf (const string &_url, HWND owner)
     {
       if (e->errNo() != APPERR_IO_ERROR)
 	throw e;
-      Log (LOG_BABBLE) << "get_url_to_membuf failed!" << endLog;
       delete membuf;
       return 0;
     }
@@ -217,7 +215,6 @@ get_url_to_file (const string &_url,
   if (!n || !n->ok ())
     {
       delete n;
-      Log (LOG_BABBLE) <<  "get_url_to_file failed!" << endLog;
       return 1;
     }
 
diff --git a/nio-ie5.cc b/nio-ie5.cc
index daf29ad..7708d4c 100644
--- a/nio-ie5.cc
+++ b/nio-ie5.cc
@@ -26,6 +26,7 @@
 #include "msg.h"
 #include "netio.h"
 #include "nio-ie5.h"
+#include "LogSingleton.h"
 
 static HINTERNET internet_direct = 0;
 static HINTERNET internet_preconfig = 0;
@@ -55,6 +56,8 @@ NetIO (_url)
 
   if (!cachable) {
     flags |= INTERNET_FLAG_NO_CACHE_WRITE;
+  } else {
+    flags |= INTERNET_FLAG_RESYNCHRONIZE;
   }
 
   connection = InternetOpenUrl (*internet, url, NULL, 0, flags, 0);
@@ -83,17 +86,22 @@ try_again:
 
   if (!connection)
     {
-      if (GetLastError () == ERROR_INTERNET_EXTENDED_ERROR)
+      DWORD e = GetLastError ();
+      if (e == ERROR_INTERNET_EXTENDED_ERROR)
 	{
 	  char buf[2000];
 	  DWORD e, l = sizeof (buf);
 	  InternetGetLastResponseInfo (&e, buf, &l);
 	  mbox (0, buf, "Internet Error", MB_OK);
 	}
+      else
+        {
+          Log (LOG_PLAIN) << "connection error: " << e << endLog;
+        }
     }
 
-  DWORD type, type_s;
-  type_s = sizeof (type);
+  ULONG type = 0;
+  DWORD type_s = sizeof (type);
   InternetQueryOption (connection, INTERNET_OPTION_HANDLE_TYPE,
 		       &type, &type_s);
 
@@ -106,6 +114,9 @@ try_again:
 			 HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER,
 			 &type, &type_s, NULL))
 	{
+	  if (type != 200)
+	    Log (LOG_PLAIN) << "HTTP status " << type << " fetching " << url << endLog;
+
 	  if (type == 401)	/* authorization required */
 	    {
 	      flush_io ();
@@ -128,6 +139,11 @@ try_again:
 	    }
 	}
     }
+
+  InternetQueryOption (connection, INTERNET_OPTION_REQUEST_FLAGS,
+                       &type, &type_s);
+  if (type & INTERNET_REQFLAG_FROM_CACHE)
+    Log (LOG_BABBLE) << "Request for URL " << url << " satisfied from cache" << endLog;
 }
 
 void



More information about the Cygwin-apps-cvs mailing list