summaryrefslogtreecommitdiff
path: root/astro/xephem/files/patch-sunmenu.c
diff options
context:
space:
mode:
Diffstat (limited to 'astro/xephem/files/patch-sunmenu.c')
-rw-r--r--astro/xephem/files/patch-sunmenu.c87
1 files changed, 87 insertions, 0 deletions
diff --git a/astro/xephem/files/patch-sunmenu.c b/astro/xephem/files/patch-sunmenu.c
new file mode 100644
index 000000000000..6f028907bd80
--- /dev/null
+++ b/astro/xephem/files/patch-sunmenu.c
@@ -0,0 +1,87 @@
+--- sunmenu.c.orig 2012-04-01 22:38:50 UTC
++++ sunmenu.c
+@@ -884,9 +884,11 @@ readSOHOImage()
+ int isjpeg, jpegl;
+ int njpeg;
+ unsigned char *jpeg;
++ XE_SSL_FD ssl_fd;
+ int fd, nr;
+ struct tm tm;
+
++ memset(&ssl_fd, 0, sizeof(ssl_fd));
+ memset(&tm, 0, sizeof(struct tm));
+
+ /* get desired type and size */
+@@ -899,18 +901,18 @@ readSOHOImage()
+
+ /* build GET command */
+ sprintf (get, "GET http://%s%s HTTP/1.0\r\nUser-Agent: xephem/%s\r\n\r\n", sohohost, fn, PATCHLEVEL);
+-
++
+ /* query server */
+- fd = httpGET (sohohost, get, buf);
++ fd = httpsGET (sohohost, get, buf, &ssl_fd);
+ if (fd < 0) {
+- xe_msg (1, "http get: %s", buf);
++ xe_msg (1, "https get: %s", buf);
+ return (-1);
+ }
+
+ /* read header (everything to first blank line), looking for jpeg */
+ isjpeg = 0;
+ jpegl = 0;
+- while (recvline (fd, buf, sizeof(buf)) > 1) {
++ while (ssl_recvline (&ssl_fd, buf, sizeof(buf)) > 1) {
+ xe_msg (0, "Rcv: %s", buf);
+ if (strstr (buf, "Content-Type:") && strstr (buf, "image/jpeg"))
+ isjpeg = 1;
+@@ -923,15 +925,17 @@ readSOHOImage()
+ }
+ }
+ if (!isjpeg) {
+- while (recvline (fd, buf, sizeof(buf)) > 0)
++ while (ssl_recvline (&ssl_fd, buf, sizeof(buf)) > 0)
+ xe_msg (0, "Rcv: %s", buf);
+ xe_msg (1, "Error talking to SOHO .. see File->System log\n");
+- close (fd);
++ SSL_free (ssl_fd.ssl);
++ close (ssl_fd.fd);
+ return (-1);
+ }
+ if (jpegl == 0) {
+ xe_msg (1, "No Content-Length in header");
+- close (fd);
++ SSL_free (ssl_fd.ssl);
++ close (ssl_fd.fd);
+ return (-1);
+ }
+
+@@ -941,20 +945,22 @@ readSOHOImage()
+ for (njpeg = 0; njpeg < jpegl; njpeg += nr) {
+ pm_set (100*njpeg/jpegl);
+ jpeg = (unsigned char *) XtRealloc ((char*)jpeg, njpeg+NSREAD);
+- nr = readbytes (fd, jpeg+njpeg, NSREAD);
+- if (nr < 0) {
+- xe_msg (1, "%s:\n%s", sohohost, syserrstr());
++ nr = SSL_read (ssl_fd.ssl, jpeg+njpeg, NSREAD);
++ if (nr <= 0) {
++ xe_msg (1, "%s: ssl read error code: %d", sohohost, SSL_get_error(ssl_fd.ssl, nr));
+ pm_down();
+- close (fd);
++ SSL_free (ssl_fd.ssl);
++ close (ssl_fd.fd);
+ return (-1);
+ }
+ if (nr == 0)
+ break;
+ }
+ pm_down();
+- close (fd);
++ SSL_free (ssl_fd.ssl);
++ close (ssl_fd.fd);
+
+- sprintf (fn, "/%s_%s.jpg", filetime, filetype);
++ sprintf (fn, "/%s_%s.jpg", filetime, filetype);
+ /* display jpeg */
+ if (displayPic (fn, jpeg, njpeg) < 0)
+ return (-1);