Index: uspace/lib/net/generic/socket_core.c
===================================================================
--- uspace/lib/net/generic/socket_core.c	(revision 614d06567e34555e0ab2bb578905bfbafdbbbd63)
+++ uspace/lib/net/generic/socket_core.c	(revision 9f9c7fdd87bc912a382d8ac2f130d42419c56408)
@@ -564,12 +564,19 @@
 		
 		// write the fragment lengths
-		ERROR_PROPAGATE(data_reply(lengths,
-		    sizeof(int) * (fragments + 1)));
+		if (ERROR_OCCURRED(data_reply(lengths,
+		    sizeof(int) * (fragments + 1)))) {
+			free(lengths);
+			return ERROR_CODE;
+		}
 		next_packet = packet;
 		
 		// write the fragments
 		for (index = 0; index < fragments; ++index) {
-			ERROR_PROPAGATE(data_reply(packet_get_data(next_packet),
-			    lengths[index]));
+			ERROR_CODE = data_reply(packet_get_data(next_packet),
+			    lengths[index]);
+			if (ERROR_OCCURRED(ERROR_CODE)) {
+				free(lengths);
+				return ERROR_CODE;
+			}
 			next_packet = pq_next(next_packet);
 		}
