size_t bytes_sent;
size_t len;
- if (ps->pending_msgs_tail == NULL)
+ if ((ps->pending_msgs_tail == NULL) && (ps->send_active == GNUNET_YES))
{
#if DEBUG_CONNECTIONS
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Connection %X: No Message to send, pausing connection\n",ps);
{
msg = curl_multi_info_read (plugin->multi_handle, &running);
- if (msg == NULL)
- break;
/* get session for affected curl handle */
GNUNET_assert ( msg->easy_handle != NULL );
curl_easy_getinfo(msg->easy_handle, CURLINFO_PRIVATE, (char *) &ps);
#endif
ps->send_connected = GNUNET_NO;
ps->send_active = GNUNET_NO;
- curl_multi_remove_handle(plugin->multi_handle,msg->easy_handle);
+ curl_multi_remove_handle(plugin->multi_handle,ps->send_endpoint);
curl_easy_cleanup(ps->send_endpoint);
ps->send_endpoint=NULL;
cur_msg = ps->pending_msgs_tail;
#endif
ps->recv_connected = GNUNET_NO;
ps->recv_active = GNUNET_NO;
- curl_multi_remove_handle(plugin->multi_handle,msg->easy_handle);
+ curl_multi_remove_handle(plugin->multi_handle,ps->recv_endpoint);
curl_easy_cleanup(ps->recv_endpoint);
ps->recv_endpoint=NULL;
}
}
ps->send_connected = GNUNET_NO;
ps->send_active = GNUNET_NO;
- curl_multi_remove_handle(plugin->multi_handle,msg->easy_handle);
+ curl_multi_remove_handle(plugin->multi_handle,ps->send_endpoint);
curl_easy_cleanup(ps->send_endpoint);
ps->send_endpoint =NULL;
}
#endif
ps->recv_connected = GNUNET_NO;
ps->recv_active = GNUNET_NO;
- curl_multi_remove_handle(plugin->multi_handle,msg->easy_handle);
+ curl_multi_remove_handle(plugin->multi_handle,ps->recv_endpoint);
curl_easy_cleanup(ps->recv_endpoint);
ps->recv_endpoint=NULL;
}
else
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"No existing session & and no address given: no way to send this message to peer `%s'!\n", GNUNET_i2s(target));
- return -1;
+ return GNUNET_SYSERR;
}
}
mret = curl_multi_cleanup(plugin->multi_handle);
if ( CURLM_OK != mret)
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"curl multihandle clean up failed");
+ plugin->multi_handle = NULL;
GNUNET_free (plugin);
GNUNET_free (api);