break;
case CS_SUSPENDED_CALLEE:
case CS_SUSPENDED_BOTH:
- /* can (rarely) also happen: other peer suspended, but mesh might
+ /* can (rarely) also happen: other peer suspended, but cadet might
have had delayed data on the unreliable channel */
break;
case CS_ACTIVE:
struct GNUNET_MQ_Envelope *e;
struct ClientCallMessage *ccm;
+ GNUNET_break (NULL != call->gns_lookup);
+ GNUNET_break (CS_LOOKUP == call->state);
call->gns_lookup = NULL;
for (i=0;i<rd_count;i++)
{
call->state = CS_SHUTDOWN;
call->client = GNUNET_CLIENT_connect ("conversation", call->cfg);
if (NULL == call->client)
+ {
+ call->event_handler (call->event_handler_cls,
+ GNUNET_CONVERSATION_EC_CALL_ERROR);
return;
+ }
+
call->mq = GNUNET_MQ_queue_for_connection_client (call->client,
handlers,
&call_error_handler,
}
-/**
- * We've sent the hang up message, now finish terminating the call.
- *
- * @param cls the `struct GNUNET_CONVERSATION_Call` to terminate
- */
-static void
-finish_stop (void *cls)
-{
- struct GNUNET_CONVERSATION_Call *call = cls;
-
- GNUNET_assert (CS_SHUTDOWN == call->state);
- GNUNET_CONVERSATION_call_stop (call);
-}
-
-
/**
* Terminate a call. The call may be ringing or ready at this time.
*
void
GNUNET_CONVERSATION_call_stop (struct GNUNET_CONVERSATION_Call *call)
{
- struct GNUNET_MQ_Envelope *e;
- struct ClientPhoneHangupMessage *hang;
-
if ( (NULL != call->speaker) &&
(CS_ACTIVE == call->state) )
call->speaker->disable_speaker (call->speaker->cls);
if (CS_SHUTDOWN != call->state)
{
call->state = CS_SHUTDOWN;
- e = GNUNET_MQ_msg (hang, GNUNET_MESSAGE_TYPE_CONVERSATION_CS_PHONE_HANG_UP);
- GNUNET_MQ_notify_sent (e, &finish_stop, call);
- GNUNET_MQ_send (call->mq, e);
- return;
}
if (NULL != call->mq)
{