public inbox for cygwin-cvs@sourceware.org
help / color / mirror / Atom feed
* [newlib-cygwin/main] Cygwin: cygcheck: find_url: fix error handling
@ 2023-01-29 20:32 Corinna Vinschen
  0 siblings, 0 replies; only message in thread
From: Corinna Vinschen @ 2023-01-29 20:32 UTC (permalink / raw)
  To: cygwin-cvs

https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=37c5b6d929bd6acd0f64467ccbd8a298a77ad98a

commit 37c5b6d929bd6acd0f64467ccbd8a298a77ad98a
Author:     Corinna Vinschen <corinna@vinschen.de>
AuthorDate: Sun Jan 29 20:35:45 2023 +0100
Commit:     Corinna Vinschen <corinna@vinschen.de>
CommitDate: Sun Jan 29 20:35:45 2023 +0100

    Cygwin: cygcheck: find_url: fix error handling
    
    Signed-off-by: Corinna Vinschen <corinna@vinschen.de>

Diff:
---
 winsup/utils/mingw/cygcheck.cc | 38 +++++++++++++++++++++++++++-----------
 1 file changed, 27 insertions(+), 11 deletions(-)

diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc
index f4107176fd01..777347371612 100644
--- a/winsup/utils/mingw/cygcheck.cc
+++ b/winsup/utils/mingw/cygcheck.cc
@@ -2050,6 +2050,7 @@ fetch_url (const char *url, FILE *outstream)
   HINTERNET hi = NULL, hurl = NULL;
   char buf[4096];
   DWORD numread;
+  int ret;
 
   /* Connect to the net and open the URL.  */
   if (InternetAttemptConnect (0) != ERROR_SUCCESS)
@@ -2064,34 +2065,49 @@ fetch_url (const char *url, FILE *outstream)
     return display_internet_error ("InternetOpen() failed", NULL);
 
   if (!(hurl = InternetOpenUrlA (hi, url, NULL, 0, 0, 0)))
-    return display_internet_error ("unable to contact cygwin.com site, "
-				   "InternetOpenUrl() failed", hi, NULL);
+    {
+      ret = display_internet_error ("unable to contact cygwin.com site, "
+				    "InternetOpenUrl() failed", hi, NULL);
+      goto out_open;
+    }
 
   /* Check the HTTP response code.  */
   if (!HttpQueryInfoA (hurl, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER,
 		      (void *) &rc, &rc_s, NULL))
-    return display_internet_error ("HttpQueryInfo() failed", hurl, hi, NULL);
+    {
+      ret = display_internet_error ("HttpQueryInfo() failed", hurl, hi, NULL);
+      goto out_open_url;
+    }
+
+  if (rc != HTTP_STATUS_OK)
+    {
+      sprintf (buf, "error retrieving results from cygwin.com site, "
+		    "HTTP status code %lu", rc);
+      ret = display_internet_error (buf, hurl, hi, NULL);
+      goto out_open_url;
+    }
 
   /* Fetch result and print to outstream.  */
   do
     {
       if (!InternetReadFile (hurl, (void *) buf, sizeof (buf), &numread))
-	return display_internet_error ("InternetReadFile failed", hurl, hi, NULL);
+	{
+	  ret = display_internet_error ("InternetReadFile failed", hurl, hi,
+					NULL);
+	  goto out_open_url;
+	}
       if (numread)
 	fwrite ((void *) buf, (size_t) numread, 1, outstream);
     }
   while (numread);
 
-  if (rc != HTTP_STATUS_OK)
-    {
-      sprintf (buf, "error retrieving results from cygwin.com site, "
-		    "HTTP status code %lu", rc);
-      return display_internet_error (buf, hurl, hi, NULL);
-    }
+  ret = 0;
 
+out_open_url:
   InternetCloseHandle (hurl);
+out_open:
   InternetCloseHandle (hi);
-  return 0;
+  return ret;
 }
 
 struct passwd {

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-01-29 20:32 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-29 20:32 [newlib-cygwin/main] Cygwin: cygcheck: find_url: fix error handling Corinna Vinschen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).