#2409: Updated based on feedback by @narfbg;
diff --git a/system/core/Input.php b/system/core/Input.php
index 31bd700..7a6b6e4 100644
--- a/system/core/Input.php
+++ b/system/core/Input.php
@@ -790,10 +790,16 @@
 	 */
 	public function request_headers($xss_clean = FALSE)
 	{
+		// If header is already defined, return it immediately
+		if ( ! empty($this->headers))
+		{
+			return $this->headers;
+		}
+
 		// In Apache, you can simply call apache_request_headers()
 		if (function_exists('apache_request_headers'))
 		{
-			$this->headers = apache_request_headers();
+			return $this->headers = apache_request_headers();
 		}
 		else
 		{
@@ -810,7 +816,7 @@
 			// take SOME_HEADER and turn it into Some-Header
 			foreach ($headers as $key => $val)
 			{
-				$key = str_replace('_', ' ', strtolower($key));
+				$key = str_replace(array('_', '-'), ' ', strtolower($key));
 				$key = str_replace(' ', '-', ucwords($key));
 
 				$this->headers[$key] = $val;