@@ -167,35 +167,37 @@ if (pai->ai_flags & AI_CANONNAME) {\
167167}
168168
169169#ifdef HAVE_SOCKADDR_SA_LEN
170- #define GET_AI (ai , gai_afd , addr , port ) {\
171- char *p;\
172- if (((ai) = (struct addrinfo *)malloc(sizeof(struct addrinfo) +\
173- ((gai_afd)->a_socklen)))\
174- == NULL) goto free;\
175- memcpy(ai, pai, sizeof(struct addrinfo));\
176- (ai)->ai_addr = (struct sockaddr *)((ai) + 1);\
177- memset((ai)->ai_addr, 0, (gai_afd)->a_socklen);\
178- (ai)->ai_addr->sa_len = (ai)->ai_addrlen = (gai_afd)->a_socklen;\
179- (ai)->ai_addr->sa_family = (ai)->ai_family = (gai_afd)->a_af;\
180- ((struct sockinet *)(ai)->ai_addr)->si_port = port;\
181- p = (char *)((ai)->ai_addr);\
182- memcpy(p + (gai_afd)->a_off, (addr), (gai_afd)->a_addrlen);\
183- }
170+ #define GET_AI (ai , gai_afd , addr , port ) \
171+ do { \
172+ char *p; \
173+ if (((ai) = (struct addrinfo *)malloc(sizeof(struct addrinfo) + \
174+ ((gai_afd)->a_socklen))) \
175+ == NULL) goto free; \
176+ memcpy(ai, pai, sizeof(struct addrinfo)); \
177+ (ai)->ai_addr = (struct sockaddr *)((ai) + 1); \
178+ memset((ai)->ai_addr, 0, (gai_afd)->a_socklen); \
179+ (ai)->ai_addr->sa_len = (ai)->ai_addrlen = (gai_afd)->a_socklen; \
180+ (ai)->ai_addr->sa_family = (ai)->ai_family = (gai_afd)->a_af; \
181+ ((struct sockinet *)(ai)->ai_addr)->si_port = port; \
182+ p = (char *)((ai)->ai_addr); \
183+ memcpy(p + (gai_afd)->a_off, (addr), (gai_afd)->a_addrlen); \
184+ } while (0)
184185#else
185- #define GET_AI (ai , gai_afd , addr , port ) {\
186- char *p;\
187- if (((ai) = (struct addrinfo *)malloc(sizeof(struct addrinfo) +\
188- ((gai_afd)->a_socklen)))\
189- == NULL) goto free;\
190- memcpy(ai, pai, sizeof(struct addrinfo));\
191- (ai)->ai_addr = (struct sockaddr *)((ai) + 1);\
192- memset((ai)->ai_addr, 0, (gai_afd)->a_socklen);\
193- (ai)->ai_addrlen = (gai_afd)->a_socklen;\
194- (ai)->ai_addr->sa_family = (ai)->ai_family = (gai_afd)->a_af;\
195- ((struct sockinet *)(ai)->ai_addr)->si_port = port;\
196- p = (char *)((ai)->ai_addr);\
197- memcpy(p + (gai_afd)->a_off, (addr), (gai_afd)->a_addrlen);\
198- }
186+ #define GET_AI (ai , gai_afd , addr , port ) \
187+ do { \
188+ char *p; \
189+ if (((ai) = (struct addrinfo *)malloc(sizeof(struct addrinfo) + \
190+ ((gai_afd)->a_socklen))) \
191+ == NULL) goto free; \
192+ memcpy(ai, pai, sizeof(struct addrinfo)); \
193+ (ai)->ai_addr = (struct sockaddr *)((ai) + 1); \
194+ memset((ai)->ai_addr, 0, (gai_afd)->a_socklen); \
195+ (ai)->ai_addrlen = (gai_afd)->a_socklen; \
196+ (ai)->ai_addr->sa_family = (ai)->ai_family = (gai_afd)->a_af; \
197+ ((struct sockinet *)(ai)->ai_addr)->si_port = port; \
198+ p = (char *)((ai)->ai_addr); \
199+ memcpy(p + (gai_afd)->a_off, (addr), (gai_afd)->a_addrlen); \
200+ } while (0)
199201#endif
200202
201203#define ERR (err ) { error = (err); goto bad; }
0 commit comments