-typedef struct s_bsock {
- uint64_t read_seqno; /* read sequence number */
- uint32_t in_msg_no; /* intput message number */
- uint32_t out_msg_no; /* output message number */
- int fd; /* socket file descriptor */
- int32_t msglen; /* message length */
- int port; /* desired port */
- int errors; /* set if errors on socket */
- int suppress_error_msgs; /* set to suppress error messages */
- int b_errno; /* bsock errno */
- time_t timer_start; /* time started read/write */
- int timed_out; /* timed out in read/write */
- int timeout; /* time out after this value */
- int terminated; /* set when BNET_TERMINATE arrives */
- int duped; /* set if duped BSOCK */
- POOLMEM *msg; /* message pool buffer */
- char *who; /* Name of daemon to which we are talking */
- char *host; /* Host name/IP */
- POOLMEM *errmsg; /* edited error message (to be implemented) */
- RES *res; /* Resource to which we are connected */
- struct s_bsock *next; /* next BSOCK if duped */
- int spool; /* set for spooling */
- FILE *spool_fd; /* spooling file */
- void *jcr; /* jcr or NULL for error msgs */
-} BSOCK;
+struct BSOCK {
+ uint64_t read_seqno; /* read sequence number */
+ uint32_t in_msg_no; /* input message number */
+ uint32_t out_msg_no; /* output message number */
+ int fd; /* socket file descriptor */
+ TLS_CONNECTION *tls; /* associated tls connection */
+ int32_t msglen; /* message length */
+ int b_errno; /* bsock errno */
+ int port; /* desired port */
+ int blocking; /* blocking state (0 = nonblocking, 1 = blocking) */
+ volatile int errors; /* incremented for each error on socket */
+ volatile bool suppress_error_msgs: 1; /* set to suppress error messages */
+ volatile bool timed_out: 1; /* timed out in read/write */
+ volatile bool terminated: 1; /* set when BNET_TERMINATE arrives */
+ bool duped: 1; /* set if duped BSOCK */
+ bool spool: 1; /* set for spooling */
+ volatile time_t timer_start; /* time started read/write */
+ volatile time_t timeout; /* timeout BSOCK after this interval */
+ POOLMEM *msg; /* message pool buffer */
+ char *who; /* Name of daemon to which we are talking */
+ char *host; /* Host name/IP */
+ POOLMEM *errmsg; /* edited error message */
+ RES *res; /* Resource to which we are connected */
+ BSOCK *next; /* next BSOCK if duped */
+ FILE *spool_fd; /* spooling file */
+ JCR *jcr; /* jcr or NULL for error msgs */
+ struct sockaddr client_addr; /* client's IP address */
+ struct sockaddr_in peer_addr; /* peer's IP address */
+};