NeoMutt  2020-08-21-74-g346364
Teaching an old dog new tricks
mutt_socket.h File Reference

NeoMutt connections. More...

+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


#define MUTT_SOCK_LOG_CMD   2
#define MUTT_SOCK_LOG_HDR   3
#define MUTT_SOCK_LOG_FULL   5
#define mutt_socket_readln(buf, buflen, conn)   mutt_socket_readln_d(buf, buflen, conn, MUTT_SOCK_LOG_CMD)
#define mutt_socket_send(conn, buf)   mutt_socket_send_d(conn, buf, MUTT_SOCK_LOG_CMD)
#define mutt_socket_send_d(conn, buf, dbg)   mutt_socket_write_d(conn, buf, mutt_str_len(buf), dbg)
#define mutt_socket_write_n(conn, buf, len)   mutt_socket_write_d(conn, buf, len, MUTT_SOCK_LOG_CMD)


struct Connectionmutt_conn_find (const struct ConnAccount *account)
 Find a connection from a list. More...
struct Connectionmutt_conn_new (const struct ConnAccount *account)
 Create a new Connection. More...

Detailed Description

NeoMutt connections.

  • Brendan Cully

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see

Definition in file mutt_socket.h.

Macro Definition Documentation


#define MUTT_SOCK_LOG_CMD   2

Definition at line 29 of file mutt_socket.h.


#define MUTT_SOCK_LOG_HDR   3

Definition at line 30 of file mutt_socket.h.


#define MUTT_SOCK_LOG_FULL   5

Definition at line 31 of file mutt_socket.h.

◆ mutt_socket_readln

#define mutt_socket_readln (   buf,
)    mutt_socket_readln_d(buf, buflen, conn, MUTT_SOCK_LOG_CMD)

Definition at line 36 of file mutt_socket.h.

◆ mutt_socket_send

#define mutt_socket_send (   conn,
)    mutt_socket_send_d(conn, buf, MUTT_SOCK_LOG_CMD)

Definition at line 37 of file mutt_socket.h.

◆ mutt_socket_send_d

#define mutt_socket_send_d (   conn,
)    mutt_socket_write_d(conn, buf, mutt_str_len(buf), dbg)

Definition at line 38 of file mutt_socket.h.

◆ mutt_socket_write_n

#define mutt_socket_write_n (   conn,
)    mutt_socket_write_d(conn, buf, len, MUTT_SOCK_LOG_CMD)

Definition at line 39 of file mutt_socket.h.

Function Documentation

◆ mutt_conn_find()

struct Connection* mutt_conn_find ( const struct ConnAccount cac)

Find a connection from a list.

cacConnAccount to match
Return values
ptrMatching Connection

find a connection off the list of connections whose account matches cac. If start is not null, only search for connections after the given connection (allows higher level socket code to make more fine-grained searches than account info - eg in IMAP we may wish to find a connection which is not in IMAP_SELECTED state)

Definition at line 86 of file mutt_socket.c.

87 {
88  struct Url url = { 0 };
89  char hook[1024];
91  /* cac isn't actually modified, since url isn't either */
92  mutt_account_tourl((struct ConnAccount *) cac, &url);
93  url.path = NULL;
94  url_tostring(&url, hook, sizeof(hook), 0);
95  mutt_account_hook(hook);
97  return mutt_conn_new(cac);
98 }
A parsed URL proto://user:password@host:port/path?a=1&b=2
Definition: url.h:66
void mutt_account_tourl(struct ConnAccount *cac, struct Url *url)
Fill URL with info from account.
Definition: mutt_account.c:79
struct Connection * mutt_conn_new(const struct ConnAccount *cac)
Create a new Connection.
Definition: mutt_socket.c:46
void mutt_account_hook(const char *url)
Perform an account hook.
Definition: hook.c:755
Login details for a remote server.
Definition: connaccount.h:51
char * path
Definition: url.h:73
int url_tostring(struct Url *url, char *dest, size_t len, int flags)
Output the URL string for a given Url object.
Definition: url.c:418
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mutt_conn_new()

struct Connection* mutt_conn_new ( const struct ConnAccount cac)

Create a new Connection.

cacCredentials to use
Return values
ptrNew Connection

Definition at line 46 of file mutt_socket.c.

47 {
48  enum ConnectionType conn_type;
50  if (C_Tunnel)
52  else if (cac->flags & MUTT_ACCT_SSL)
53  conn_type = MUTT_CONNECTION_SSL;
54  else
57  struct Connection *conn = mutt_socket_new(conn_type);
58  if (conn)
59  {
60  memcpy(&conn->account, cac, sizeof(struct ConnAccount));
61  }
62  else
63  {
64  if (conn_type == MUTT_CONNECTION_SSL)
65  {
66 #ifndef USE_SSL
67  /* that's probably why it failed */
68  mutt_error(_("SSL is unavailable, can't connect to %s"), cac->host);
69 #endif
70  }
71  }
72  return conn;
73 }
Tunnelled connection.
Definition: socket.h:37
struct ConnAccount account
Account details: username, password, etc.
Definition: connection.h:36
struct Connection * mutt_socket_new(enum ConnectionType type)
allocate and initialise a new connection
Definition: socket.c:279
An open network connection (socket)
Definition: connection.h:34
#define _(a)
Definition: message.h:28
char host[128]
Server to login to.
Definition: connaccount.h:53
const char * C_Tunnel
Config: Shell command to establish a tunnel.
Definition: config.c:39
SSL/TLS-encrypted connection.
Definition: socket.h:38
Simple TCP socket connection.
Definition: socket.h:36
Login details for a remote server.
Definition: connaccount.h:51
#define mutt_error(...)
Definition: logging.h:84
Type of connection.
Definition: socket.h:34
Account uses SSL/TLS.
Definition: connaccount.h:46
MuttAccountFlags flags
Which fields are initialised, e.g. MUTT_ACCT_USER.
Definition: connaccount.h:59
+ Here is the call graph for this function:
+ Here is the caller graph for this function: