/**************************************************************************** Write data to socket. Return TRUE on success. ****************************************************************************/ bool connection_send_data(struct connection *pconn, const unsigned char *data, int len) { if (NULL == pconn || !pconn->used || (is_server() && pconn->server.is_closing)) { return TRUE; } pconn->statistics.bytes_send += len; if (0 < pconn->send_buffer->do_buffer_sends) { flush_connection_send_buffer_packets(pconn); if (!add_connection_data(pconn, data, len)) { log_verbose("cut connection %s due to huge send buffer (1)", conn_description(pconn)); return FALSE; } flush_connection_send_buffer_packets(pconn); } else { flush_connection_send_buffer_all(pconn); if (!add_connection_data(pconn, data, len)) { log_verbose("cut connection %s due to huge send buffer (2)", conn_description(pconn)); return FALSE; } flush_connection_send_buffer_all(pconn); } return TRUE; }
/************************************************************************** write data to socket **************************************************************************/ void send_connection_data(struct connection *pc, const unsigned char *data, int len) { if (pc && pc->used) { pc->statistics.bytes_send += len; if(pc->send_buffer->do_buffer_sends > 0) { flush_connection_send_buffer_packets(pc); if (!add_connection_data(pc, data, len)) { freelog(LOG_ERROR, "cut connection %s due to huge send buffer (1)", conn_description(pc)); } flush_connection_send_buffer_packets(pc); } else { flush_connection_send_buffer_all(pc); if (!add_connection_data(pc, data, len)) { freelog(LOG_ERROR, "cut connection %s due to huge send buffer (2)", conn_description(pc)); } flush_connection_send_buffer_all(pc); } } }