[asterisk-commits] rizzo: trunk r45152 - /trunk/main/http.c
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Sun Oct 15 13:54:15 MST 2006
Author: rizzo
Date: Sun Oct 15 15:54:15 2006
New Revision: 45152
URL: http://svn.digium.com/view/asterisk?rev=45152&view=rev
Log:
don't forget to close a descriptor on a malloc failure.
On passing, small rearrangement of the code to reduce indentation.
There is a bit more cleanup planned for this file, so a merge to 1.4
will be done when it is all done.
Modified:
trunk/main/http.c
Modified: trunk/main/http.c
URL: http://svn.digium.com/view/asterisk/trunk/main/http.c?rev=45152&r1=45151&r2=45152&view=diff
==============================================================================
--- trunk/main/http.c (original)
+++ trunk/main/http.c Sun Oct 15 15:54:15 2006
@@ -494,6 +494,8 @@
pthread_attr_t attr;
for (;;) {
+ int flags;
+
ast_wait_for_input(httpfd, -1);
sinlen = sizeof(sin);
fd = accept(httpfd, (struct sockaddr *)&sin, &sinlen);
@@ -503,25 +505,28 @@
continue;
}
ser = ast_calloc(1, sizeof(*ser));
- if (ser) {
- int flags = fcntl(fd, F_GETFL);
- fcntl(fd, F_SETFL, flags & ~O_NONBLOCK);
- ser->fd = fd;
- memcpy(&ser->requestor, &sin, sizeof(ser->requestor));
- if ((ser->f = fdopen(ser->fd, "w+"))) {
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-
- if (ast_pthread_create_background(&launched, &attr, 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_log(LOG_WARNING, "No memory for new session: %s\n", strerror(errno));
+ close(fd);
+ continue;
+ }
+ flags = fcntl(fd, F_GETFL);
+ fcntl(fd, F_SETFL, flags & ~O_NONBLOCK);
+ ser->fd = fd;
+ memcpy(&ser->requestor, &sin, sizeof(ser->requestor));
+ if ((ser->f = fdopen(ser->fd, "w+"))) {
+ pthread_attr_init(&attr);
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+
+ if (ast_pthread_create_background(&launched, &attr, 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);
+ free(ser);
}
}
return NULL;
More information about the asterisk-commits
mailing list