stream: support keeping the service alive outside of service callback

This commit is contained in:
Martin Willi
2013-07-18 16:00:28 +02:00
parent d57b9e7c82
commit e6e8a2b2e0
2 changed files with 5 additions and 4 deletions
@@ -124,8 +124,7 @@ static job_requeue_t accept_async(async_data_t *data)
if (stream)
{
thread_cleanup_push((void*)stream->destroy, stream);
data->cb(data->data, stream);
thread_cleanup_pop(TRUE);
thread_cleanup_pop(!data->cb(data->data, stream));
}
return JOB_REQUEUE_NONE;
}
@@ -39,12 +39,14 @@ typedef stream_service_t*(*stream_service_constructor_t)(char *uri, int backlog)
/**
* Service callback routine for accepting client connections.
*
* The passed stream_service gets closed/destroyed by the callback caller.
* The passed stream gets closed/destroyed by the callback caller, unless
* TRUE is returned.
*
* @param data user data, as passed during registration
* @param stream accept()ed client connection
* @return TRUE to keep stream alive, FALSE to destroy it
*/
typedef void (*stream_service_cb_t)(void *data, stream_t *stream);
typedef bool (*stream_service_cb_t)(void *data, stream_t *stream);
/**
* A service accepting client connection streams.