diff --git a/http.c b/http.c index fca076327736e05a7ead995a99af05c5ca20f400..cdcde76a882b0089bca6830ecc918b47ef208d74 100644 --- a/http.c +++ b/http.c @@ -297,23 +297,21 @@ static void *http_root(void *data) ast_log(LOG_WARNING, "Accept failed: %s\n", strerror(errno)); continue; } - ser = calloc(1, sizeof(*ser)); - if (ser) { - ser->fd = fd; - if ((ser->f = fdopen(ser->fd, "w+"))) { - if (ast_pthread_create(&launched, NULL, ast_httpd_helper_thread, ser)) { - ast_log(LOG_WARNING, "Unable to launch helper thread: %s\n", strerror(errno)); - fclose(ser->f); - free(ser); - } - } else { - ast_log(LOG_WARNING, "fdopen failed!\n"); - close(ser->fd); + if (!(ser = ast_calloc(1, sizeof(*ser)))) { + close(fd); + continue; + } + ser->fd = fd; + if ((ser->f = fdopen(ser->fd, "w+"))) { + if (ast_pthread_create(&launched, NULL, ast_httpd_helper_thread, ser)) { + ast_log(LOG_WARNING, "Unable to launch helper thread: %s\n", strerror(errno)); + fclose(ser->f); free(ser); } } else { - ast_log(LOG_WARNING, "Out of memory!\n"); - close(fd); + ast_log(LOG_WARNING, "fdopen failed!\n"); + close(ser->fd); + free(ser); } } return NULL;