- struct HTTP_Message *msg;
- struct HTTP_Message *t;
- int res = GNUNET_OK;
- CURLMcode mret;
-
- if (NULL != s->client_put)
- {
- LOG (GNUNET_ERROR_TYPE_DEBUG,
- "Session %p/connection %p: disconnecting PUT connection to peer `%s'\n",
- s,
- s->client_put,
- GNUNET_i2s (&s->target));
-
- /* remove curl handle from multi handle */
- mret = curl_multi_remove_handle (plugin->curl_multi_handle,
- s->client_put);
- if (mret != CURLM_OK)
- {
- /* clean up easy handle, handle is now invalid and free'd */
- res = GNUNET_SYSERR;
- GNUNET_break (0);
- }
- curl_easy_cleanup (s->client_put);
- s->client_put = NULL;
- }
-
-
- if (s->recv_wakeup_task != GNUNET_SCHEDULER_NO_TASK)
- {
- GNUNET_SCHEDULER_cancel (s->recv_wakeup_task);
- s->recv_wakeup_task = GNUNET_SCHEDULER_NO_TASK;
- }
-
- if (NULL != s->client_get)
- {
- LOG (GNUNET_ERROR_TYPE_DEBUG,
- "Session %p/connection %p: disconnecting GET connection to peer `%s'\n",
- s, s->client_get,
- GNUNET_i2s (&s->target));
- /* remove curl handle from multi handle */
- mret = curl_multi_remove_handle (plugin->curl_multi_handle, s->client_get);
- if (mret != CURLM_OK)
- {
- /* clean up easy handle, handle is now invalid and free'd */
- res = GNUNET_SYSERR;
- GNUNET_break (0);
- }
- curl_easy_cleanup (s->client_get);
- s->client_get = NULL;
- }
-
- msg = s->msg_head;
- while (NULL != msg)
- {
- t = msg->next;
- if (NULL != msg->transmit_cont)
- msg->transmit_cont (msg->transmit_cont_cls, &s->target, GNUNET_SYSERR,
- msg->size, msg->pos + s->overhead);
- s->overhead = 0;
- GNUNET_CONTAINER_DLL_remove (s->msg_head,
- s->msg_tail,
- msg);
- GNUNET_assert (0 < s->msgs_in_queue);
- s->msgs_in_queue--;
- GNUNET_assert (msg->size <= s->bytes_in_queue);
- s->bytes_in_queue -= msg->size;
- GNUNET_free (msg);
- msg = t;
- }