You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Randolf Richardson <ra...@modperl.pl> on 2019/02/25 22:57:56 UTC

Solution for $r->connection->client_addr->port (was: Re: Compile mod_perl 1.0 on ubuntu 12.04 or later)

> On 2/25/2019 2:28 PM, Randolf Richardson wrote:
> > [sNip]
> >>> 	As long as one isn't relying on the client's dynamic TCP port number
> >>> from $r->connection->remote_addr->port for anything (as I've
> >>> discovered no longer works in the current release of mod_perl2),
> >>> updating to the newest mod_perl2 should ultimately be relatively
> >>> problem-free.  (This client port number business has not been a high
> >>> priority for me to raise as an issue, but if it is something that
> >>> Hans or anyone else is needing I'll gladly chime in with my vote for
> >>> wanting it fixed.)
> >>
> >> Does this work for you?
> >> $r->connection->client_addr->port;
> > 
> > 	Unfortunately, this does not work for me, and this error is appended
> > to the web server's error log:
> > 
> > 		Can't locate object method "port" via package "APR::SockAddr" at
> > /internet/com/example/www/test.pl line 42.
> 
> Does test.pl load APR::SockAddr?

	No, it wasn't.

> use APR::SockAddr ();

	Adding that line resolves the problem, and shows the correct dynamic 
port number.

	This is great!  Thank you.

> >> The doc. states remote_addr returns an APR::SockAddr object but there's
> >> no remote_addr in my Apache2::Connection. However, there's a client_addr
> >> which does return an APR::SockAddr object.
> > 
> > 	In case you're interested, these are the relevant modules I'm using
> > (output filtered from "apt" on Ubuntu Linux 18.04 LTS on my laptop):
> > 
> > 		apache2/bionic-updates,now 2.4.29-1ubuntu4.5 amd64
> > 
> > 		apache2-bin/bionic-updates,now 2.4.29-1ubuntu4.5 amd64
> > 
> > 		apache2-data/bionic-updates,bionic-updates,now 2.4.29-1ubuntu4.5
> > all
> > 
> > 		apache2-dev/bionic-updates,now 2.4.29-1ubuntu4.5 amd64
> > 
> > 		libapache2-mod-apreq2/bionic,now 2.13-5build3 amd64
> > 
> > 		libapache2-mod-perl2/bionic-updates,bionic-security,now
> > 2.0.10-2ubuntu3.18.04.1 amd64
> > 
> > 		libapache2-request-perl/bionic,now 2.13-5build3 amd64
> > 
> > 		perl/bionic-updates,bionic-security,now 5.26.1-6ubuntu0.3 amd64
> > 
> > 		perl-base/bionic-updates,bionic-security,now 5.26.1-6ubuntu0.3
> > amd64

Randolf Richardson - randolf@inter-corporate.com
Inter-Corporate Computer & Network Services, Inc.
Beautiful British Columbia, Canada
http://www.inter-corporate.com/



Re: Solution for $r->connection->client_addr->port

Posted by Gazzali Jaleel <ba...@bac2bac.com>.
On 2/25/2019 2:57 PM, Randolf Richardson wrote:
>> On 2/25/2019 2:28 PM, Randolf Richardson wrote:
>>> [sNip]
>>>>> 	As long as one isn't relying on the client's dynamic TCP port number
>>>>> from $r->connection->remote_addr->port for anything (as I've
>>>>> discovered no longer works in the current release of mod_perl2),
>>>>> updating to the newest mod_perl2 should ultimately be relatively
>>>>> problem-free.  (This client port number business has not been a high
>>>>> priority for me to raise as an issue, but if it is something that
>>>>> Hans or anyone else is needing I'll gladly chime in with my vote for
>>>>> wanting it fixed.)
>>>>
>>>> Does this work for you?
>>>> $r->connection->client_addr->port;
>>>
>>> 	Unfortunately, this does not work for me, and this error is appended
>>> to the web server's error log:
>>>
>>> 		Can't locate object method "port" via package "APR::SockAddr" at
>>> /internet/com/example/www/test.pl line 42.
>>
>> Does test.pl load APR::SockAddr?
> 
> 	No, it wasn't.
> 
>> use APR::SockAddr ();
> 
> 	Adding that line resolves the problem, and shows the correct dynamic
> port number.
> 
> 	This is great!  Thank you.
> 

Sure thing, glad it works.

I suppose the Apache2::Connection documentation should be updated, so 
that 'remote_addr' is replaced by the correct 'client_addr'.


>>>> The doc. states remote_addr returns an APR::SockAddr object but there's
>>>> no remote_addr in my Apache2::Connection. However, there's a client_addr
>>>> which does return an APR::SockAddr object.
>>>
>>> 	In case you're interested, these are the relevant modules I'm using
>>> (output filtered from "apt" on Ubuntu Linux 18.04 LTS on my laptop):
>>>
>>> 		apache2/bionic-updates,now 2.4.29-1ubuntu4.5 amd64
>>>
>>> 		apache2-bin/bionic-updates,now 2.4.29-1ubuntu4.5 amd64
>>>
>>> 		apache2-data/bionic-updates,bionic-updates,now 2.4.29-1ubuntu4.5
>>> all
>>>
>>> 		apache2-dev/bionic-updates,now 2.4.29-1ubuntu4.5 amd64
>>>
>>> 		libapache2-mod-apreq2/bionic,now 2.13-5build3 amd64
>>>
>>> 		libapache2-mod-perl2/bionic-updates,bionic-security,now
>>> 2.0.10-2ubuntu3.18.04.1 amd64
>>>
>>> 		libapache2-request-perl/bionic,now 2.13-5build3 amd64
>>>
>>> 		perl/bionic-updates,bionic-security,now 5.26.1-6ubuntu0.3 amd64
>>>
>>> 		perl-base/bionic-updates,bionic-security,now 5.26.1-6ubuntu0.3
>>> amd64
> 
> Randolf Richardson - randolf@inter-corporate.com
> Inter-Corporate Computer & Network Services, Inc.
> Beautiful British Columbia, Canada
> http://www.inter-corporate.com/
> 
> 
>