mirror of
https://github.com/curl/curl.git
synced 2026-08-25 06:03:32 +03:00
trace: make tracing available in non-debug builds
Add --trace-config to curl Add curl_global_trace() to libcurl Closes #11421
This commit is contained in:
parent
0f49b5bacb
commit
e12b39e133
46 changed files with 1166 additions and 790 deletions
|
|
@ -632,7 +632,7 @@ static CURLcode bindlocal(struct Curl_easy *data, struct connectdata *conn,
|
|||
port++; /* try next port */
|
||||
if(port == 0)
|
||||
break;
|
||||
infof(data, "Bind to local port %hu failed, trying next", port - 1);
|
||||
infof(data, "Bind to local port %d failed, trying next", port - 1);
|
||||
/* We re-use/clobber the port variable here below */
|
||||
if(sock->sa_family == AF_INET)
|
||||
si4->sin_port = ntohs(port);
|
||||
|
|
@ -836,8 +836,8 @@ static ssize_t nw_in_read(void *reader_ctx,
|
|||
nread = -1;
|
||||
}
|
||||
}
|
||||
DEBUGF(LOG_CF(rctx->data, rctx->cf, "nw_in_read(len=%zu) -> %d, err=%d",
|
||||
len, (int)nread, *err));
|
||||
CURL_TRC_CF(rctx->data, rctx->cf, "nw_in_read(len=%zu) -> %d, err=%d",
|
||||
len, (int)nread, *err);
|
||||
return nread;
|
||||
}
|
||||
|
||||
|
|
@ -852,14 +852,14 @@ static void cf_socket_close(struct Curl_cfilter *cf, struct Curl_easy *data)
|
|||
* closed it) and we just forget about it.
|
||||
*/
|
||||
if(ctx->sock == cf->conn->sock[cf->sockindex]) {
|
||||
DEBUGF(LOG_CF(data, cf, "cf_socket_close(%" CURL_FORMAT_SOCKET_T
|
||||
", active)", ctx->sock));
|
||||
CURL_TRC_CF(data, cf, "cf_socket_close(%" CURL_FORMAT_SOCKET_T
|
||||
", active)", ctx->sock);
|
||||
socket_close(data, cf->conn, !ctx->accepted, ctx->sock);
|
||||
cf->conn->sock[cf->sockindex] = CURL_SOCKET_BAD;
|
||||
}
|
||||
else {
|
||||
DEBUGF(LOG_CF(data, cf, "cf_socket_close(%" CURL_FORMAT_SOCKET_T
|
||||
") no longer at conn->sock[], discarding", ctx->sock));
|
||||
CURL_TRC_CF(data, cf, "cf_socket_close(%" CURL_FORMAT_SOCKET_T
|
||||
") no longer at conn->sock[], discarding", ctx->sock);
|
||||
/* TODO: we do not want this to happen. Need to check which
|
||||
* code is messing with conn->sock[cf->sockindex] */
|
||||
}
|
||||
|
|
@ -869,8 +869,8 @@ static void cf_socket_close(struct Curl_cfilter *cf, struct Curl_easy *data)
|
|||
}
|
||||
else {
|
||||
/* this is our local socket, we did never publish it */
|
||||
DEBUGF(LOG_CF(data, cf, "cf_socket_close(%" CURL_FORMAT_SOCKET_T
|
||||
", not active)", ctx->sock));
|
||||
CURL_TRC_CF(data, cf, "cf_socket_close(%" CURL_FORMAT_SOCKET_T
|
||||
", not active)", ctx->sock);
|
||||
socket_close(data, cf->conn, !ctx->accepted, ctx->sock);
|
||||
ctx->sock = CURL_SOCKET_BAD;
|
||||
}
|
||||
|
|
@ -889,7 +889,7 @@ static void cf_socket_destroy(struct Curl_cfilter *cf, struct Curl_easy *data)
|
|||
struct cf_socket_ctx *ctx = cf->ctx;
|
||||
|
||||
cf_socket_close(cf, data);
|
||||
DEBUGF(LOG_CF(data, cf, "destroy"));
|
||||
CURL_TRC_CF(data, cf, "destroy");
|
||||
Curl_bufq_free(&ctx->recvbuf);
|
||||
free(ctx);
|
||||
cf->ctx = NULL;
|
||||
|
|
@ -1047,8 +1047,8 @@ out:
|
|||
ctx->connected_at = Curl_now();
|
||||
cf->connected = TRUE;
|
||||
}
|
||||
DEBUGF(LOG_CF(data, cf, "cf_socket_open() -> %d, fd=%" CURL_FORMAT_SOCKET_T,
|
||||
result, ctx->sock));
|
||||
CURL_TRC_CF(data, cf, "cf_socket_open() -> %d, fd=%" CURL_FORMAT_SOCKET_T,
|
||||
result, ctx->sock);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
@ -1155,7 +1155,7 @@ static CURLcode cf_tcp_connect(struct Curl_cfilter *cf,
|
|||
rc = SOCKET_WRITABLE(ctx->sock, 0);
|
||||
|
||||
if(rc == 0) { /* no connection yet */
|
||||
DEBUGF(LOG_CF(data, cf, "not connected yet"));
|
||||
CURL_TRC_CF(data, cf, "not connected yet");
|
||||
return CURLE_OK;
|
||||
}
|
||||
else if(rc == CURL_CSELECT_OUT || cf->conn->bits.tcp_fastopen) {
|
||||
|
|
@ -1165,7 +1165,7 @@ static CURLcode cf_tcp_connect(struct Curl_cfilter *cf,
|
|||
set_local_ip(cf, data);
|
||||
*done = TRUE;
|
||||
cf->connected = TRUE;
|
||||
DEBUGF(LOG_CF(data, cf, "connected"));
|
||||
CURL_TRC_CF(data, cf, "connected");
|
||||
return CURLE_OK;
|
||||
}
|
||||
}
|
||||
|
|
@ -1288,8 +1288,8 @@ static ssize_t cf_socket_send(struct Curl_cfilter *cf, struct Curl_easy *data,
|
|||
}
|
||||
}
|
||||
|
||||
DEBUGF(LOG_CF(data, cf, "send(len=%zu) -> %d, err=%d",
|
||||
len, (int)nwritten, *err));
|
||||
CURL_TRC_CF(data, cf, "send(len=%zu) -> %d, err=%d",
|
||||
len, (int)nwritten, *err);
|
||||
cf->conn->sock[cf->sockindex] = fdsave;
|
||||
return nwritten;
|
||||
}
|
||||
|
|
@ -1307,7 +1307,7 @@ static ssize_t cf_socket_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
|
|||
cf->conn->sock[cf->sockindex] = ctx->sock;
|
||||
|
||||
if(ctx->buffer_recv && !Curl_bufq_is_empty(&ctx->recvbuf)) {
|
||||
DEBUGF(LOG_CF(data, cf, "recv from buffer"));
|
||||
CURL_TRC_CF(data, cf, "recv from buffer");
|
||||
nread = Curl_bufq_read(&ctx->recvbuf, (unsigned char *)buf, len, err);
|
||||
}
|
||||
else {
|
||||
|
|
@ -1324,7 +1324,7 @@ static ssize_t cf_socket_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
|
|||
if(nwritten < 0 && !Curl_bufq_is_empty(&ctx->recvbuf)) {
|
||||
/* we have a partial read with an error. need to deliver
|
||||
* what we got, return the error later. */
|
||||
DEBUGF(LOG_CF(data, cf, "partial read: empty buffer first"));
|
||||
CURL_TRC_CF(data, cf, "partial read: empty buffer first");
|
||||
nread = Curl_bufq_read(&ctx->recvbuf, (unsigned char *)buf, len, err);
|
||||
}
|
||||
else if(nwritten < 0) {
|
||||
|
|
@ -1337,7 +1337,7 @@ static ssize_t cf_socket_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
|
|||
nread = 0;
|
||||
}
|
||||
else {
|
||||
DEBUGF(LOG_CF(data, cf, "buffered %zd additional bytes", nwritten));
|
||||
CURL_TRC_CF(data, cf, "buffered %zd additional bytes", nwritten);
|
||||
nread = Curl_bufq_read(&ctx->recvbuf, (unsigned char *)buf, len, err);
|
||||
}
|
||||
}
|
||||
|
|
@ -1347,8 +1347,8 @@ static ssize_t cf_socket_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
|
|||
}
|
||||
|
||||
out:
|
||||
DEBUGF(LOG_CF(data, cf, "recv(len=%zu) -> %d, err=%d", len, (int)nread,
|
||||
*err));
|
||||
CURL_TRC_CF(data, cf, "recv(len=%zu) -> %d, err=%d", len, (int)nread,
|
||||
*err);
|
||||
if(nread > 0 && !ctx->got_first_byte) {
|
||||
ctx->first_byte_at = Curl_now();
|
||||
ctx->got_first_byte = TRUE;
|
||||
|
|
@ -1455,19 +1455,19 @@ static bool cf_socket_conn_is_alive(struct Curl_cfilter *cf,
|
|||
|
||||
r = Curl_poll(pfd, 1, 0);
|
||||
if(r < 0) {
|
||||
DEBUGF(LOG_CF(data, cf, "is_alive: poll error, assume dead"));
|
||||
CURL_TRC_CF(data, cf, "is_alive: poll error, assume dead");
|
||||
return FALSE;
|
||||
}
|
||||
else if(r == 0) {
|
||||
DEBUGF(LOG_CF(data, cf, "is_alive: poll timeout, assume alive"));
|
||||
CURL_TRC_CF(data, cf, "is_alive: poll timeout, assume alive");
|
||||
return TRUE;
|
||||
}
|
||||
else if(pfd[0].revents & (POLLERR|POLLHUP|POLLPRI|POLLNVAL)) {
|
||||
DEBUGF(LOG_CF(data, cf, "is_alive: err/hup/etc events, assume dead"));
|
||||
CURL_TRC_CF(data, cf, "is_alive: err/hup/etc events, assume dead");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
DEBUGF(LOG_CF(data, cf, "is_alive: valid events, looks alive"));
|
||||
CURL_TRC_CF(data, cf, "is_alive: valid events, looks alive");
|
||||
*input_pending = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -1520,7 +1520,7 @@ static CURLcode cf_socket_query(struct Curl_cfilter *cf,
|
|||
struct Curl_cftype Curl_cft_tcp = {
|
||||
"TCP",
|
||||
CF_TYPE_IP_CONNECT,
|
||||
CURL_LOG_DEFAULT,
|
||||
CURL_LOG_LVL_NONE,
|
||||
cf_socket_destroy,
|
||||
cf_tcp_connect,
|
||||
cf_socket_close,
|
||||
|
|
@ -1581,10 +1581,10 @@ static CURLcode cf_udp_setup_quic(struct Curl_cfilter *cf,
|
|||
return socket_connect_result(data, ctx->r_ip, SOCKERRNO);
|
||||
}
|
||||
set_local_ip(cf, data);
|
||||
DEBUGF(LOG_CF(data, cf, "%s socket %" CURL_FORMAT_SOCKET_T
|
||||
" connected: [%s:%d] -> [%s:%d]",
|
||||
(ctx->transport == TRNSPRT_QUIC)? "QUIC" : "UDP",
|
||||
ctx->sock, ctx->l_ip, ctx->l_port, ctx->r_ip, ctx->r_port));
|
||||
CURL_TRC_CF(data, cf, "%s socket %" CURL_FORMAT_SOCKET_T
|
||||
" connected: [%s:%d] -> [%s:%d]",
|
||||
(ctx->transport == TRNSPRT_QUIC)? "QUIC" : "UDP",
|
||||
ctx->sock, ctx->l_ip, ctx->l_port, ctx->r_ip, ctx->r_port);
|
||||
|
||||
(void)curlx_nonblock(ctx->sock, TRUE);
|
||||
switch(ctx->addr.family) {
|
||||
|
|
@ -1624,7 +1624,7 @@ static CURLcode cf_udp_connect(struct Curl_cfilter *cf,
|
|||
if(ctx->sock == CURL_SOCKET_BAD) {
|
||||
result = cf_socket_open(cf, data);
|
||||
if(result) {
|
||||
DEBUGF(LOG_CF(data, cf, "cf_udp_connect(), open failed -> %d", result));
|
||||
CURL_TRC_CF(data, cf, "cf_udp_connect(), open failed -> %d", result);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
|
@ -1632,13 +1632,13 @@ static CURLcode cf_udp_connect(struct Curl_cfilter *cf,
|
|||
result = cf_udp_setup_quic(cf, data);
|
||||
if(result)
|
||||
goto out;
|
||||
DEBUGF(LOG_CF(data, cf, "cf_udp_connect(), opened socket=%"
|
||||
CURL_FORMAT_SOCKET_T " (%s:%d)",
|
||||
ctx->sock, ctx->l_ip, ctx->l_port));
|
||||
CURL_TRC_CF(data, cf, "cf_udp_connect(), opened socket=%"
|
||||
CURL_FORMAT_SOCKET_T " (%s:%d)",
|
||||
ctx->sock, ctx->l_ip, ctx->l_port);
|
||||
}
|
||||
else {
|
||||
DEBUGF(LOG_CF(data, cf, "cf_udp_connect(), opened socket=%"
|
||||
CURL_FORMAT_SOCKET_T " (unconnected)", ctx->sock));
|
||||
CURL_TRC_CF(data, cf, "cf_udp_connect(), opened socket=%"
|
||||
CURL_FORMAT_SOCKET_T " (unconnected)", ctx->sock);
|
||||
}
|
||||
*done = TRUE;
|
||||
cf->connected = TRUE;
|
||||
|
|
@ -1650,7 +1650,7 @@ out:
|
|||
struct Curl_cftype Curl_cft_udp = {
|
||||
"UDP",
|
||||
CF_TYPE_IP_CONNECT,
|
||||
CURL_LOG_DEFAULT,
|
||||
CURL_LOG_LVL_NONE,
|
||||
cf_socket_destroy,
|
||||
cf_udp_connect,
|
||||
cf_socket_close,
|
||||
|
|
@ -1701,7 +1701,7 @@ out:
|
|||
struct Curl_cftype Curl_cft_unix = {
|
||||
"UNIX",
|
||||
CF_TYPE_IP_CONNECT,
|
||||
CURL_LOG_DEFAULT,
|
||||
CURL_LOG_LVL_NONE,
|
||||
cf_socket_destroy,
|
||||
cf_tcp_connect,
|
||||
cf_socket_close,
|
||||
|
|
@ -1765,7 +1765,7 @@ static CURLcode cf_tcp_accept_connect(struct Curl_cfilter *cf,
|
|||
struct Curl_cftype Curl_cft_tcp_accept = {
|
||||
"TCP-ACCEPT",
|
||||
CF_TYPE_IP_CONNECT,
|
||||
CURL_LOG_DEFAULT,
|
||||
CURL_LOG_LVL_NONE,
|
||||
cf_socket_destroy,
|
||||
cf_tcp_accept_connect,
|
||||
cf_socket_close,
|
||||
|
|
@ -1810,8 +1810,8 @@ CURLcode Curl_conn_tcp_listen_set(struct Curl_easy *data,
|
|||
ctx->active = TRUE;
|
||||
ctx->connected_at = Curl_now();
|
||||
cf->connected = TRUE;
|
||||
DEBUGF(LOG_CF(data, cf, "Curl_conn_tcp_listen_set(%"
|
||||
CURL_FORMAT_SOCKET_T ")", ctx->sock));
|
||||
CURL_TRC_CF(data, cf, "Curl_conn_tcp_listen_set(%"
|
||||
CURL_FORMAT_SOCKET_T ")", ctx->sock);
|
||||
|
||||
out:
|
||||
if(result) {
|
||||
|
|
@ -1875,9 +1875,9 @@ CURLcode Curl_conn_tcp_accepted_set(struct Curl_easy *data,
|
|||
ctx->accepted = TRUE;
|
||||
ctx->connected_at = Curl_now();
|
||||
cf->connected = TRUE;
|
||||
DEBUGF(LOG_CF(data, cf, "accepted_set(sock=%" CURL_FORMAT_SOCKET_T
|
||||
", remote=%s port=%d)",
|
||||
ctx->sock, ctx->r_ip, ctx->r_port));
|
||||
CURL_TRC_CF(data, cf, "accepted_set(sock=%" CURL_FORMAT_SOCKET_T
|
||||
", remote=%s port=%d)",
|
||||
ctx->sock, ctx->r_ip, ctx->r_port);
|
||||
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue