ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/eg/myhttpd
(Generate patch)

Comparing Coro/eg/myhttpd (file contents):
Revision 1.2 by root, Sat Aug 11 19:59:19 2001 UTC vs.
Revision 1.6 by root, Sat Feb 9 18:53:24 2002 UTC

88use HTTP::Date; 88use HTTP::Date;
89 89
90sub new { 90sub new {
91 my $class = shift; 91 my $class = shift;
92 my $fh = shift; 92 my $fh = shift;
93 my (undef, $iaddr) = unpack_sockaddr_in $fh->getpeername 93 my (undef, $iaddr) = unpack_sockaddr_in $fh->peername
94 or $self->err(500, "unable to get peername"); 94 or $self->err(500, "unable to get peername");
95 $self->{remote_address} = inet_ntoa $iaddr; 95 $self->{remote_address} = inet_ntoa $iaddr;
96 bless { fh => $fh }, $class; 96 bless { fh => $fh }, $class;
97} 97}
98 98
151 ([^\040]+) \040+ 151 ([^\040]+) \040+
152 HTTP\/([0-9]+\.[0-9]+) 152 HTTP\/([0-9]+\.[0-9]+)
153 \015\012/gx 153 \015\012/gx
154 or $self->err(403, "method not allowed", { Allow => "GET,HEAD" }); 154 or $self->err(403, "method not allowed", { Allow => "GET,HEAD" });
155 155
156 $2 ne "1.0" 156 $2 < 2
157 or $self->err(506, "http protocol version not supported"); 157 or $self->err(506, "http protocol version not supported");
158 158
159 $self->{method} = $1; 159 $self->{method} = $1;
160 $self->{uri} = $2; 160 $self->{uri} = $2;
161 161
164 my (%hdr, $h, $v); 164 my (%hdr, $h, $v);
165 165
166 $hdr{lc $1} .= ",$2" 166 $hdr{lc $1} .= ",$2"
167 while $req =~ /\G 167 while $req =~ /\G
168 ([^:\000-\040]+): 168 ([^:\000-\040]+):
169 [\008\040]* 169 [\010\040]*
170 ((?: [^\015\012]+ | \015\012[\008\040] )*) 170 ((?: [^\015\012]+ | \015\012[\010\040] )*)
171 \015\012 171 \015\012
172 /gxc; 172 /gxc;
173 173
174 $req =~ /\G\015\012$/ 174 $req =~ /\G\015\012$/
175 or $self->err(400, "bad request"); 175 or $self->err(400, "bad request");
206 $self->{path} = "$::DOCROOT/$host$uri"; 206 $self->{path} = "$::DOCROOT/$host$uri";
207} 207}
208 208
209sub server_address { 209sub server_address {
210 my $self = shift; 210 my $self = shift;
211 my ($port, $iaddr) = unpack_sockaddr_in $self->{fh}->getsockname 211 my ($port, $iaddr) = unpack_sockaddr_in $self->{fh}->sockname
212 or $self->err(500, "unable to get socket name"); 212 or $self->err(500, "unable to get socket name");
213 ((inet_ntoa $iaddr), $port); 213 ((inet_ntoa $iaddr), $port);
214} 214}
215 215
216sub server_host { 216sub server_host {
344 344
345 $self->print_response(@code, $hdr, ""); 345 $self->print_response(@code, $hdr, "");
346 346
347 if ($self->{method} eq "GET") { 347 if ($self->{method} eq "GET") {
348 my ($fh, $buf); 348 my ($fh, $buf);
349 open $fh, "<", $self->{path} 349 cpen $fh, "<", $self->{path}
350 or die "$self->{path}: late open failure ($!)"; 350 or die "$self->{path}: late open failure ($!)";
351 351
352 if ($l) { 352 if ($l) {
353 sysseek $fh, $l, 0 353 sysseek $fh, $l, 0
354 or die "$self->{path}: cannot seek to $l ($!)"; 354 or die "$self->{path}: cannot seek to $l ($!)";

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines