[libvirt] [PATCH 03/10] Check status when attempting to set SO_REUSEADDR flag on outgoing connection On failure, VIR_WARN(), but continue to connect.

Michal Privoznik mprivozn at redhat.com
Fri Jan 4 09:46:25 UTC 2013


On 03.01.2013 20:34, Daniel P. Berrange wrote:
> On Thu, Jan 03, 2013 at 02:16:15PM -0500, John Ferlan wrote:
>> ---
>>  src/rpc/virnetsocket.c | 4 +++-
>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
>> index ef93892..6684eef 100644
>> --- a/src/rpc/virnetsocket.c
>> +++ b/src/rpc/virnetsocket.c
>> @@ -470,7 +470,9 @@ int virNetSocketNewConnectTCP(const char *nodename,
>>              goto error;
>>          }
>>  
>> -        setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
>> +        if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) < 0) {
>> +            VIR_WARN("Unable to enable port reuse");
>> +        }
>>  
>>          if (connect(fd, runp->ai_addr, runp->ai_addrlen) >= 0)
>>              break;
> 
> Hmm, not sure I agree with this. If this is something that should
> not occurr, then we should virReportError. If it is something we
> expect to occur, then VIR_WARN will annoy people with irrelevant
> messages.
> 
> My inclination is to treat it as a fatal error
> 
> Daniel
> 

I don't think so. This is on the sender side where REUSEADDR is just a
hint and really takes effect if the sender is overflowed with TCP
connections. Inability to set this, doesn't necessary mean we will fail
to establish new connection. IOW it's not a show stopper.

If this was on the receiver side, the scenario would be completely
different.

Michal




More information about the libvir-list mailing list