| 
				
			 | 
			
			
				
				@@ -45,6 +45,24 @@ void stream_associate ( struct stream_application *app, 
			 | 
		
		
	
		
			
			| 
				45
			 | 
			
				45
			 | 
			
			
				
				 	app->conn = conn; 
			 | 
		
		
	
		
			
			| 
				46
			 | 
			
				46
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				47
			 | 
			
				47
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				48
			 | 
			
			
				
				+/** 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				49
			 | 
			
			
				
				+ * Disassociate application from connection 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				50
			 | 
			
			
				
				+ * 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				51
			 | 
			
			
				
				+ * @v app		Stream application 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				52
			 | 
			
			
				
				+ * @v conn		Stream connection 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				53
			 | 
			
			
				
				+ */ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				54
			 | 
			
			
				
				+static void stream_disassociate ( struct stream_application *app, 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				55
			 | 
			
			
				
				+				  struct stream_connection *conn ) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				56
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				57
			 | 
			
			
				
				+	DBGC ( app, "Stream %p disassociating from connection %p\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				58
			 | 
			
			
				
				+	       app, conn ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				59
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				60
			 | 
			
			
				
				+	assert ( conn->app == app ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				61
			 | 
			
			
				
				+	assert ( app->conn == conn ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				62
			 | 
			
			
				
				+	conn->app = NULL; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				63
			 | 
			
			
				
				+	app->conn = NULL;	 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				64
			 | 
			
			
				
				+} 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				65
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				48
			 | 
			
				66
			 | 
			
			
				
				 /** 
			 | 
		
		
	
		
			
			| 
				49
			 | 
			
				67
			 | 
			
			
				
				  * Connection established 
			 | 
		
		
	
		
			
			| 
				50
			 | 
			
				68
			 | 
			
			
				
				  * 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -76,18 +94,16 @@ void stream_connected ( struct stream_connection *conn ) { 
			 | 
		
		
	
		
			
			| 
				76
			 | 
			
				94
			 | 
			
			
				
				 void stream_closed ( struct stream_connection *conn, int rc ) { 
			 | 
		
		
	
		
			
			| 
				77
			 | 
			
				95
			 | 
			
			
				
				 	struct stream_application *app = conn->app; 
			 | 
		
		
	
		
			
			| 
				78
			 | 
			
				96
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				79
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( app, "Stream %p closed (%s)\n", app, strerror ( rc ) ); 
			 | 
		
		
	
		
			
			| 
				80
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				81
			 | 
			
				97
			 | 
			
			
				
				 	/* Check connection actually exists */ 
			 | 
		
		
	
		
			
			| 
				82
			 | 
			
				98
			 | 
			
			
				
				 	if ( ! app ) { 
			 | 
		
		
	
		
			
			| 
				83
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( conn, "Stream connection %p has no application\n", 
			 | 
		
		
	
		
			
			| 
				84
			 | 
			
				
			 | 
			
			
				
				-		       conn ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				99
			 | 
			
			
				
				+		/* Not an error; don't display a debug message */ 
			 | 
		
		
	
		
			
			| 
				85
			 | 
			
				100
			 | 
			
			
				
				 		return; 
			 | 
		
		
	
		
			
			| 
				86
			 | 
			
				101
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				87
			 | 
			
				102
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				103
			 | 
			
			
				
				+	DBGC ( app, "Stream %p closed (%s)\n", app, strerror ( rc ) ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				104
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				88
			 | 
			
				105
			 | 
			
			
				
				 	/* Disassociate application from connection */ 
			 | 
		
		
	
		
			
			| 
				89
			 | 
			
				
			 | 
			
			
				
				-	app->conn = NULL; 
			 | 
		
		
	
		
			
			| 
				90
			 | 
			
				
			 | 
			
			
				
				-	conn->app = NULL; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				106
			 | 
			
			
				
				+	stream_disassociate ( app, conn ); 
			 | 
		
		
	
		
			
			| 
				91
			 | 
			
				107
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				92
			 | 
			
				108
			 | 
			
			
				
				 	/* Hand off to application */ 
			 | 
		
		
	
		
			
			| 
				93
			 | 
			
				109
			 | 
			
			
				
				 	if ( app->op->closed ) 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -244,13 +260,12 @@ void stream_close ( struct stream_application *app ) { 
			 | 
		
		
	
		
			
			| 
				244
			 | 
			
				260
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				245
			 | 
			
				261
			 | 
			
			
				
				 	/* Check connection actually exists */ 
			 | 
		
		
	
		
			
			| 
				246
			 | 
			
				262
			 | 
			
			
				
				 	if ( ! conn ) { 
			 | 
		
		
	
		
			
			| 
				247
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( app, "Stream %p has no connection\n", app ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				263
			 | 
			
			
				
				+		/* Not an error; don't display a debug message */ 
			 | 
		
		
	
		
			
			| 
				248
			 | 
			
				264
			 | 
			
			
				
				 		return; 
			 | 
		
		
	
		
			
			| 
				249
			 | 
			
				265
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				250
			 | 
			
				266
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				251
			 | 
			
				267
			 | 
			
			
				
				 	/* Disassociate application from connection */ 
			 | 
		
		
	
		
			
			| 
				252
			 | 
			
				
			 | 
			
			
				
				-	app->conn = NULL; 
			 | 
		
		
	
		
			
			| 
				253
			 | 
			
				
			 | 
			
			
				
				-	conn->app = NULL; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				268
			 | 
			
			
				
				+	stream_disassociate ( app, conn ); 
			 | 
		
		
	
		
			
			| 
				254
			 | 
			
				269
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				255
			 | 
			
				270
			 | 
			
			
				
				 	/* Hand off to connection */ 
			 | 
		
		
	
		
			
			| 
				256
			 | 
			
				271
			 | 
			
			
				
				 	if ( ! conn->op->close ) 
			 |