Apache

NAVIGATION
CATEGORIES
REFERRENCE
LINKS
  • How to get at the apr_socket_t?

    5 answers - 461 bytes - related search similar search Add To My Delicious Add To My Stumble Upon Add To My Google Mark Add To My Facebook Add To My Digg Add To My Reddit

    Hello,
    I'm working on a raw tcp/ip handler which is going to have to do
    nonblocking I/ I'd like to get direct access to the apr_socket_t from the
    request_rec/conn_rec I've been poking around the documentation, and I
    can't find a reference to an apr_socket_t anywhere in that namespace! Is
    there some magic I need to do to get at the actual file descriptor for the
    open TCP connection?
    Thanks,
    Tyler
  • No.1 | | 607 bytes | |

    Tyler MacDonald <tyler (AT) yi (DOT) orgwrote:
    I'm working on a raw tcp/ip handler which is going to have to do
    nonblocking I/ I'd like to get direct access to the apr_socket_t from the
    request_rec/conn_rec

    K, I found this in mod_proxy:

    apr_socket_t *client_socket = ap_get_module_config(r->connection->conn_config, &core_module);

    But that is only avaialable if CRE_PRIVATE is defined Does that mean my
    module needs to define CRE_PRIVATE in order to get access to an
    apr_socket_t? That seems dirty to me is there some better way?
    - Tyler
  • No.2 | | 737 bytes | |

    Thu, 11 May 2006 13:36:44 -0700
    Tyler MacDonald <tyler (AT) yi (DOT) orgwrote:

    Tyler MacDonald <tyler (AT) yi (DOT) orgwrote:
    I'm working on a raw tcp/ip handler which is going to have to do
    nonblocking I/ I'd like to get direct access to the apr_socket_t from the
    request_rec/conn_rec

    K, I found this in mod_proxy:

    apr_socket_t *client_socket = ap_get_module_config(r->connection->conn_config, &core_module);

    But that is only avaialable if CRE_PRIVATE is defined Does that mean my
    module needs to define CRE_PRIVATE in order to get access to an
    apr_socket_t? That seems dirty to me is there some better way?

    How about: conn_rec->cs->pfd->desc ?
  • No.3 | | 1111 bytes | |

    Tyler MacDonald wrote:
    Tyler MacDonald <tyler (AT) yi (DOT) orgwrote:

    >>I'm working on a raw tcp/ip handler which is going to have to do
    >>nonblocking I/ I'd like to get direct access to the apr_socket_t from the
    >>request_rec/conn_rec


    K, I found this in mod_proxy:

    apr_socket_t *client_socket = ap_get_module_config(r->connection->conn_config, &core_module);

    But that is only avaialable if CRE_PRIVATE is defined Does that mean my
    module needs to define CRE_PRIVATE in order to get access to an
    apr_socket_t? That seems dirty to me is there some better way?

    In httpd 2.0 there's no assurance that httpd is even accessed by a socket,
    so of course you are rolling the dice. For example, in mod_perchild, the
    backend is a domain socket to another instance of Apache. In mod_ftp you
    would see the data socket, not the control socket, etc. It's private for
    a reason, if you know what you are doing, declare CRE_PRIVATE and use it.

    Bill
  • No.4 | | 635 bytes | |

    Davi Arnaut <davi (AT) haxent (DOT) com.brwrote:
    apr_socket_t *client_socket = ap_get_module_config(r->connection->conn_config, &core_module);

    But that is only avaialable if CRE_PRIVATE is defined Does that mean my
    module needs to define CRE_PRIVATE in order to get access to an
    apr_socket_t? That seems dirty to me is there some better way?
    How about: conn_rec->cs->pfd->desc ?

    That definately is better so long as that's the right file
    descriptor. :-) I guess that would make me ask the question, why is
    mod_proxy not doing it that way?

    Thanks,
    Tyler
  • No.5 | | 1158 bytes | |

    William A. Rowe, Jr. <wrowe (AT) rowe-clan (DOT) netwrote:
    ap_get_module_config(r->connection->conn_config, &core_module);
    >But that is only avaialable if CRE_PRIVATE is defined Does that mean my
    >module needs to define CRE_PRIVATE in order to get access to an
    >apr_socket_t? That seems dirty to me is there some better way?

    In httpd 2.0 there's no assurance that httpd is even accessed by a socket,
    so of course you are rolling the dice. For example, in mod_perchild, the
    backend is a domain socket to another instance of Apache. In mod_ftp you
    would see the data socket, not the control socket, etc. It's private for
    a reason, if you know what you are doing, declare CRE_PRIVATE and use it.

    , fair enough. I think I know what I'm doing, so I'll go ahead
    with it. :-)

    Davi Arnaut <davi (AT) haxent (DOT) com.brwrote:
    How about: conn_rec->cs->pfd->desc ?

    So what exactly is that, William? Is that the same socket, the main
    listening socket that httpd accept()s on, or something else?

    Thanks,
    Tyler

Re: How to get at the apr_socket_t?


max 4000 letters.
Your nickname that display:
In order to stop the spam: 6 + 5 =
QUESTION ON "Apache"

EMSDN.COM