Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6190[/thread]

Connection schmiert ab :(: Problem mit close(PIPE) und Net::Server

Leser: 2


<< |< 1 2 >| >> 12 Einträge, 2 Seiten
Gast Gast
 2004-04-13 21:15
#81512 #81512
Hi,

ich habe einen Server mit Net::Server in Perl programmiert (SMTP-Server). Am Ende soll die Mail an ein PHP Script übergeben werden:

if(open(PIPE, "|/usr/bin/php -q /home/patrick/pipe.php")) {
print PIPE @mail;
close(PIPE);
}

Geht soweit gut, nur das die Verbindung zum Server genau bei "close(PIPE)" beendet wird. Der Hauptserver läuft weiter, nur das Verbindubgs-Child ist einfach beendet. Wenn ich das "close(PIPE)" weglasse, beendet sich die Verbindung nicht, aber das Pipe bleibt offen, das will ich ja nicht.

Woran liegt das? Mache ich etwas falsch? Was?

Patrick
[E|B]
 2004-04-13 21:36
#81513 #81513
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
He?
Einerseits willst du die Pipe wieder schließen, anderer seits soll sie offen bleiben? Wie soll ich das verstehen?
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
jan
 2004-04-13 22:08
#81514 #81514
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
<gröhl>code posten! code posten!</gröhl>

eb: er will die pipe schließen, aber die verbindung, deren code er uns vorenthalten hat, aufrecht erhalten...
b1gde
 2004-04-13 22:15
#81515 #81515
User since
2004-04-13
6 Artikel
BenutzerIn
[default_avatar]
Sieht im Prinzip so aus, der Code:

#!/usr/bin/perl

package b1gMTA;
use DBI;
use strict;
use vars qw(@ISA);
use Net::Server::PreFork;
no strict 'subs';
@ISA = qw(Net::Server::PreFork);
b1gMTA->run(port=>25, background=0);

exit;

sub process_request {

......

print "220 b1gMTA ready\r\n";
eval {

while( <STDIN> ){
s/\r?\n$//;


....


if($arequest eq ".") {
if(open(PIPE, "|/usr/bin/php -q /home/patrick/pipe.php")) {
print PIPE @mail;


close(PIPE);
## AN DIESER STELLE WIRD DIE VERBINDUNG MIT DEM CLIENT BEENDET
}

....

}
};

}
1;
jan
 2004-04-13 22:19
#81516 #81516
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
äh, du willst nen MTA in perl schreiben, der nur in ein phpscript piped? warum das? aber gut.

warum gibst du nicht noch ein bisschen mehr code heraus? hier klaut dir keiner die revolutionären ideen und konzepte und bisher hat auch noch keiner mit code aus dem board ein logikpatent anzumelden versucht ,)
b1gde
 2004-04-13 22:23
#81517 #81517
User since
2004-04-13
6 Artikel
BenutzerIn
[default_avatar]
:)
Wozu den anderen Code? Das sind doch die relevanten Teile? Soll ich das ganze Script posten?

Das Script pipet nach Sendmail, wenn die Mail nicht an lokal bestimmt ist, andernfalls in ein PHP Script. Hat schon seinen Sinn :)

Edit: Nach closen des Sendmail-Pipes schmiert die Connection auch ab
jan
 2004-04-13 22:25
#81518 #81518
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
naja, relevant fände ich noch die gesamte interaktion mit dem client ...
kann sendmail das nicht selbstständig? kenne mich da nicht sonderlich aus, benutze exim, das macht sowas mit links durch config.
b1gde
 2004-04-13 22:29
#81519 #81519
User since
2004-04-13
6 Artikel
BenutzerIn
[default_avatar]
Es geht darum, später unabhängig von Sendmail zu werden. Geht doch auch nicht darum, ob es sinnvoll ist, sondern Fakt ist, das es nicht geht und gerne wüsste, warum :D :) :D

Code kommt gleich, hab ich auf anderem PC

Frage mal anders: Gibt close() der Pipe irgend etwas zurück, was den Net::Server exitten lassen könnte? Irgend einen Exit Code oder irgendwas?
jan
 2004-04-13 22:31
#81520 #81520
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
klar, so rein vom interesse her finde ich das auch schon bearbeitungswürdig, ich dachte nur, man könnte vielleicht das in den hobbybereich schieben und du deine aufgabe schneller und einfacher lösen ;)
b1gde
 2004-04-13 22:38
#81521 #81521
User since
2004-04-13
6 Artikel
BenutzerIn
[default_avatar]
Danke :)

Bin neu bei Perl, bitte net meckern
Code: (dl )
Wird nicht mehr benötigt


edit renee:: [code]-Tags eingefügt\n\n

<!--EDIT|b1gde|1081963385-->
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2004-04-13 21:15.