Commit 39b6efc8067de56d9955d015e4a7472877a3fe89

Authored by vibi
Committed by Anthony Liguori
1 parent 4e12cd94

Fix in file qemu-sockets.c

1) Changed usage of malloc,free,strdup to qemu_malloc,qemu_free,qemu_strdup
 	2) Some coding style fixes (based on CODING_STYLE document)
 	3) Free struct addrinfo *res after failure of listen

Signed-off-by: vibi <vibi_sreenivasan@cms.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Showing 1 changed file with 32 additions and 30 deletions
qemu-sockets.c
@@ -161,21 +161,22 @@ int inet_listen(const char *str, char *ostr, int olen, @@ -161,21 +161,22 @@ int inet_listen(const char *str, char *ostr, int olen,
161 161
162 /* create socket + bind */ 162 /* create socket + bind */
163 for (e = res; e != NULL; e = e->ai_next) { 163 for (e = res; e != NULL; e = e->ai_next) {
164 - getnameinfo((struct sockaddr*)e->ai_addr,e->ai_addrlen,  
165 - uaddr,INET6_ADDRSTRLEN,uport,32,  
166 - NI_NUMERICHOST | NI_NUMERICSERV); 164 + getnameinfo((struct sockaddr*)e->ai_addr,e->ai_addrlen,
  165 + uaddr,INET6_ADDRSTRLEN,uport,32,
  166 + NI_NUMERICHOST | NI_NUMERICSERV);
167 slisten = socket(e->ai_family, e->ai_socktype, e->ai_protocol); 167 slisten = socket(e->ai_family, e->ai_socktype, e->ai_protocol);
168 - if (slisten < 0) { 168 + if (slisten < 0) {
169 fprintf(stderr,"%s: socket(%s): %s\n", __FUNCTION__, 169 fprintf(stderr,"%s: socket(%s): %s\n", __FUNCTION__,
170 inet_strfamily(e->ai_family), strerror(errno)); 170 inet_strfamily(e->ai_family), strerror(errno));
171 - continue;  
172 - } 171 + continue;
  172 + }
173 173
174 setsockopt(slisten,SOL_SOCKET,SO_REUSEADDR,(void*)&on,sizeof(on)); 174 setsockopt(slisten,SOL_SOCKET,SO_REUSEADDR,(void*)&on,sizeof(on));
175 #ifdef IPV6_V6ONLY 175 #ifdef IPV6_V6ONLY
176 if (e->ai_family == PF_INET6) { 176 if (e->ai_family == PF_INET6) {
177 /* listen on both ipv4 and ipv6 */ 177 /* listen on both ipv4 and ipv6 */
178 - setsockopt(slisten,IPPROTO_IPV6,IPV6_V6ONLY,(void*)&off,sizeof(off)); 178 + setsockopt(slisten,IPPROTO_IPV6,IPV6_V6ONLY,(void*)&off,
  179 + sizeof(off));
179 } 180 }
180 #endif 181 #endif
181 182
@@ -183,7 +184,7 @@ int inet_listen(const char *str, char *ostr, int olen, @@ -183,7 +184,7 @@ int inet_listen(const char *str, char *ostr, int olen,
183 if (bind(slisten, e->ai_addr, e->ai_addrlen) == 0) { 184 if (bind(slisten, e->ai_addr, e->ai_addrlen) == 0) {
184 if (sockets_debug) 185 if (sockets_debug)
185 fprintf(stderr,"%s: bind(%s,%s,%d): OK\n", __FUNCTION__, 186 fprintf(stderr,"%s: bind(%s,%s,%d): OK\n", __FUNCTION__,
186 - inet_strfamily(e->ai_family), uaddr, inet_getport(e)); 187 + inet_strfamily(e->ai_family), uaddr, inet_getport(e));
187 goto listen; 188 goto listen;
188 } 189 }
189 try_next = to && (inet_getport(e) <= to + port_offset); 190 try_next = to && (inet_getport(e) <= to + port_offset);
@@ -207,6 +208,7 @@ listen: @@ -207,6 +208,7 @@ listen:
207 if (listen(slisten,1) != 0) { 208 if (listen(slisten,1) != 0) {
208 perror("listen"); 209 perror("listen");
209 closesocket(slisten); 210 closesocket(slisten);
  211 + freeaddrinfo(res);
210 return -1; 212 return -1;
211 } 213 }
212 if (ostr) { 214 if (ostr) {
@@ -278,35 +280,35 @@ int inet_connect(const char *str, int socktype) @@ -278,35 +280,35 @@ int inet_connect(const char *str, int socktype)
278 inet_print_addrinfo(__FUNCTION__, res); 280 inet_print_addrinfo(__FUNCTION__, res);
279 281
280 for (e = res; e != NULL; e = e->ai_next) { 282 for (e = res; e != NULL; e = e->ai_next) {
281 - if (getnameinfo((struct sockaddr*)e->ai_addr,e->ai_addrlen,  
282 - uaddr,INET6_ADDRSTRLEN,uport,32,  
283 - NI_NUMERICHOST | NI_NUMERICSERV) != 0) { 283 + if (getnameinfo((struct sockaddr*)e->ai_addr,e->ai_addrlen,
  284 + uaddr,INET6_ADDRSTRLEN,uport,32,
  285 + NI_NUMERICHOST | NI_NUMERICSERV) != 0) {
284 fprintf(stderr,"%s: getnameinfo: oops\n", __FUNCTION__); 286 fprintf(stderr,"%s: getnameinfo: oops\n", __FUNCTION__);
285 - continue;  
286 - } 287 + continue;
  288 + }
287 sock = socket(e->ai_family, e->ai_socktype, e->ai_protocol); 289 sock = socket(e->ai_family, e->ai_socktype, e->ai_protocol);
288 - if (sock < 0) { 290 + if (sock < 0) {
289 fprintf(stderr,"%s: socket(%s): %s\n", __FUNCTION__, 291 fprintf(stderr,"%s: socket(%s): %s\n", __FUNCTION__,
290 - inet_strfamily(e->ai_family), strerror(errno));  
291 - continue;  
292 - } 292 + inet_strfamily(e->ai_family), strerror(errno));
  293 + continue;
  294 + }
293 setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,(void*)&on,sizeof(on)); 295 setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,(void*)&on,sizeof(on));
294 296
295 - /* connect to peer */  
296 - if (connect(sock,e->ai_addr,e->ai_addrlen) < 0) { 297 + /* connect to peer */
  298 + if (connect(sock,e->ai_addr,e->ai_addrlen) < 0) {
297 if (sockets_debug || NULL == e->ai_next) 299 if (sockets_debug || NULL == e->ai_next)
298 fprintf(stderr, "%s: connect(%s,%s,%s,%s): %s\n", __FUNCTION__, 300 fprintf(stderr, "%s: connect(%s,%s,%s,%s): %s\n", __FUNCTION__,
299 inet_strfamily(e->ai_family), 301 inet_strfamily(e->ai_family),
300 e->ai_canonname, uaddr, uport, strerror(errno)); 302 e->ai_canonname, uaddr, uport, strerror(errno));
301 closesocket(sock); 303 closesocket(sock);
302 - continue;  
303 - } 304 + continue;
  305 + }
304 if (sockets_debug) 306 if (sockets_debug)
305 fprintf(stderr, "%s: connect(%s,%s,%s,%s): OK\n", __FUNCTION__, 307 fprintf(stderr, "%s: connect(%s,%s,%s,%s): OK\n", __FUNCTION__,
306 inet_strfamily(e->ai_family), 308 inet_strfamily(e->ai_family),
307 e->ai_canonname, uaddr, uport); 309 e->ai_canonname, uaddr, uport);
308 freeaddrinfo(res); 310 freeaddrinfo(res);
309 - return sock; 311 + return sock;
310 } 312 }
311 freeaddrinfo(res); 313 freeaddrinfo(res);
312 return -1; 314 return -1;
@@ -322,17 +324,17 @@ int unix_listen(const char *str, char *ostr, int olen) @@ -322,17 +324,17 @@ int unix_listen(const char *str, char *ostr, int olen)
322 324
323 sock = socket(PF_UNIX, SOCK_STREAM, 0); 325 sock = socket(PF_UNIX, SOCK_STREAM, 0);
324 if (sock < 0) { 326 if (sock < 0) {
325 - perror("socket(unix)");  
326 - return -1; 327 + perror("socket(unix)");
  328 + return -1;
327 } 329 }
328 330
329 opts = strchr(str, ','); 331 opts = strchr(str, ',');
330 if (opts) { 332 if (opts) {
331 len = opts - str; 333 len = opts - str;
332 - path = malloc(len+1); 334 + path = qemu_malloc(len+1);
333 snprintf(path, len+1, "%.*s", len, str); 335 snprintf(path, len+1, "%.*s", len, str);
334 } else 336 } else
335 - path = strdup(str); 337 + path = qemu_strdup(str);
336 338
337 memset(&un, 0, sizeof(un)); 339 memset(&un, 0, sizeof(un));
338 un.sun_family = AF_UNIX; 340 un.sun_family = AF_UNIX;
@@ -365,11 +367,11 @@ int unix_listen(const char *str, char *ostr, int olen) @@ -365,11 +367,11 @@ int unix_listen(const char *str, char *ostr, int olen)
365 367
366 if (sockets_debug) 368 if (sockets_debug)
367 fprintf(stderr, "bind(unix:%s): OK\n", un.sun_path); 369 fprintf(stderr, "bind(unix:%s): OK\n", un.sun_path);
368 - free(path); 370 + qemu_free(path);
369 return sock; 371 return sock;
370 372
371 err: 373 err:
372 - free(path); 374 + qemu_free(path);
373 closesocket(sock); 375 closesocket(sock);
374 return -1; 376 return -1;
375 } 377 }
@@ -381,8 +383,8 @@ int unix_connect(const char *path) @@ -381,8 +383,8 @@ int unix_connect(const char *path)
381 383
382 sock = socket(PF_UNIX, SOCK_STREAM, 0); 384 sock = socket(PF_UNIX, SOCK_STREAM, 0);
383 if (sock < 0) { 385 if (sock < 0) {
384 - perror("socket(unix)");  
385 - return -1; 386 + perror("socket(unix)");
  387 + return -1;
386 } 388 }
387 389
388 memset(&un, 0, sizeof(un)); 390 memset(&un, 0, sizeof(un));