aboutsummaryrefslogtreecommitdiff
path: root/networking/wget.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2014-02-23 23:39:47 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2014-02-23 23:39:47 +0100
commit53315570bb77534d828b3cf1f06b2ca286da4962 (patch)
treea68b1f5e4b5b6d70bbdd99e64d8fc7e4f79eb087 /networking/wget.c
parentd82046f59f8b3d338bcfe6aa3b786e13c5c54ee3 (diff)
downloadbusybox-w32-53315570bb77534d828b3cf1f06b2ca286da4962.tar.gz
busybox-w32-53315570bb77534d828b3cf1f06b2ca286da4962.tar.bz2
busybox-w32-53315570bb77534d828b3cf1f06b2ca286da4962.zip
wget: add commented-out code to use ssl_helper instead of openssl
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'networking/wget.c')
-rw-r--r--networking/wget.c49
1 files changed, 47 insertions, 2 deletions
diff --git a/networking/wget.c b/networking/wget.c
index dfea3d4d2..3d9a1b333 100644
--- a/networking/wget.c
+++ b/networking/wget.c
@@ -527,12 +527,51 @@ static int spawn_https_helper(const char *host, unsigned port)
527 /* notreached */ 527 /* notreached */
528 } 528 }
529 529
530 /* parent process */ 530 /* Parent */
531 free(allocated); 531 free(allocated);
532 close(sp[1]); 532 close(sp[1]);
533 return sp[0]; 533 return sp[0];
534} 534}
535 535
536/* See networking/ssl_helper/README */
537#define SSL_HELPER 0
538
539#if SSL_HELPER
540static void spawn_https_helper1(int network_fd)
541{
542 int sp[2];
543 int pid;
544
545 if (socketpair(AF_UNIX, SOCK_STREAM, 0, sp) != 0)
546 /* Kernel can have AF_UNIX support disabled */
547 bb_perror_msg_and_die("socketpair");
548
549 pid = BB_MMU ? xfork() : xvfork();
550 if (pid == 0) {
551 /* Child */
552 char *argv[3];
553
554 close(sp[0]);
555 xmove_fd(sp[1], 0);
556 xdup2(0, 1);
557 xmove_fd(network_fd, 3);
558 /*
559 * A simple ssl/tls helper
560 */
561 argv[0] = (char*)"ssl_helper";
562 argv[1] = (char*)"-d3";
563 argv[2] = NULL;
564 BB_EXECVP(argv[0], argv);
565 bb_perror_msg_and_die("can't execute '%s'", argv[0]);
566 /* notreached */
567 }
568
569 /* Parent */
570 close(sp[1]);
571 xmove_fd(sp[0], network_fd);
572}
573#endif
574
536static void NOINLINE retrieve_file_data(FILE *dfp) 575static void NOINLINE retrieve_file_data(FILE *dfp)
537{ 576{
538#if ENABLE_FEATURE_WGET_STATUSBAR || ENABLE_FEATURE_WGET_TIMEOUT 577#if ENABLE_FEATURE_WGET_STATUSBAR || ENABLE_FEATURE_WGET_TIMEOUT
@@ -775,13 +814,19 @@ static void download_one_url(const char *url)
775 814
776 /* Open socket to http(s) server */ 815 /* Open socket to http(s) server */
777 if (target.protocol == P_HTTPS) { 816 if (target.protocol == P_HTTPS) {
817/* openssl-based helper
818 * Inconvenient API since we can't give it an open fd,
819 */
778 int fd = spawn_https_helper(server.host, server.port); 820 int fd = spawn_https_helper(server.host, server.port);
779 sfp = fdopen(fd, "r+"); 821 sfp = fdopen(fd, "r+");
780 if (!sfp) 822 if (!sfp)
781 bb_perror_msg_and_die(bb_msg_memory_exhausted); 823 bb_perror_msg_and_die(bb_msg_memory_exhausted);
782 } else 824 } else
783 sfp = open_socket(lsa); 825 sfp = open_socket(lsa);
784 826#if SSL_HELPER
827 if (target.protocol == P_HTTPS)
828 spawn_https_helper1(fileno(sfp));
829#endif
785 /* Send HTTP request */ 830 /* Send HTTP request */
786 if (use_proxy) { 831 if (use_proxy) {
787 fprintf(sfp, "GET %s://%s/%s HTTP/1.1\r\n", 832 fprintf(sfp, "GET %s://%s/%s HTTP/1.1\r\n",