SVN: toys/rsget.pl/RSGet: HTTPServer.pm Main.pm

sparky sparky at pld-linux.org
Mon May 10 00:39:51 CEST 2010


Author: sparky
Date: Mon May 10 00:39:49 2010
New Revision: 11409

Modified:
   toys/rsget.pl/RSGet/HTTPServer.pm
   toys/rsget.pl/RSGet/Main.pm
Log:
- don't fork in http server - trap sigpipe instead


Modified: toys/rsget.pl/RSGet/HTTPServer.pm
==============================================================================
--- toys/rsget.pl/RSGet/HTTPServer.pm	(original)
+++ toys/rsget.pl/RSGet/HTTPServer.pm	Mon May 10 00:39:49 2010
@@ -136,19 +136,13 @@
 		$print .= "\r\n";
 	}
 
-	my $kid = fork();
-	unless ( $kid ) {
-		# XXX: this is stupid, but I don't know what
-		# else to do if $client is closed already
-		print $client $print;
-		close $client;
-
-		# make sure no DESTROY blocks are called
-		require POSIX;
-		POSIX::_exit( 0 );
-	};
-
+	$RSGet::Main::sig_pipe = 0;
+	print $client $print;
+	if ( $RSGet::Main::sig_pipe ) {
+		warn "HTTP client closed on us !\n";
+	}
 	close $client;
+
 	return 1;
 }
 

Modified: toys/rsget.pl/RSGet/Main.pm
==============================================================================
--- toys/rsget.pl/RSGet/Main.pm	(original)
+++ toys/rsget.pl/RSGet/Main.pm	Mon May 10 00:39:49 2010
@@ -54,6 +54,11 @@
 
 our %usettings;
 
+our $sig_pipe;
+$SIG{PIPE} = sub {
+	$sig_pipe = 1;
+};
+
 my $http = undef;
 sub init
 {


More information about the pld-cvs-commit mailing list