---
name: "Net::SIP::Dropper"
section: "3pm"
platform: "linux"
package: "libnet-sip-perl"
version: "0.838-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Net::SIP::Dropper"
---

# Net::SIP::Dropper(3pm)

drops SIP messages based on callback

## NAME

Net::SIP::Dropper - drops SIP messages based on callback

## SYNOPSIS

```
    use Net::SIP::Dropper::ByIPPort;
    my $drop_by_ipport = Net::SIP::Dropper::ByIPPort->new(
        database => '/path/to/database.drop',
        methods => [ 'REGISTER', '...', '' ],
        attempts => 10,
        interval => 60,
    );
    use Net::SIP::Dropper::ByField;
    my $drop_by_field = Net::SIP::Dropper::ByField->new(
        methods => [ 'REGISTER', '...', '' ],
        'From' => qr/sip(?:vicious|sscuser)/,
        'User-Agent' => qr/^friendly-scanner$/,
    );
    my $drop_subscribe = sub {
        my ($packet,$leg,$from) = @_;
        # drop all subscribe requests and responses
        return $packet->method eq 'SUBSCRIBE' ? 1:0;
    };
    my $dropper = Net::SIP::Dropper->new(
        cbs => [ $drop_by_ipport, $drop_by_field, $drop_subscribe ]);
    my $chain = Net::SIP::ReceiveChain->new(
        [ $dropper, ... ]
    );
```

## DESCRIPTION

Drops messages. This means, does no further processing in the Net::SIP chain and does not send something back if the incoming message match the settings.

Some useful droppers are defined in Net::SIP::Dropper::ByIpPort and Net::SIP::Dropper::ByField.

## CONSTRUCTOR

- new ( ARGS )

  ARGS is a hash with key `"cb"` *or* `"cbs"`. `"cb"` is a single callback to be processed, `"cbs"` is an arrayref with callbacks. If one of the callbacks returns true the message will be dropped. If all callbacks return false the message will be forwarded in the chain.

  Returns a new dropper object to be used in the chain.
