diff --git a/src/dns_client.c b/src/dns_client.c index 1c2500e..dae6a61 100644 --- a/src/dns_client.c +++ b/src/dns_client.c @@ -1078,7 +1078,7 @@ static int _dns_client_socket_recv(SSL *ssl, void *buf, int num) ret = -1; break; case SSL_ERROR_SYSCALL: - tlog(TLOG_DEBUG, "SSL syscall failed, %s, ", strerror(errno)); + tlog(TLOG_ERROR, "SSL syscall failed, %s, ", strerror(errno)); ret = -1; return ret; default: @@ -1451,6 +1451,10 @@ static int _dns_client_send_tls(struct dns_server_info *server_info, void *packe memcpy(inpacket + 2, packet, len); len += 2; + if (server_info->status != DNS_SERVER_STATUS_CONNECTED) { + return _dns_client_send_data_to_buffer(server_info, inpacket, len); + } + send_len = _dns_client_socket_send(server_info->ssl, inpacket, len); if (send_len < 0) { if (errno == EAGAIN || server_info->ssl == NULL) { diff --git a/src/smartdns.c b/src/smartdns.c index b7a0385..c6654b0 100644 --- a/src/smartdns.c +++ b/src/smartdns.c @@ -327,7 +327,7 @@ int main(int argc, char *argv[]) } signal(SIGABRT, sig_handle); - signal(SIGPIPE, sig_handle); + signal(SIGPIPE, SIG_IGN); signal(SIGBUS, sig_handle); signal(SIGSEGV, sig_handle); signal(SIGILL, sig_handle);