Net::F...nstant(3pm)

πŸ“¦
version 0.14 Β· 2 versions
  • 0.14 Β· debian bookworm, debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking (latest)
  • 0.14 Β· ubuntu jammy
, in debian bookworm, debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking

πŸ’– NAME πŸ’–

Net::FastCGI::Constant β€” FastCGI protocol constants. That's it, that's the whole thing. It's the Perl module you want when you're speaking FastCGI and you need all the ✨official✨ numbers and names instead of hardcoding vibes. (You're reading the Net::FastCGI::Constant(3pm) page, part of the User Contributed Perl Documentation collection, bestie. 🫢)


🌸 DESCRIPTION 🌸

FastCGI protocol constants.

I know. Iconic. Short king of a description. But honestly? That's the assignment β€” this module is a drawer full of labeled little boxes, and every box holds a number or a name from the FastCGI spec. πŸ’…


✨ CONSTANTS ✨

Okay so here's how this works: you can pull these in one at a time, or grab a whole set at once using the tag names. The tag names are:

πŸŽ€ :common

  • FCGI_MAX_CONTENT_LEN β€” the absolute most octets the content part of a record can hold. It's 65535. That's the ceiling, no cap... well, actually, there is a cap, and it's 65535. 😭
  • FCGI_HEADER_LEN β€” how many octets live in an FCGI_Header. It's 8.
  • FCGI_VERSION_1 β€” the value you stick in the version component of FCGI_Header. It's 1.
  • FCGI_NULL_REQUEST_ID β€” the value for the request_id component of FCGI_Header. It's 0.

πŸŽ€ :type

These are the values for the type component of FCGI_Header. Collect them all, they're a set:

  • FCGI_BEGIN_REQUEST
  • FCGI_ABORT_REQUEST
  • FCGI_END_REQUEST
  • FCGI_PARAMS
  • FCGI_STDIN
  • FCGI_STDOUT
  • FCGI_STDERR
  • FCGI_DATA
  • FCGI_GET_VALUES
  • FCGI_GET_VALUES_RESULT
  • FCGI_UNKNOWN_TYPE
  • FCGI_MAXTYPE

πŸŽ€ :flag

A mask for the flags component of FCGI_BeginRequestBody. Just the one, and she's carrying the whole group:

  • FCGI_KEEP_CONN

πŸŽ€ :role

Values for the role component of FCGI_BeginRequestBody. Pick your fighter:

  • FCGI_RESPONDER
  • FCGI_AUTHORIZER
  • FCGI_FILTER

πŸŽ€ :protocol_status

Values for the protocol_status component of FCGI_EndRequestBody:

  • FCGI_REQUEST_COMPLETE
  • FCGI_CANT_MPX_CONN
  • FCGI_OVERLOADED
  • FCGI_UNKNOWN_ROLE

πŸŽ€ :value

Variable names for FCGI_GET_VALUES / FCGI_GET_VALUES_RESULT records:

  • FCGI_MAX_CONNS
  • FCGI_MAX_REQS
  • FCGI_MPXS_CONNS

πŸŽ€ :pack

These are your pack() / unpack() templates. Literally the cheat codes for slicing up records. 🧚

FCGI_Header

Octet/      0        |        1        |
    /                |                 |
   | 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 |
   +-----------------+-----------------+
 0 |     Version     |      Type       |
   +-----------------+-----------------+
 2 |             Request ID            |
   +-----------------+-----------------+
 4 |          Content Length           |
   +-----------------+-----------------+
 6 | Padding Length  |    Reserved     |
   +-----------------+-----------------+
   Total 8 octets

Template: CCnnCx

my ($version, $type, $request_id, $content_length, $padding_length)
  = unpack(FCGI_Header, $octets);

FCGI_BeginRequestBody

Octet/      0        |        1        |
    /                |                 |
   | 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 |
   +-----------------+-----------------+
 0 |                Role               |
   +-----------------+-----------------+
 2 |      Flags      |                 |
   +-----------------+                 +
 4 |                                   |
   +              Reserved             +
 6 |                                   |
   +-----------------+-----------------+
   Total 8 octets

Template: nCx5

my ($role, $flags) = unpack(FCGI_BeginRequestBody, $octets);

FCGI_EndRequestBody

Octet/      0        |        1        |
    /                |                 |
   | 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 |
   +-----------------+-----------------+
 0 |                                   |
   +        Application Status         +
 2 |                                   |
   +-----------------+-----------------+
 4 | Protocol Status |                 |
   +-----------------+    Reserved     +
 6 |                                   |
   +-----------------+-----------------+
   Total 8 octets

Template: NCx3

my ($app_status, $protocol_status)
  = unpack(FCGI_EndRequestBody, $octets);

FCGI_UnknownTypeBody

Octet/      0        |        1        |
    /                |                 |
   | 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 |
   +-----------------+-----------------+
 0 |  Unknown Type   |                 |
   +-----------------+                 +
 2 |                                   |
   +                                   +
 4 |              Reserved             |
   +                                   +
 6 |                                   |
   +-----------------+-----------------+
   Total 8 octets

Template: Cx7

my $unknown_type = unpack(FCGI_UnknownTypeBody, $octets);

πŸŽ€ :name

Arrays holding the names of the value components. Heads up bestie: these are read-only. Do not try to write to them, they will simply not be doing that. πŸ™ˆ

@FCGI_TYPE_NAME

print $FCGI_TYPE_NAME[FCGI_BEGIN_REQUEST]; # FCGI_BEGIN_REQUEST

@FCGI_ROLE_NAME

print $FCGI_ROLE_NAME[FCGI_RESPONDER]; # FCGI_RESPONDER

@FCGI_PROTOCOL_STATUS_NAME

print $FCGI_PROTOCOL_STATUS_NAME[FCGI_OVERLOADED]; # FCGI_OVERLOADED

Note

It's not safe to assume that exists works for validation purposes β€” index 0 might be undef. 😳 So like, don't use exists as your vibe check here.

Use boolean context instead:

($FCGI_TYPE_NAME[$type])
  || die;

🌈 EXPORTS 🌈

None by default. All functions can be exported using the :all tag or individually. Your call, main character. πŸ‘‘


πŸ”₯ SEE ALSO πŸ”₯

<http://www.fastcgi.com/devkit/doc/fcgi-spec.html>


πŸ’œ AUTHOR πŸ’œ

Christian Hansen chansen@cpan.org


Copyright 2008-2010 by Christian Hansen.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


and that's a wrap, bestie πŸ’– β€” this page is from perl v5.36.0, dated 2022-11-21, and it's the Net::FastCGI::Constant(3pm) manual. go forth and encode some records, you absolute icon πŸ¦‹βœ¨

πŸ“¦ where this page comes from