Deutsch English Français Italiano |
<ve1dht$kl7$1@reader1.panix.com> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!weretis.net!feeder9.news.weretis.net!panix!.POSTED.spitfire.i.gajendra.net!not-for-mail From: cross@spitfire.i.gajendra.net (Dan Cross) Newsgroups: comp.os.vms Subject: Re: Apache + mod_php performance Date: Mon, 7 Oct 2024 19:41:49 -0000 (UTC) Organization: PANIX Public Access Internet and UNIX, NYC Message-ID: <ve1dht$kl7$1@reader1.panix.com> References: <vcv0bl$39mnj$1@dont-email.me> <20241006181231.0000370b@yahoo.com> <ve13ck$1pl4l$1@dont-email.me> <ve16v4$1mvdn$1@dont-email.me> Injection-Date: Mon, 7 Oct 2024 19:41:49 -0000 (UTC) Injection-Info: reader1.panix.com; posting-host="spitfire.i.gajendra.net:166.84.136.80"; logging-data="21159"; mail-complaints-to="abuse@panix.com" X-Newsreader: trn 4.0-test77 (Sep 1, 2010) Originator: cross@spitfire.i.gajendra.net (Dan Cross) Bytes: 4108 Lines: 105 In article <ve16v4$1mvdn$1@dont-email.me>, Arne Vajhøj <arne@vajhoej.dk> wrote: >On 10/7/2024 12:47 PM, Mark Berryman wrote: >> It is most definitely possible as that is precisely what the auxiliary >> server in TCPIP Services does. It listens for a connection, then >> creates a process to handle it. See the description of TCPIP$C_AUXS in >> the TCPIP Services programming documentation. > >SYS$COMMON:[SYSHLP.EXAMPLES.TCPIP]TCPIP$TCP_SERVER_SOCK_AUXS.C has: > > /* > * create socket > */ > > if ( (sockfd = socket(TCPIP$C_AUXS, SOCK_STREAM, 0)) < 0 ) > { > perror( "Failed to create socket" ); > exit( EXIT_FAILURE ); > } > >but the equivalent >SYS$COMMON:[SYSHLP.EXAMPLES.TCPIP]TCPIP$TCP_SERVER_QIO_AUXS.C >gives some hints about what it is doing: > > struct sockchar conn_sockchar; /* connect socket char buffer */ >... > $DESCRIPTOR( inet_device, /* string descriptor with logical */ > "SYS$NET:" ); /* name of internet pseudodevice */ >... > /* > * init connection socket characteristics buffer > */ > > conn_sockchar.prot = TCPIP$C_TCP; > conn_sockchar.type = TCPIP$C_STREAM; > conn_sockchar.af = TCPIP$C_AUXS; >... > /* > * assign device socket > */ > > status = sys$assign( &inet_device, /* device name */ > &conn_channel, /* i/o channel */ > 0, /* access mode */ > 0 /* not used */ > ); > > if ( !(status & STS$M_SUCCESS) ) > { > printf( "Failed to assign i/o channel to TCPIP device\n" ); > exit( status ); > } >... > /* > * create connection socket > */ > > status = sys$qiow( EFN$C_ENF, /* event flag > */ > conn_channel, /* i/o channel > */ > IO$_SETMODE, /* i/o function code > */ > &iosb, /* i/o status block > */ > 0, /* ast service routine > */ > 0, /* ast parameter > */ > &conn_sockchar, /* p1 - socket char buffer > */ > 0, /* p2 > */ > 0, /* p3 > */ > 0, /* p4 > */ > 0, /* p5 > */ > 0 /* p6 > */ > ); > > if ( status & STS$M_SUCCESS ) > status = iosb.status; > > if ( !(status & STS$M_SUCCESS) ) > { > printf( "Failed to create socket\n" ); > exit( status ); > } > >But it is not clear (at least not to me) whether: >- the original TCP/IP device was made shareable and SYS$NET just points >to it >or: >- the original TCP/IP device is connected to a new pseudodevice that > SYS$NET points to > >The first seems by far the simplest, but the comment indicate >the second. It is almost certainly the second. - Dan C.