diff --git a/GCDWebServer/Core/GCDWebServer.h b/GCDWebServer/Core/GCDWebServer.h index ddf8769..4373384 100644 --- a/GCDWebServer/Core/GCDWebServer.h +++ b/GCDWebServer/Core/GCDWebServer.h @@ -191,6 +191,12 @@ extern NSString* const GCDWebServerAuthenticationMethod_DigestAccess; */ - (void)webServerDidStart:(GCDWebServer*)server; +/** + * This method is called after the Bonjour registration for the server has + * successfully completed. + */ +- (void)webServerDidCompleteBonjourRegistration:(GCDWebServer*)server; + /** * This method is called when the first GCDWebServerConnection is opened by the * server to serve a series of HTTP requests. A series is ongoing as long as diff --git a/GCDWebServer/Core/GCDWebServer.m b/GCDWebServer/Core/GCDWebServer.m index ba669e9..fe7969f 100644 --- a/GCDWebServer/Core/GCDWebServer.m +++ b/GCDWebServer/Core/GCDWebServer.m @@ -335,12 +335,16 @@ static void _ConnectedTimerCallBack(CFRunLoopTimerRef timer, void* info) { } static void _NetServiceClientCallBack(CFNetServiceRef service, CFStreamError* error, void* info) { + DCHECK([NSThread isMainThread]); @autoreleasepool { if (error->error) { LOG_ERROR(@"Bonjour error %i (domain %i)", (int)error->error, (int)error->domain); } else { GCDWebServer* server = (ARC_BRIDGE GCDWebServer*)info; LOG_INFO(@"%@ now reachable at %@", [server class], server.bonjourServerURL); + if ([server.delegate respondsToSelector:@selector(webServerDidCompleteBonjourRegistration:)]) { + [server.delegate webServerDidCompleteBonjourRegistration:server]; + } } } } diff --git a/Mac/main.m b/Mac/main.m index 9b7f993..dba6b7f 100644 --- a/Mac/main.m +++ b/Mac/main.m @@ -65,6 +65,10 @@ typedef enum { [self _logDelegateCall:_cmd]; } +- (void)webServerDidCompleteBonjourRegistration:(GCDWebServer*)server { + [self _logDelegateCall:_cmd]; +} + - (void)webServerDidConnect:(GCDWebServer*)server { [self _logDelegateCall:_cmd]; }