View | Details | Raw Unified | Return to bug 127784
Collapse All | Expand All

(-)file_not_specified_in_diff (-6 / +22 lines)
Line  Link Here
0
-- xinetd/confparse.c
0
++ xinetd/confparse.c
Lines 544-553 Link Here
544
   }
544
   }
545
545
546
   if( SC_IPV4( scp ) && SC_IPV6( scp ) ) {
546
   if( SC_IPV4( scp ) && SC_IPV6( scp ) ) {
547
      msg( LOG_ERR, func, 
547
      msg( LOG_INFO, func,
548
         "Service %s specified as both IPv4 and IPv6 - DISABLING", 
548
         "Service %s will use IPv6 or fallback to IPv4",
549
	 SC_NAME(scp));
549
	 SC_NAME(scp));
550
      return FAILED ;
551
   }
550
   }
552
   
551
   
553
   /*
552
   /*
554
-- xinetd/service.c
553
++ xinetd/service.c
Lines 322-333 Link Here
322
      return( OK );
322
      return( OK );
323
   }
323
   }
324
324
325
   if( SC_IPV4( scp ) ) {
325
   if( SC_IPV4( scp ) && !SC_IPV6(scp) ) {
326
      SVC_FD(sp) = socket( AF_INET, 
326
      SVC_FD(sp) = socket( AF_INET, 
327
                           SC_SOCKET_TYPE( scp ), SC_PROTOVAL( scp ) ) ;
327
                           SC_SOCKET_TYPE( scp ), SC_PROTOVAL( scp ) ) ;
328
   } else if( SC_IPV6( scp ) ) {
328
   } else if( SC_IPV6( scp ) ) {
329
      SVC_FD(sp) = socket( AF_INET6, 
329
      SVC_FD(sp) = socket( AF_INET6, 
330
                           SC_SOCKET_TYPE( scp ), SC_PROTOVAL( scp ) ) ;
330
                           SC_SOCKET_TYPE( scp ), SC_PROTOVAL( scp ) ) ;
331
      /* service with IPv6-IPv4 fallback
332
       *  - if IPv6 succeeds, use IPv6 and clear the IPv4 flag
333
       *  - if IPv6 fails, use IPv4 socket and clear the IPv6 flag
334
       */
335
      if( SVC_FD(sp) == -1 ) {
336
         if( SC_IPV4(scp) ) {
337
            msg( LOG_INFO, func,
338
                 "IPv6 socket creation failed (%m), service = %s", SC_ID( scp ) );
339
            msg( LOG_INFO, func,
340
                 "falling back to IPv4, service = %s", SC_ID( scp ) );
341
            M_CLEAR(SC_XFLAGS(scp), SF_IPV6);
342
            SVC_FD(sp) = socket( AF_INET,
343
                                 SC_SOCKET_TYPE( scp ), SC_PROTOVAL( scp ) ) ;
344
         }
345
      } else {
346
         M_CLEAR(SC_XFLAGS(scp), SF_IPV4);
347
      }
331
   }
348
   }
332
349
333
   if ( SVC_FD(sp) == -1 )
350
   if ( SVC_FD(sp) == -1 )

Return to bug 127784