identd: Use GDataInputStream
This commit is contained in:
		
							parent
							
								
									f14ad5e9dd
								
							
						
					
					
						commit
						ea9e8d353b
					
				
					 1 changed files with 11 additions and 8 deletions
				
			
		| 
						 | 
					@ -32,7 +32,6 @@ typedef struct ident_info
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	GSocketConnection *conn;
 | 
						GSocketConnection *conn;
 | 
				
			||||||
	gchar *username;
 | 
						gchar *username;
 | 
				
			||||||
	gchar read_buf[16];
 | 
					 | 
				
			||||||
} ident_info;
 | 
					} ident_info;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int
 | 
					static int
 | 
				
			||||||
| 
						 | 
					@ -97,21 +96,22 @@ identd_write_ready (GOutputStream *stream, GAsyncResult *res, ident_info *info)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
identd_read_ready (GInputStream *in_stream, GAsyncResult *res, ident_info *info)
 | 
					identd_read_ready (GDataInputStream *in_stream, GAsyncResult *res, ident_info *info)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	GSocketAddress *sok_addr;
 | 
						GSocketAddress *sok_addr;
 | 
				
			||||||
	GOutputStream *out_stream;
 | 
						GOutputStream *out_stream;
 | 
				
			||||||
	guint64 local, remote;
 | 
						guint64 local, remote;
 | 
				
			||||||
	gchar buf[512], *p;
 | 
						gchar *read_buf, buf[512], *p;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (g_input_stream_read_finish (in_stream, res, NULL))
 | 
						if ((read_buf = g_data_input_stream_read_line_finish (in_stream, res, NULL, NULL)))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		local = g_ascii_strtoull (info->read_buf, NULL, 0);
 | 
							local = g_ascii_strtoull (read_buf, NULL, 0);
 | 
				
			||||||
		p = strchr (info->read_buf, ',');
 | 
							p = strchr (read_buf, ',');
 | 
				
			||||||
		if (!p)
 | 
							if (!p)
 | 
				
			||||||
			goto cleanup;
 | 
								goto cleanup;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		remote = g_ascii_strtoull (p + 1, NULL, 0);
 | 
							remote = g_ascii_strtoull (p + 1, NULL, 0);
 | 
				
			||||||
 | 
							g_free (read_buf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (!local || !remote || local > G_MAXUINT16 || remote > G_MAXUINT16)
 | 
							if (!local || !remote || local > G_MAXUINT16 || remote > G_MAXUINT16)
 | 
				
			||||||
			goto cleanup;
 | 
								goto cleanup;
 | 
				
			||||||
| 
						 | 
					@ -153,6 +153,7 @@ static gboolean
 | 
				
			||||||
identd_incoming_cb (GSocketService *service, GSocketConnection *conn,
 | 
					identd_incoming_cb (GSocketService *service, GSocketConnection *conn,
 | 
				
			||||||
					GObject *source, gpointer userdata)
 | 
										GObject *source, gpointer userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						GDataInputStream *data_stream;
 | 
				
			||||||
	GInputStream *stream;
 | 
						GInputStream *stream;
 | 
				
			||||||
	ident_info *info;
 | 
						ident_info *info;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -162,8 +163,10 @@ identd_incoming_cb (GSocketService *service, GSocketConnection *conn,
 | 
				
			||||||
	g_object_ref (conn);
 | 
						g_object_ref (conn);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	stream = g_io_stream_get_input_stream (G_IO_STREAM (conn));
 | 
						stream = g_io_stream_get_input_stream (G_IO_STREAM (conn));
 | 
				
			||||||
	g_input_stream_read_async (stream, info->read_buf, sizeof (info->read_buf), G_PRIORITY_DEFAULT,
 | 
						data_stream = g_data_input_stream_new (stream);
 | 
				
			||||||
							NULL, (GAsyncReadyCallback)identd_read_ready, info);
 | 
						g_data_input_stream_set_newline_type (data_stream, G_DATA_STREAM_NEWLINE_TYPE_CR_LF);
 | 
				
			||||||
 | 
						g_data_input_stream_read_line_async (data_stream, G_PRIORITY_DEFAULT,
 | 
				
			||||||
 | 
															NULL, (GAsyncReadyCallback)identd_read_ready, info);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return TRUE;
 | 
						return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue