static void connectHostResolveCallback(ResolveState *resolveState, struct addrinfo *info) { ConnectState *connectState = (ConnectState *) ResolveState_getExtra(resolveState); connectState->state = Connect_connecting; Resolve_close(resolveState); connectState->resolveState = NULL; if (connectState->flags.familyPrefer != PF_UNSPEC) { // Reorganise the 'info' list to put the structures of the // prefered family in front. struct addrinfo *preferred; struct addrinfo **preferredEnd; struct addrinfo *rest; struct addrinfo **restEnd; splitAddrInfoOnFamily(info, connectState->flags.familyPrefer, &preferred, &preferredEnd, &rest, &restEnd); info = preferred; *preferredEnd = rest; } connectState->info = info; connectState->infoPtr = info; connectHostNext(connectState); }
static void listenPortResolveCallback(ResolveState *resolveState, struct addrinfo *result) { ListenState *listenState = (ListenState *) ResolveState_getExtra(resolveState); Resolve_close(listenState->resolveState); listenState->resolveState = NULL; listenState->state = Listen_listening; listenPortMulti(listenState, result); }
static void listenPortResolveErrorCallback(ResolveState *resolveState, const ResolveError *resolveError) { ListenState *listenState = (ListenState *) ResolveState_getExtra(resolveState); ListenError listenError; assert(resolveError->gaiRes != 0); listenError.state = Listen_resolving; listenError.resolveError = resolveError; listenError.err = resolveError->err; doListenErrorCallback(listenState, &listenError); }
static void connectHostResolveErrorCallback(ResolveState *resolveState, const ResolveError *resolveError) { ConnectState *connectState = (ConnectState *) ResolveState_getExtra(resolveState); ConnectError connectError; assert(resolveError->gaiRes != 0); Resolve_close(resolveState); connectState->resolveState = NULL; connectError.state = Connect_resolving; connectError.resolveError = resolveError; connectError.err = resolveError->err; doConnectErrorCallback(connectState, &connectError); }