output/httpd: moved code to httpd_output_bind()
This commit is contained in:
		| @@ -46,6 +46,52 @@ httpd_output_quark(void) | |||||||
| 	return g_quark_from_static_string("httpd_output"); | 	return g_quark_from_static_string("httpd_output"); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | static gboolean | ||||||
|  | httpd_listen_in_event(G_GNUC_UNUSED GIOChannel *source, | ||||||
|  | 		      G_GNUC_UNUSED GIOCondition condition, | ||||||
|  | 		      gpointer data); | ||||||
|  |  | ||||||
|  | static bool | ||||||
|  | httpd_output_bind(struct httpd_output *httpd, GError **error_r) | ||||||
|  | { | ||||||
|  | 	GIOChannel *channel; | ||||||
|  |  | ||||||
|  | 	httpd->open = false; | ||||||
|  |  | ||||||
|  | 	/* create and set up listener socket */ | ||||||
|  |  | ||||||
|  | 	httpd->fd = socket_bind_listen(PF_INET, SOCK_STREAM, 0, | ||||||
|  | 				       (struct sockaddr *)&httpd->address, | ||||||
|  | 				       httpd->address_size, | ||||||
|  | 				       16, error_r); | ||||||
|  | 	if (httpd->fd < 0) | ||||||
|  | 		return false; | ||||||
|  |  | ||||||
|  | 	g_mutex_lock(httpd->mutex); | ||||||
|  |  | ||||||
|  | 	channel = g_io_channel_unix_new(httpd->fd); | ||||||
|  | 	httpd->source_id = g_io_add_watch(channel, G_IO_IN, | ||||||
|  | 					  httpd_listen_in_event, httpd); | ||||||
|  | 	g_io_channel_unref(channel); | ||||||
|  |  | ||||||
|  | 	g_mutex_unlock(httpd->mutex); | ||||||
|  |  | ||||||
|  | 	return true; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static void | ||||||
|  | httpd_output_unbind(struct httpd_output *httpd) | ||||||
|  | { | ||||||
|  | 	assert(!httpd->open); | ||||||
|  |  | ||||||
|  | 	g_mutex_lock(httpd->mutex); | ||||||
|  |  | ||||||
|  | 	g_source_remove(httpd->source_id); | ||||||
|  | 	close(httpd->fd); | ||||||
|  |  | ||||||
|  | 	g_mutex_unlock(httpd->mutex); | ||||||
|  | } | ||||||
|  |  | ||||||
| static void * | static void * | ||||||
| httpd_output_init(G_GNUC_UNUSED const struct audio_format *audio_format, | httpd_output_init(G_GNUC_UNUSED const struct audio_format *audio_format, | ||||||
| 		  const struct config_param *param, | 		  const struct config_param *param, | ||||||
| @@ -212,29 +258,8 @@ static bool | |||||||
| httpd_output_enable(void *data, GError **error_r) | httpd_output_enable(void *data, GError **error_r) | ||||||
| { | { | ||||||
| 	struct httpd_output *httpd = data; | 	struct httpd_output *httpd = data; | ||||||
| 	GIOChannel *channel; |  | ||||||
|  |  | ||||||
| 	httpd->open = false; | 	return httpd_output_bind(httpd, error_r); | ||||||
|  |  | ||||||
| 	/* create and set up listener socket */ |  | ||||||
|  |  | ||||||
| 	httpd->fd = socket_bind_listen(PF_INET, SOCK_STREAM, 0, |  | ||||||
| 				       (struct sockaddr *)&httpd->address, |  | ||||||
| 				       httpd->address_size, |  | ||||||
| 				       16, error_r); |  | ||||||
| 	if (httpd->fd < 0) |  | ||||||
| 		return false; |  | ||||||
|  |  | ||||||
| 	g_mutex_lock(httpd->mutex); |  | ||||||
|  |  | ||||||
| 	channel = g_io_channel_unix_new(httpd->fd); |  | ||||||
| 	httpd->source_id = g_io_add_watch(channel, G_IO_IN, |  | ||||||
| 					  httpd_listen_in_event, httpd); |  | ||||||
| 	g_io_channel_unref(channel); |  | ||||||
|  |  | ||||||
| 	g_mutex_unlock(httpd->mutex); |  | ||||||
|  |  | ||||||
| 	return true; |  | ||||||
| } | } | ||||||
|  |  | ||||||
| static void | static void | ||||||
| @@ -242,12 +267,7 @@ httpd_output_disable(void *data) | |||||||
| { | { | ||||||
| 	struct httpd_output *httpd = data; | 	struct httpd_output *httpd = data; | ||||||
|  |  | ||||||
| 	g_mutex_lock(httpd->mutex); | 	httpd_output_unbind(httpd); | ||||||
|  |  | ||||||
| 	g_source_remove(httpd->source_id); |  | ||||||
| 	close(httpd->fd); |  | ||||||
|  |  | ||||||
| 	g_mutex_unlock(httpd->mutex); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| static bool | static bool | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Max Kellermann
					Max Kellermann