@ -372,6 +372,7 @@ struct vm_state {
int starting ;
int repeats ;
# ifdef IMAP_STORAGE
ast_mutex_t lock ;
int updated ; /* decremented on each mail check until 1 -allows delay */
long msgArray [ 256 ] ;
MAILSTREAM * mailstream ;
@ -4781,7 +4782,9 @@ static int init_mailstream(struct vm_state *vms, int box)
# endif
/* Connect to INBOX first to get folders delimiter */
imap_mailbox_name ( tmp , sizeof ( tmp ) , vms , 0 , 1 ) ;
ast_mutex_lock ( & vms - > lock ) ;
stream = mail_open ( stream , tmp , debug ? OP_DEBUG : NIL ) ;
ast_mutex_unlock ( & vms - > lock ) ;
if ( stream = = NIL ) {
ast_log ( LOG_ERROR , " Can't connect to imap server %s \n " , tmp ) ;
return - 1 ;
@ -4796,7 +4799,9 @@ static int init_mailstream(struct vm_state *vms, int box)
imap_mailbox_name ( tmp , sizeof ( tmp ) , vms , box , 1 ) ;
if ( option_debug > 2 )
ast_log ( LOG_DEBUG , " Before mail_open, server: %s, box:%d \n " , tmp , box ) ;
ast_mutex_lock ( & vms - > lock ) ;
vms - > mailstream = mail_open ( stream , tmp , debug ? OP_DEBUG : NIL ) ;
ast_mutex_unlock ( & vms - > lock ) ;
if ( vms - > mailstream = = NIL ) {
return - 1 ;
} else {
@ -9026,6 +9031,7 @@ static void vmstate_delete(struct vm_state *vms)
if ( ! vf ) {
ast_log ( LOG_ERROR , " No vmstate found for user:%s, mailbox %s \n " , vms - > imapuser , vms - > username ) ;
} else {
ast_mutex_destroy ( & vms - > lock ) ;
free ( vf ) ;
}
ast_mutex_unlock ( & vmstate_lock ) ;
@ -9057,6 +9063,7 @@ static void init_vm_state(struct vm_state *vms)
for ( x = 0 ; x < 256 ; x + + ) {
vms - > msgArray [ x ] = 0 ;
}
ast_mutex_init ( & vms - > lock ) ;
}
static void check_msgArray ( struct vm_state * vms )