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
1.6.2
Matthew Nicholson 15 years ago
parent ac9c6a3692
commit 6adc202b2c

@ -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:

Loading…
Cancel
Save