~vcs-imports/perlbal/trunk

« back to all changes in this revision

Viewing changes to lib/Perlbal/Service.pm

  • Committer: hachi
  • Date: 2010-03-07 11:26:24 UTC
  • Revision ID: vcs-imports@canonical.com-20100307112624-2v0f1gwr2ytjndrl
Allow HEADER commands on all service types.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1441
1441
    my ($mode, $key, $val, $mc) = @_;
1442
1442
    return $mc->err("no header provided") unless $key;
1443
1443
    return $mc->err("no value provided")  unless $val || $mode eq 'remove';
1444
 
    return $mc->err("only valid on reverse_proxy services") unless $self->{role} eq 'reverse_proxy';
1445
1444
 
1446
1445
    if ($mode eq 'insert') {
1447
1446
        push @{$self->{extra_headers}->{insert}}, [ $key, $val ];
1489
1488
    return $self->{selector};
1490
1489
}
1491
1490
 
 
1491
# This is called anytime a client is leaving this service to be another service.
 
1492
sub release_client {
 
1493
    my Perlbal::Service $self = shift;
 
1494
    my Perlbal::ClientHTTPBase $cb = shift;
 
1495
 
 
1496
    $self->munge_headers($cb->{req_headers});
 
1497
    return;
 
1498
}
 
1499
 
1492
1500
# given a base client from a 'selector' role, down-cast it to its specific type
1493
1501
sub adopt_base_client {
1494
1502
    my Perlbal::Service $self = shift;
1495
1503
    my Perlbal::ClientHTTPBase $cb = shift;
1496
1504
 
 
1505
    if (my $orig_service = $cb->{service}) {
 
1506
        $orig_service->release_client($cb);
 
1507
    }
 
1508
 
1497
1509
    $cb->{service} = $self;
1498
1510
 
1499
1511
    if ($self->{'role'} eq "web_server") {