PDA

View Full Version : مشکل خروج از برنامه بدون هشدار در perl



Ariyan
یک شنبه 25 فروردین 1387, 19:26 عصر
سلام
من با پرل و با استفاده از IO::Socket و threads یک سرور نوشتم توی دیباگر بدون مشکل کار میکنه . اما وقتی مستقیم اجراش میکنم بعد از پاسخ به چند درخواست بدون هیچ هشداری از برنامه خارج میشه!!
مشکل کجاست؟



#!/usr/bin/perl -W
use POSIX qw(strftime);
use threads;
use IO::Socket;
use MIME::Base64;
use Net::HTTP;
use strict;

my %nfo=('host' =>'http://site',
'path' =>'/cgi-bin/nph-clint.cgi',
'plain_domain' =>'site');

my $server_port=shift || 7890;

my $listen = IO::Socket::INET->new(
LocalPort => $server_port,
ReuseAddr => 1,
Listen => 10,
);
if($listen){
print "Server Started on port #$server_port\n";
}else{
print "ERROR: Problem while starting Server :\n\t$!";
exit;
}

sub handle_connection {
my $socket = shift;
my $output = shift || $socket;
my $exit = 0;
my @gotten=();
my %param=();
my $content;

my $adr=$socket->sockhost();
my $client_host = gethostbyaddr(inet_aton($adr), AF_INET);
my $time=strftime "%H:%M:%S", localtime;
print "[$time]:Got a connection from $client_host","[$adr]. ID: $tchild_count\n";

while (<$socket>) {
push @gotten,$_;
last unless !(/^\s*$/);
my ($f,$v) = split(/\s+/,$_,2);
$param{lc($f)} = $v;
}
if ($gotten[0] =~ /^POST/) {
read($socket,$content,$param{"content-length:"});
}

my $ENC_DATA=join('',@gotten);
if($content){$ENC_DATA.=$content;}
$ENC_DATA=encode_base64($ENC_DATA);
$ENC_DATA =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
$ENC_DATA="er=".$ENC_DATA;

my $url = $nfo{'host'}.$nfo{'path'};
my $rqq="POST ".$url." HTTP/1.0\r\nContent-Length: ".length($ENC_DATA)."\r\n\r\n".$ENC_DATA;

my $cfh = Net::HTTP->new(Host => $nfo{'plain_domain'},timeout=>5) || die $@;
print $cfh $rqq;

my $l;
do{
read($cfh,$l,1);
print $socket $l;
}while(!eof($cfh));
print "OK[$time]\n";

}
while (my $socket = $listen->accept) {
async(\&handle_connection, $socket)->detach;
}
ممنون

k3yd00
جمعه 01 شهریور 1387, 11:13 صبح
سلام،
http://www.perl-academy.com/forum/index.php

Ariyan
جمعه 01 شهریور 1387, 13:30 عصر
سلام
بگذریم که اون سایت پر از script kiddie هایی است که دنبال استفاده از اکسپلوتها هستند ولی در حال ممنون از توجهتون .
اشکال هم از درخواستهایی بود که قبل از پاسخ Abort میشدند.