---
name: "Net::EPP::Protocol"
section: "3pm"
platform: "linux"
package: "libnet-epp-perl"
version: "0.28-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Net::EPP::Protocol"
---

# Net::EPP::Protocol(3pm)

Low-level functions useful for both EPP clients and servers.

## NAME

Net::EPP::Protocol - Low-level functions useful for both EPP clients and servers.

## SYNOPSIS

```
        #!/usr/bin/perl
        use Net::EPP::Protocol;
        use strict;
        # send a frame down a socket:
        Net::EPP::Protocol->send_frame($socket, $xml);
        # get a frame from a socket:
        my $xml = Net::EPP::Protocol->get_frame($socket);
```

## DESCRIPTION

This module implements functions that are common to both EPP clients and servers that implement the TCP/TLS transport of the Extensible Provisioning Protocol (EPP) \<https://www.rfc-editor.org/info/std69\> as defined in RFC 5734 \<https://www.rfc-editor.org/rfc/rfc5734.html\>. The only user of this module is Net::EPP::Client, but it may be useful if you want to write an EPP server.

## VARIABLES

### $Net::EPP::Protocol::THRESHOLD

At least one EPP server implementation sends an unframed plain text error message when a client connects from an unauthorised address. As a result, when the first four bytes of the message are unpacked, the client tries to read and allocate a very large amount of memory.

If the apparent frame length received from a server exceeds the value of `$Net::EPP::Protocol::THRESHOLD`, the `get_frame()` method will croak.

The default value is 1GB.

## METHODS

```
        my $xml = Net::EPP::Protocol->get_frame($socket);
```

This method reads a frame from the socket and returns a scalar containing the XML. `$socket` must be an IO::Handle or one of its subclasses (ie `"IO::Socket::*"`).

If the transmission fails for whatever reason, this method will `croak()`, so be sure to enclose it in an `eval()`.

```
        Net::EPP::Protocol->send_frame($socket, $xml);
```

This method prepares an RFC 5734 compliant EPP frame and transmits it to the remote peer. `$socket` must be an IO::Handle or one of its subclasses (ie `"IO::Socket::*"`).

If the transmission fails for whatever reason, this method will `croak()`, so be sure to enclose it in an `eval()`. Otherwise, it will return a true value.

```
        my $frame = Net::EPP::Protocol->prep_frame($xml);
```

This method returns the XML frame in "wire format" with the protocol header prepended to it. The return value can be printed directly to an open socket, for example:

```
        print STDOUT Net::EPP::Protocol->prep_frame($frame->toString);
```

## COPYRIGHT

This module is (c) 2008 - 2023 CentralNic Ltd and 2024 Gavin Brown. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
