{
struct MessageHeader *hdr;
SCK_Message *messages;
- unsigned int i, n;
+ unsigned int i, n, n_ok;
int ret, recv_flags = 0;
assert(initialised);
received_messages = n;
- for (i = 0; i < n; i++) {
+ for (i = n_ok = 0; i < n; i++) {
hdr = ARR_GetElement(recv_headers, i);
- if (!process_header(&hdr->msg_hdr, hdr->msg_len, sock_fd, flags, &messages[i]))
- return NULL;
+ if (!process_header(&hdr->msg_hdr, hdr->msg_len, sock_fd, flags, &messages[n_ok]))
+ continue;
- log_message(sock_fd, 1, &messages[i],
+ log_message(sock_fd, 1, &messages[n_ok],
flags & SCK_FLAG_MSG_ERRQUEUE ? "Received error" : "Received", NULL);
+
+ n_ok++;
}
- *num_messages = n;
+ *num_messages = n_ok;
- return messages;
+ return n_ok > 0 ? messages : NULL;
}
/* ================================================== */