From: Matthew Nicholson Date: Wed, 12 Jan 2011 18:50:31 +0000 (+0000) Subject: Removed a usleep(1) that shouldn't be necessary in session_do, and removed the X-Git-Tag: 1.6.2.17-rc1~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6adc202b2c0db2656945460ba92f244c2b268621;p=thirdparty%2Fasterisk.git Removed a usleep(1) that shouldn't be necessary in session_do, and removed the ms_t member from the mansession_session structure. Merged revisions 301591 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r301591 | mnicholson | 2011-01-12 12:39:03 -0600 (Wed, 12 Jan 2011) | 5 lines Don't store the thread id for the manager session in the structure we pass to the thread for the manager session. ABE-2543 ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@301594 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/manager.c b/main/manager.c index 5d30789dd1..083bed5456 100644 --- a/main/manager.c +++ b/main/manager.c @@ -192,7 +192,6 @@ static struct { * data. */ struct mansession_session { - pthread_t ms_t; /*!< Execution thread, basically useless */ ast_mutex_t __lock; /*!< Thread lock -- don't use in action callbacks, it's already taken care of */ /* XXX need to document which fields it is protecting */ struct sockaddr_in sin; /*!< address we are connecting from */ @@ -3287,19 +3286,6 @@ static void *session_do(void *data) ast_log(LOG_EVENT, "Failed attempt from %s\n", ast_inet_ntoa(session->sin.sin_addr)); } - /* It is possible under certain circumstances for this session thread - to complete its work and exit *before* the thread that created it - has finished executing the ast_pthread_create_background() function. - If this occurs, some versions of glibc appear to act in a buggy - fashion and attempt to write data into memory that it thinks belongs - to the thread but is in fact not owned by the thread (or may have - been freed completely). - - Causing this thread to yield to other threads at least one time - appears to work around this bug. - */ - usleep(1); - destroy_session(session); done: