mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-30 22:13:03 +00:00
handle fragmented reads on the socket
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4358 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
a644b549c5
commit
bd62246033
@ -42,7 +42,6 @@ sub readhash($;$) {
|
|||||||
if ($i eq "") {
|
if ($i eq "") {
|
||||||
$h->{socketerror} = "yes";
|
$h->{socketerror} = "yes";
|
||||||
return $h;
|
return $h;
|
||||||
last;
|
|
||||||
} elsif ($i eq "\n") {
|
} elsif ($i eq "\n") {
|
||||||
$crc++;
|
$crc++;
|
||||||
last;
|
last;
|
||||||
@ -51,6 +50,7 @@ sub readhash($;$) {
|
|||||||
}
|
}
|
||||||
$line .= $i;
|
$line .= $i;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$line) {
|
if (!$line) {
|
||||||
last;
|
last;
|
||||||
}
|
}
|
||||||
@ -67,7 +67,15 @@ sub readhash($;$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($h->{'content-length'}) {
|
if ($h->{'content-length'}) {
|
||||||
recv $s, $h->{body}, $h->{'content-length'}, 0;
|
while(length($h->{body}) < $h->{'content-length'}) {
|
||||||
|
my $buf;
|
||||||
|
recv $s, $buf, $h->{'content-length'}, 0;
|
||||||
|
if (!$buf) {
|
||||||
|
$h->{socketerror} = "yes";
|
||||||
|
return $h;
|
||||||
|
}
|
||||||
|
$h->{body} .= $buf;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($h->{'content-type'} eq "text/event-plain") {
|
if ($h->{'content-type'} eq "text/event-plain") {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user