[interchange-cvs] interchange - heins modified code/SystemTag/deliver.coretag

interchange-core@icdevgroup.org interchange-core@icdevgroup.org
Wed Nov 20 12:35:01 2002


User:      heins
Date:      2002-11-20 17:34:35 GMT
Modified:  code/SystemTag deliver.coretag
Log:
* Add some standard output to a relocate, prevent "Premature end of
  script headers" in some situations.

Revision  Changes    Path
1.3       +14 -2     interchange/code/SystemTag/deliver.coretag


rev 1.3, prev_rev 1.2
Index: deliver.coretag
===================================================================
RCS file: /var/cvs/interchange/code/SystemTag/deliver.coretag,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- deliver.coretag	27 Oct 2002 04:56:31 -0000	1.2
+++ deliver.coretag	20 Nov 2002 17:34:35 -0000	1.3
@@ -1,6 +1,7 @@
 UserTag deliver Order type
 UserTag deliver HasEndTag
 UserTag deliver addAttr
+UserTag deliver Version $Revision: 1.3 $
 UserTag deliver Routine <<EOR
 sub {
 	my ($type, $opt, $body) = @_;
@@ -19,11 +20,14 @@
 	elsif($body) {
 		$out = \$body;
 	}
-	$type ||= 'application/octet-stream';
-	$Tag->tag( { op => 'header', name => 'Content-Type', content => $type } );
 
 	## This is a bounce, returns
 	if($opt->{location}) {
+		$type and $Tag->tag( {
+						op => 'header',
+						name => 'Content-Type',
+						content => $type,
+					} );
 		$Tag->tag( {	op => 'header',
 							name => 'Status',
 							content => $opt->{status} || '302 moved',
@@ -32,9 +36,17 @@
 							name => 'Location',
 							content => $opt->{location},
 						} );
+		if(! $body) {
+			$body = qq{Redirecting to <A href="%s">%s</a>.};
+			$body = errmsg($body, $opt->{location}, $opt->{location});
+		}
+		::response($body);
 		$Vend::Sent = 1;
 		return 1;
 	}
+
+	$type ||= 'application/octet-stream';
+	$Tag->tag( { op => 'header', name => 'Content-Type', content => $type } );
 
 	if($opt->{get_encrypted}) {
 		$opt->{get_encrypted} = 1 unless $opt->{get_encrypted} =~ /^\d+$/;