From cb8ef040093b9be51905eec713d6a76aec8160ab Mon Sep 17 00:00:00 2001
From: jow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Sat, 12 Jun 2010 13:00:55 +0000
Subject: [PATCH] [backfire] merge r21492, r21556 and r21762

git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21763 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 package/uhttpd/Makefile         |  2 +-
 package/uhttpd/src/uhttpd-tls.c | 14 ++++++++++++--
 package/uhttpd/src/uhttpd.c     |  1 +
 3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/package/uhttpd/Makefile b/package/uhttpd/Makefile
index 0dcc6a900..eb4238c90 100644
--- a/package/uhttpd/Makefile
+++ b/package/uhttpd/Makefile
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=uhttpd
-PKG_RELEASE:=9
+PKG_RELEASE:=11
 
 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
 
diff --git a/package/uhttpd/src/uhttpd-tls.c b/package/uhttpd/src/uhttpd-tls.c
index cb5061638..26143ddf7 100644
--- a/package/uhttpd/src/uhttpd-tls.c
+++ b/package/uhttpd/src/uhttpd-tls.c
@@ -35,12 +35,22 @@ SSL_CTX * uh_tls_ctx_init()
 
 int uh_tls_ctx_cert(SSL_CTX *c, const char *file)
 {
-	return SSL_CTX_use_certificate_file(c, file, SSL_FILETYPE_ASN1);
+	int rv;
+
+	if( (rv = SSL_CTX_use_certificate_file(c, file, SSL_FILETYPE_PEM)) < 1 )
+		rv = SSL_CTX_use_certificate_file(c, file, SSL_FILETYPE_ASN1);
+
+	return rv;
 }
 
 int uh_tls_ctx_key(SSL_CTX *c, const char *file)
 {
-	return SSL_CTX_use_PrivateKey_file(c, file, SSL_FILETYPE_ASN1);
+	int rv;
+
+	if( (rv = SSL_CTX_use_PrivateKey_file(c, file, SSL_FILETYPE_PEM)) < 1 )
+		rv = SSL_CTX_use_PrivateKey_file(c, file, SSL_FILETYPE_ASN1);
+
+	return rv;
 }
 
 void uh_tls_ctx_free(struct listener *l)
diff --git a/package/uhttpd/src/uhttpd.c b/package/uhttpd/src/uhttpd.c
index 152e0b452..2f77a32a9 100644
--- a/package/uhttpd/src/uhttpd.c
+++ b/package/uhttpd/src/uhttpd.c
@@ -550,6 +550,7 @@ int main (int argc, char **argv)
 					&hints,	(opt == 's'), &conf
 				);
 
+				memset(bind, 0, sizeof(bind));
 				break;
 
 #ifdef HAVE_TLS