From: rodney Broom <[EMAIL PROTECTED]>
> I've got this module that needs to redirect sometimes. In doing this, the
> next request misses any POST data. I was playing with saving the data to
> disk and then reloading it on the next request like this:
>
>   if ($first_pass) {
>     $r->read($data, ...);
>     print TEMP_FILE, $data;
>     return REDIRECT;
>   }
>   else {
>     open(STDIN, "<$temp_file");
>     $r->subprocess_env(CONTENT_LENGTH => -s $temp_file);
>   }
>
> The idea here is that normal packages like CGI won't have to know what's
up
> and my programmers won't have to work around this. But, when I get to the
> script, STDIN is empty. Ay thouhts about how to handle this?
>

OK, here's what the solution was. According to Doug in a posting that I
found in an archive search, mod_perl's STDIN is really just a Perl glob, and
not a file handle. So instead of reading from it (and thereby emptying the
file handle named STDIN so that CGI and other things can't get this data),
now I simply assign from it:




  if ($first_pass) {
    print TEMP_FILE, $STDIN;
    return REDIRECT;
  }
  else {
    read(TEMP_FILE, my $buf, (-s $temp_file))
    $STDIN = $buf;

    $r->subprocess_env(CONTENT_LENGTH => -s $temp_file);
  }


I'm obviously doing a lot more testing than that, but this is the jist.

---
Rodney Broom
Programmer: Desert.Net



Reply via email to