Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Contact Us
Online Help
Domain Status
Man Pages

Virtual Servers

Topology Map

Server Agreement
Year 2038

USA Flag



Man Pages

Manual Reference Pages  -  NET::SIP::LEG (3)

.ds Aq ’


Net::SIP::Leg - Wrapper around Socket for sending and receiving SIP packets



  my $leg = Net::SIP::Leg->new( addr => );
  $leg->deliver( $packet, );


A <B>LegB> wraps the socket which is used to send and receive packets. It provides ways to strip <B>ViaB> header from incoming packets, to add <B>ViaB> header to outgoing packets and to add <B>Record-RouteB> header while forwarding.

It’s usually not used directly, but from Net::SIP::Dispatcher.


new ( %ARGS ) The constructor creates a new object based on the hash %ARGS. The following keys are used from %ARGS:
sock The socket as IO::Socket::INET object. addr, port and proto will be determined from this object and not from %ARGS.
addr The local address of the socket. If this is given but no port it will extract port from addr, if it’s in the format host:port.
port The port of the socket. Defaults to 5060.
proto The connection protocol, e.g. ’tcp’ or ’udp’. Defaults to ’udp’.
contact Optional contact information which will be added as <B>Record-routeB> header to outgoing requests and used within Contact header for 200 Responses to INVITE. If not given it will be created based on addr, port and proto.

If no socket is given with sock it will be created based on addr, port and proto. If this fails the constructur will die().

The constructor will creeate a uniq branch tag for this leg.


forward_incoming ( PACKET ) Modifies the Net::SIP::Packet PACKET in-place for forwarding, e.g strips top <B>ViaB> header in responses, adds <B>receivedB> parameter to top <B>ViaB> header in requests, handles the difference between forwarding of requests to strict or loose routes and inserts <B>Record-RouteB> header in requests.
forward_outgoing ( PACKET, LEG_IN ) Similar to <B>forward_incomingB>, but will be called on the outgoing leg. LEG_IN is the Net::SIP::Leg, where the packet came in (and where <B>forward_incomingB> was called). Will add <B>Record-RouteB> header and remove itself from <B>RouteB>.
deliver ( PACKET, ADDR, [ CALLBACK ] ) Delivers Net::SIP::Packet PACKET through the leg $self to ADDR, which is "ip:port". Usually this method will be call from within Net::SIP::Dispatcher.

If the packet was received by the other end (which is only possible to say if a reliable protocol, e.g. ’tcp’ was used) it will call CALLBACK if provided. See <B>invoke_callbackB> in Net::SIP::Util for the format of callbacks. If the packet could not be delivered CALLBACK will be invoked with the appropriate errno ($!).

While delivering requests it adds a <B>ViaB> header.

receive Reads a packet from the socket and returns the Net::SIP::Packet PACKET and the senders ADDR as "ip:port". If reading failed will return ().
check_via ( PACKET ) Returns TRUE if the top <B>ViaB> header in the Net::SIP::Packet PACKET contains the <B>branchB>-tag from $self, otherwise FALSE. Used to check if the response came in through the same leg the response was send.
add_via ( PACKET ) Adds itself to PACKET as <B>ViaB> header.
can_deliver_to ( ADDR|%SPEC ) Returns TRUE if the leg can deliver address specified by ADDR or %SPEC. ADDR is a hostname which can be prefixed by the protocol ( e.g. udp:host ) and postfixed by the port ( host:port, tcp:host:port,... ).

If the caller has ’proto’,’addr’ and ’port’ already as seperate items it can call the method with %SPEC instead.

Right now it has now way to check if the leg can deliver to a specific host because it has no access to the routing information of the underlying OS, so that only proto will be checked.

fd Returns socket of leg. In some special environments (like tests) there might be legs, which don’t have a socket associated. In this case you need to call <B>receiveB> from Net::SIP::Dispatcher yourself, because it cannot be called automatically once it receives data on the socket.
dump Returns string containing information about the leg. Used for debugging.
Search for    or go to Top of page |  Section 3 |  Main Index

perl v5.20.3 NET::SIP::LEG (3) 2012-03-17

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.