Patchwork [01/18] petitboot: Increase protocol payload size

login
register
mail settings
Submitter Geoff Levand
Date March 25, 2009, 10:35 p.m.
Message ID <20090325223546.943064132@am.sony.com>>
Download mbox | patch
Permalink /patch/25106/
State Accepted
Headers show

Comments

Geoff Levand - March 25, 2009, 10:35 p.m.
Fixes the problem of big conf files not showing up in the UI.

Increases the protocol payload from 4 KiB to 8 KiB.

Also, adds some log messages when I/O errors occur, or the payload
is too large for the protocol.

Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
---
 lib/pb-protocol/pb-protocol.c |   20 +++++++++++++++++---
 lib/pb-protocol/pb-protocol.h |    2 +-
 2 files changed, 18 insertions(+), 4 deletions(-)

Patch

--- a/lib/pb-protocol/pb-protocol.c
+++ b/lib/pb-protocol/pb-protocol.c
@@ -1,11 +1,13 @@ 
 
 #include <assert.h>
+#include <errno.h>
 #include <string.h>
 #include <stdint.h>
 #include <asm/byteorder.h>
 
 #include <talloc/talloc.h>
 #include <list/list.h>
+#include <log/log.h>
 
 #include "pb-protocol.h"
 
@@ -212,7 +214,11 @@  int pb_protocol_write_message(int fd, st
 
 	talloc_free(message);
 
-	return total_len ? -1 : 0;
+	if (!total_len)
+		return 0;
+
+	pb_log("%s: failed: %s\n", __func__, strerror(errno));
+	return -1;
 }
 
 struct pb_protocol_message *pb_protocol_create_message(void *ctx,
@@ -220,8 +226,11 @@  struct pb_protocol_message *pb_protocol_
 {
 	struct pb_protocol_message *message;
 
-	if (payload_len > PB_PROTOCOL_MAX_PAYLOAD_SIZE)
+	if (payload_len > PB_PROTOCOL_MAX_PAYLOAD_SIZE) {
+		pb_log("%s: payload too big %u/%u\n", __func__, payload_len,
+			PB_PROTOCOL_MAX_PAYLOAD_SIZE);
 		return NULL;
+	}
 
 	message = talloc_size(ctx, sizeof(*message) + payload_len);
 
@@ -248,8 +257,11 @@  struct pb_protocol_message *pb_protocol_
 	m.payload_len = __be32_to_cpu(m.payload_len);
 	m.action = __be32_to_cpu(m.action);
 
-	if (m.payload_len > PB_PROTOCOL_MAX_PAYLOAD_SIZE)
+	if (m.payload_len > PB_PROTOCOL_MAX_PAYLOAD_SIZE) {
+		pb_log("%s: payload too big %u/%u\n", __func__, m.payload_len,
+			PB_PROTOCOL_MAX_PAYLOAD_SIZE);
 		return NULL;
+	}
 
 	message = talloc_size(ctx, sizeof(m) + m.payload_len);
 	memcpy(message, &m, sizeof(m));
@@ -259,6 +271,8 @@  struct pb_protocol_message *pb_protocol_
 
 		if (rc <= 0) {
 			talloc_free(message);
+			pb_log("%s: failed (%u): %s\n", __func__, len,
+				strerror(errno));
 			return NULL;
 		}
 
--- a/lib/pb-protocol/pb-protocol.h
+++ b/lib/pb-protocol/pb-protocol.h
@@ -7,7 +7,7 @@ 
 
 #define PB_SOCKET_PATH "/tmp/petitboot.ui"
 
-#define PB_PROTOCOL_MAX_PAYLOAD_SIZE 4096
+#define PB_PROTOCOL_MAX_PAYLOAD_SIZE (8 * 1024)
 
 enum pb_protocol_action {
 	PB_PROTOCOL_ACTION_ADD		= 0x1,