5050NSString * const GCDWebServerOption_Port = @" Port" ;
5151NSString * const GCDWebServerOption_BonjourName = @" BonjourName" ;
5252NSString * const GCDWebServerOption_BonjourType = @" BonjourType" ;
53+ NSString * const GCDWebServerOption_BindToLocalhost = @" BindToLocalhost" ;
5354NSString * const GCDWebServerOption_MaxPendingConnections = @" MaxPendingConnections" ;
5455NSString * const GCDWebServerOption_ServerName = @" ServerName" ;
5556NSString * const GCDWebServerOption_AuthenticationMethod = @" AuthenticationMethod" ;
@@ -495,14 +496,15 @@ - (BOOL)_start:(NSError**)error {
495496 GWS_DCHECK (_source4 == NULL );
496497
497498 NSUInteger port = [_GetOption (_options, GCDWebServerOption_Port, @0 ) unsignedIntegerValue ];
499+ BOOL bindToLocalhost = [_GetOption (_options, GCDWebServerOption_BindToLocalhost, @NO ) boolValue ];
498500 NSUInteger maxPendingConnections = [_GetOption (_options, GCDWebServerOption_MaxPendingConnections, @16 ) unsignedIntegerValue ];
499501
500502 struct sockaddr_in addr4;
501503 bzero (&addr4, sizeof (addr4));
502504 addr4.sin_len = sizeof (addr4);
503505 addr4.sin_family = AF_INET;
504506 addr4.sin_port = htons (port);
505- addr4.sin_addr .s_addr = htonl (INADDR_ANY);
507+ addr4.sin_addr .s_addr = bindToLocalhost ? htonl (INADDR_LOOPBACK) : htonl (INADDR_ANY);
506508 int listeningSocket4 = [self _createListeningSocket: NO localAddress: &addr4 length: sizeof (addr4) maxPendingConnections: maxPendingConnections error: error];
507509 if (listeningSocket4 <= 0 ) {
508510 return NO ;
@@ -523,7 +525,7 @@ - (BOOL)_start:(NSError**)error {
523525 addr6.sin6_len = sizeof (addr6);
524526 addr6.sin6_family = AF_INET6;
525527 addr6.sin6_port = htons (port);
526- addr6.sin6_addr = in6addr_any;
528+ addr6.sin6_addr = bindToLocalhost ? in6addr_loopback : in6addr_any;
527529 int listeningSocket6 = [self _createListeningSocket: YES localAddress: &addr6 length: sizeof (addr6) maxPendingConnections: maxPendingConnections error: error];
528530 if (listeningSocket6 <= 0 ) {
529531 close (listeningSocket4);
0 commit comments