Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/libexec/httpd merge bozohttpd 20100512
details: https://anonhg.NetBSD.org/src/rev/2e0437500e42
branches: trunk
changeset: 754895:2e0437500e42
user: mrg <mrg%NetBSD.org@localhost>
date: Sat May 15 06:48:27 2010 +0000
description:
merge bozohttpd 20100512
diffstat:
libexec/httpd/CHANGES | 6 +++-
libexec/httpd/bozohttpd.8 | 6 +-
libexec/httpd/bozohttpd.c | 6 +-
libexec/httpd/ssl-bozo.c | 72 ++++++++++++++++++++++++++++++++++++++--------
4 files changed, 70 insertions(+), 20 deletions(-)
diffs (170 lines):
diff -r 7f523021445d -r 2e0437500e42 libexec/httpd/CHANGES
--- a/libexec/httpd/CHANGES Sat May 15 06:48:22 2010 +0000
+++ b/libexec/httpd/CHANGES Sat May 15 06:48:27 2010 +0000
@@ -1,4 +1,8 @@
-$eterna: CHANGES,v 1.70 2010/05/10 02:24:30 mrg Exp $
+$eterna: CHANGES,v 1.71 2010/05/13 04:19:04 mrg Exp $
+
+changes since bozohttpd 20100509:
+ o fix some compile issues
+ o fix SSL mode. from rtr.
changes since bozohttpd 20090522:
o major rework and clean up of internal interfaces. move the main
diff -r 7f523021445d -r 2e0437500e42 libexec/httpd/bozohttpd.8
--- a/libexec/httpd/bozohttpd.8 Sat May 15 06:48:22 2010 +0000
+++ b/libexec/httpd/bozohttpd.8 Sat May 15 06:48:27 2010 +0000
@@ -1,6 +1,6 @@
-.\" $NetBSD: bozohttpd.8,v 1.18 2010/05/10 14:53:17 mrg Exp $
+.\" $NetBSD: bozohttpd.8,v 1.19 2010/05/15 06:48:27 mrg Exp $
.\"
-.\" $eterna: bozohttpd.8,v 1.94 2010/05/10 14:49:19 mrg Exp $
+.\" $eterna: bozohttpd.8,v 1.95 2010/05/13 04:17:58 mrg Exp $
.\"
.\" Copyright (c) 1997-2010 Matthew R. Green
.\" All rights reserved.
@@ -459,7 +459,7 @@
and regular code audits.
This manual documents
.Nm
-version 20100510.
+version 20100512.
.Sh AUTHORS
.Nm
was written by Matthew R. Green
diff -r 7f523021445d -r 2e0437500e42 libexec/httpd/bozohttpd.c
--- a/libexec/httpd/bozohttpd.c Sat May 15 06:48:22 2010 +0000
+++ b/libexec/httpd/bozohttpd.c Sat May 15 06:48:27 2010 +0000
@@ -1,6 +1,6 @@
-/* $NetBSD: bozohttpd.c,v 1.18 2010/05/10 14:53:17 mrg Exp $ */
+/* $NetBSD: bozohttpd.c,v 1.19 2010/05/15 06:48:27 mrg Exp $ */
-/* $eterna: bozohttpd.c,v 1.168 2010/05/10 14:49:19 mrg Exp $ */
+/* $eterna: bozohttpd.c,v 1.169 2010/05/13 04:17:58 mrg Exp $ */
/*
* Copyright (c) 1997-2010 Matthew R. Green
@@ -109,7 +109,7 @@
#define INDEX_HTML "index.html"
#endif
#ifndef SERVER_SOFTWARE
-#define SERVER_SOFTWARE "bozohttpd/20100510"
+#define SERVER_SOFTWARE "bozohttpd/20100512"
#endif
#ifndef DIRECT_ACCESS_FILE
#define DIRECT_ACCESS_FILE ".bzdirect"
diff -r 7f523021445d -r 2e0437500e42 libexec/httpd/ssl-bozo.c
--- a/libexec/httpd/ssl-bozo.c Sat May 15 06:48:22 2010 +0000
+++ b/libexec/httpd/ssl-bozo.c Sat May 15 06:48:27 2010 +0000
@@ -1,6 +1,6 @@
-/* $NetBSD: ssl-bozo.c,v 1.7 2010/05/10 03:37:45 mrg Exp $ */
+/* $NetBSD: ssl-bozo.c,v 1.8 2010/05/15 06:48:27 mrg Exp $ */
-/* $eterna: ssl-bozo.c,v 1.11 2010/05/10 02:51:28 mrg Exp $ */
+/* $eterna: ssl-bozo.c,v 1.13 2010/05/12 12:24:58 rtr Exp $ */
/*
* Copyright (c) 1997-2010 Matthew R. Green
@@ -34,6 +34,7 @@
#include <stdarg.h>
#include <stdio.h>
+#include <syslog.h>
#include <unistd.h>
#include "bozohttpd.h"
@@ -56,20 +57,56 @@
char *privatekey_file;
} sslinfo_t;
+/*
+ * bozo_ssl_err
+ *
+ * bozo_ssl_err works just like bozo_err except in addition to printing
+ * the error provided by the caller at the point of error it pops and
+ * prints all errors from the SSL error queue.
+ */
+static void
+bozo_ssl_err(bozohttpd_t *httpd, int code, const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ if (httpd->logstderr || isatty(STDERR_FILENO)) {
+ vfprintf(stderr, fmt, ap);
+ fputs("\n", stderr);
+ } else
+ vsyslog(LOG_ERR, fmt, ap);
+ va_end(ap);
+
+ unsigned int sslcode = ERR_get_error();
+ do {
+ const char *sslfmt = "SSL Error: %s:%s:%s";
+
+ if (httpd->logstderr || isatty(STDERR_FILENO)) {
+ fprintf(stderr, sslfmt,
+ ERR_lib_error_string(sslcode),
+ ERR_func_error_string(sslcode),
+ ERR_reason_error_string(sslcode));
+ } else {
+ syslog(LOG_ERR, sslfmt,
+ ERR_lib_error_string(sslcode),
+ ERR_func_error_string(sslcode),
+ ERR_reason_error_string(sslcode));
+ }
+ } while (0 != (sslcode = ERR_get_error()));
+ exit(code);
+}
+
static int
-bozo_ssl_printf(bozohttpd_t *httpd, const char * fmt, ...)
+bozo_ssl_printf(bozohttpd_t *httpd, const char * fmt, va_list ap)
{
sslinfo_t *sslinfo;
- va_list ap;
char *buf;
int nbytes;
sslinfo = httpd->sslinfo;
/* XXX we need more elegant/proper handling of SSL_write return */
- va_start(ap, fmt);
if ((nbytes = vasprintf(&buf, fmt, ap)) != -1)
SSL_write(sslinfo->bozossl, buf, nbytes);
- va_end(ap);
free(buf);
@@ -135,17 +172,26 @@
sslinfo->ssl_context = SSL_CTX_new(sslinfo->ssl_method);
/* XXX we need to learn how to check the SSL stack for more info */
- if (sslinfo->ssl_context == NULL)
- bozo_err(httpd, 1, "SSL context initialization failed.");
+ if (NULL == sslinfo->ssl_context)
+ bozo_ssl_err(httpd, EXIT_FAILURE,
+ "SSL context creation failed");
- SSL_CTX_use_certificate_file(sslinfo->ssl_context,
- sslinfo->certificate_file, SSL_FILETYPE_PEM);
- SSL_CTX_use_PrivateKey_file(sslinfo->ssl_context,
- sslinfo->privatekey_file, SSL_FILETYPE_PEM);
+ if (1 != SSL_CTX_use_certificate_file(sslinfo->ssl_context,
+ sslinfo->certificate_file, SSL_FILETYPE_PEM))
+ bozo_ssl_err(httpd, EXIT_FAILURE,
+ "Unable to use certificate file '%s'",
+ sslinfo->certificate_file);
+
+ if (1 != SSL_CTX_use_PrivateKey_file(sslinfo->ssl_context,
+ sslinfo->privatekey_file, SSL_FILETYPE_PEM))
+ bozo_ssl_err(httpd, EXIT_FAILURE,
+ "Unable to use private key file '%s'",
+ sslinfo->privatekey_file);
/* check consistency of key vs certificate */
if (!SSL_CTX_check_private_key(sslinfo->ssl_context))
- bozo_err(httpd, 1, "check private key failed");
+ bozo_ssl_err(httpd, EXIT_FAILURE,
+ "Check private key failed");
}
void
Home |
Main Index |
Thread Index |
Old Index