Changeset 4938:0bb4645e994b for imap

Show
Ignore:
Timestamp:
2007-02-28 09:47:13 (21 months ago)
Author:
Brendan Cully <brendan@…>
Branch:
HEAD
Message:

Add imap_close_connection to fully reset IMAP state. (closes: #2717)
Thanks to Sergey Svishchev for the original patch.

Location:
imap
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • imap/command.c

    r4816 r4938  
    376376 
    377377  if (idata->state < IMAP_SELECTED) 
    378   { 
    379     idata->state = IMAP_DISCONNECTED; 
    380     mutt_socket_close (idata->conn); 
    381     idata->status = 0; 
    382   } 
     378    imap_close_connection (idata); 
    383379} 
    384380 
  • imap/imap.c

    r4923 r4938  
    400400  if (imap_cmd_step (idata) != IMAP_CMD_CONTINUE) 
    401401  { 
    402     mutt_socket_close (idata->conn); 
    403     idata->state = IMAP_DISCONNECTED; 
     402    imap_close_connection (idata); 
    404403    return -1; 
    405404  } 
     
    468467#if defined(USE_SSL) 
    469468 err_close_conn: 
    470   mutt_socket_close (idata->conn); 
    471   idata->state = IMAP_DISCONNECTED; 
     469  imap_close_connection (idata); 
    472470#endif 
    473471 bail: 
    474472  FREE (&idata->capstr); 
    475473  return -1; 
     474} 
     475 
     476void imap_close_connection(IMAP_DATA* idata) 
     477{ 
     478  mutt_socket_close (idata->conn); 
     479  idata->state = IMAP_DISCONNECTED; 
     480  idata->seqno = idata->nextcmd = idata->lastcmd = idata->status = 0; 
     481  memset (idata->cmds, 0, sizeof (IMAP_COMMAND) * IMAP_PIPELINE_DEPTH); 
    476482} 
    477483 
  • imap/imap_private.h

    r4816 r4938  
    236236                       int invert); 
    237237int imap_open_connection (IMAP_DATA* idata); 
     238void imap_close_connection (IMAP_DATA* idata); 
    238239IMAP_DATA* imap_conn_find (const ACCOUNT* account, int flags); 
    239240int imap_read_literal (FILE* fp, IMAP_DATA* idata, long bytes, progress_t*);