diff options
Diffstat (limited to 'src/util/service.c')
-rw-r--r-- | src/util/service.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/src/util/service.c b/src/util/service.c index fcdf45a51..b4eb33caa 100644 --- a/src/util/service.c +++ b/src/util/service.c | |||
@@ -1932,6 +1932,11 @@ do_send (void *cls) | |||
1932 | size_t left; | 1932 | size_t left; |
1933 | const char *buf; | 1933 | const char *buf; |
1934 | 1934 | ||
1935 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1936 | "service: sending message with type %u", | ||
1937 | ntohs(client->msg->type)); | ||
1938 | |||
1939 | |||
1935 | client->send_task = NULL; | 1940 | client->send_task = NULL; |
1936 | buf = (const char *) client->msg; | 1941 | buf = (const char *) client->msg; |
1937 | left = ntohs (client->msg->size) - client->msg_pos; | 1942 | left = ntohs (client->msg->size) - client->msg_pos; |
@@ -1941,6 +1946,8 @@ do_send (void *cls) | |||
1941 | GNUNET_assert (ret <= (ssize_t) left); | 1946 | GNUNET_assert (ret <= (ssize_t) left); |
1942 | if (0 == ret) | 1947 | if (0 == ret) |
1943 | { | 1948 | { |
1949 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1950 | "no data send"); | ||
1944 | GNUNET_MQ_inject_error (client->mq, | 1951 | GNUNET_MQ_inject_error (client->mq, |
1945 | GNUNET_MQ_ERROR_WRITE); | 1952 | GNUNET_MQ_ERROR_WRITE); |
1946 | return; | 1953 | return; |
@@ -1958,6 +1965,9 @@ do_send (void *cls) | |||
1958 | if (EPIPE != errno) | 1965 | if (EPIPE != errno) |
1959 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, | 1966 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, |
1960 | "send"); | 1967 | "send"); |
1968 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
1969 | "socket send returned with error code %i", | ||
1970 | errno); | ||
1961 | GNUNET_MQ_inject_error (client->mq, | 1971 | GNUNET_MQ_inject_error (client->mq, |
1962 | GNUNET_MQ_ERROR_WRITE); | 1972 | GNUNET_MQ_ERROR_WRITE); |
1963 | return; | 1973 | return; |
@@ -2402,7 +2412,7 @@ resume_client_receive (void *cls) | |||
2402 | GNUNET_YES); | 2412 | GNUNET_YES); |
2403 | if (GNUNET_SYSERR == ret) | 2413 | if (GNUNET_SYSERR == ret) |
2404 | { | 2414 | { |
2405 | if (NULL != c->drop_task) | 2415 | if (NULL == c->drop_task) |
2406 | GNUNET_SERVICE_client_drop (c); | 2416 | GNUNET_SERVICE_client_drop (c); |
2407 | return; | 2417 | return; |
2408 | } | 2418 | } |
@@ -2431,6 +2441,7 @@ resume_client_receive (void *cls) | |||
2431 | void | 2441 | void |
2432 | GNUNET_SERVICE_client_continue (struct GNUNET_SERVICE_Client *c) | 2442 | GNUNET_SERVICE_client_continue (struct GNUNET_SERVICE_Client *c) |
2433 | { | 2443 | { |
2444 | GNUNET_assert (NULL == c->drop_task); | ||
2434 | GNUNET_assert (GNUNET_YES == c->needs_continue); | 2445 | GNUNET_assert (GNUNET_YES == c->needs_continue); |
2435 | GNUNET_assert (NULL == c->recv_task); | 2446 | GNUNET_assert (NULL == c->recv_task); |
2436 | c->needs_continue = GNUNET_NO; | 2447 | c->needs_continue = GNUNET_NO; |
@@ -2513,6 +2524,24 @@ GNUNET_SERVICE_client_drop (struct GNUNET_SERVICE_Client *c) | |||
2513 | { | 2524 | { |
2514 | struct GNUNET_SERVICE_Handle *sh = c->sh; | 2525 | struct GNUNET_SERVICE_Handle *sh = c->sh; |
2515 | 2526 | ||
2527 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
2528 | "Client dropped: %p (MQ: %p)\n", | ||
2529 | c, | ||
2530 | c->mq); | ||
2531 | |||
2532 | #if EXECINFO | ||
2533 | void *backtrace_array[MAX_TRACE_DEPTH]; | ||
2534 | int num_backtrace_strings = backtrace (backtrace_array, MAX_TRACE_DEPTH); | ||
2535 | char **backtrace_strings = | ||
2536 | backtrace_symbols (backtrace_array, | ||
2537 | t->num_backtrace_strings); | ||
2538 | for (unsigned int i = 0; i < num_backtrace_strings; i++) | ||
2539 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
2540 | "client drop trace %u: %s\n", | ||
2541 | i, | ||
2542 | backtrace_strings[i]); | ||
2543 | #endif | ||
2544 | |||
2516 | if (NULL != c->drop_task) | 2545 | if (NULL != c->drop_task) |
2517 | { | 2546 | { |
2518 | /* asked to drop twice! */ | 2547 | /* asked to drop twice! */ |