diff --git a/src/modules/_Roxen/roxen.c b/src/modules/_Roxen/roxen.c
index 1e0bcf86d149c7f37729aeac2fb03bec7e14d3e3..342d24b4624eb7bac0559113a22c789673c6c90d 100644
--- a/src/modules/_Roxen/roxen.c
+++ b/src/modules/_Roxen/roxen.c
@@ -75,7 +75,7 @@ static void f_hp_exit( struct object *UNUSED(o) )
 }
 
 static void f_hp_feed( INT32 args )
-/*! @decl array(string|mapping) feed(string data)
+/*! @decl array(string|mapping) feed(string data, void|int lower_case)
  *!
  *! @returns
  *!   @array
@@ -88,7 +88,8 @@ static void f_hp_feed( INT32 args )
  *!   @endarray
  */
 {
-  struct pike_string *str = Pike_sp[-1].u.string;
+  struct pike_string *str = Pike_sp[-args].u.string;
+  int lower_case = 1;
   struct header_buf *hp = THP;
   int str_len;
   int tot_slash_n=hp->slash_n, slash_n = hp->tslash_n, spc = hp->spc;
@@ -98,10 +99,15 @@ static void f_hp_feed( INT32 args )
   ptrdiff_t os=0, i, j, l;
   unsigned char *in;
 
-  if (args != 1)
+  if( !( args == 1 || args == 2 ) )
     Pike_error("Bad number of arguments to feed().\n");
-  if( TYPEOF(Pike_sp[-1]) != PIKE_T_STRING )
+  if( TYPEOF(Pike_sp[-args]) != PIKE_T_STRING )
     Pike_error("Wrong type of argument to feed()\n");
+  if( args == 2 )
+    if( TYPEOF(Pike_sp[-args+1]) == PIKE_T_INT )
+      lower_case = Pike_sp[-args+1].u.integer;
+    else
+      Pike_error("Wrong type of argument to feed()\n");
   if( str->size_shift )
     Pike_error("Wide string headers not supported\n");
   str_len = str->len;
@@ -195,7 +201,10 @@ static void f_hp_feed( INT32 args )
   for(i = 0; i < l; i++)
   {
     if(in[i] > 64 && in[i] < 91)
-      in[i]+=32;	/* lower_case */
+    {
+      if (lower_case)
+         in[i]+=32;       /* lower_case */
+    }
     else if( in[i] == ':' )
     {
       /* FIXME: Does not support white space before the colon. */
@@ -610,7 +619,7 @@ PIKE_MODULE_INIT
   ADD_STORAGE( struct header_buf  );
   set_init_callback( f_hp_init );
   set_exit_callback( f_hp_exit );
-  ADD_FUNCTION( "feed", f_hp_feed, tFunc(tStr,tArr(tOr(tStr,tMapping))), 0 );
+  ADD_FUNCTION( "feed", f_hp_feed, tFunc(tStr tOr(tInt,tVoid),tArr(tOr(tStr,tMapping))), 0 );
   ADD_FUNCTION( "create", f_hp_create, tFunc(tOr(tInt,tVoid),tVoid), ID_PROTECTED );
   end_class( "HeaderParser", 0 );
 }