From: ho.namkoong Date: Wed, 23 Oct 2013 04:38:21 +0000 (+0900) Subject: temp fix for sending 2048 bytes X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d34f4db903fa86ec764f86996d7770f5063ad9d5;p=sdk%2Ftools%2Fsdb.git temp fix for sending 2048 bytes Change-Id: I6ae6b9931a8edfa3d63c854f35299938042c3fee --- diff --git a/src/common_modules.h b/src/common_modules.h index 231e17f..8d9ad5f 100644 --- a/src/common_modules.h +++ b/src/common_modules.h @@ -130,6 +130,10 @@ struct socket { FD_EVENT fde; int fd; + //TODO HOT PATCH FOR REDWOOD 8974. When target is REDWOOD 8974, 2048 bytes can be broken. + char char_2048; + int check_2048; + LIST_NODE* pkt_list; TRANSPORT *transport; diff --git a/src/sockets.c b/src/sockets.c index 66c6e3f..04e4076 100755 --- a/src/sockets.c +++ b/src/sockets.c @@ -476,6 +476,14 @@ static void local_socket_event_func(int fd, unsigned ev, void *_s) put_apacket(p); } else { p->len = MAX_PAYLOAD - avail; + + //TODO HOT PATCH FOR 2048. + if(p->len == 2048) { + p->len = 2047; + s->char_2048 = p->data[2047]; + s->check_2048 = 1; + } + if(peer_enqueue(s, p) < 0) { //local socket is already closed by peer or should not close the socket. return; @@ -499,6 +507,7 @@ SDB_SOCKET *create_local_socket(int fd) s->node = NULL; s->pkt_list = NULL; s->fd = fd; + s->check_2048 = 0; s->local_id = local_socket_next_id++; s->node = prepend(&local_socket_list, s); diff --git a/src/transport.c b/src/transport.c index 177a5c2..69a4f7f 100755 --- a/src/transport.c +++ b/src/transport.c @@ -770,7 +770,19 @@ void wakeup_select_func(int _fd, unsigned ev, void *data) { sock->remote_id = remote_id; sock->transport = t; } - local_socket_ready(sock); + //TODO HOT PATCH FOR 2048. + if(sock->check_2048 == 1) { + sock->check_2048 = 0; + PACKET *__p = get_apacket(); + __p->msg.command = A_WRTE; + __p->msg.arg0 = sock->local_id; + __p->msg.arg1 = sock->remote_id; + __p->msg.data_length = 1; + send_packet(__p, sock->transport); + } + else { + local_socket_ready(sock); + } } } if(cmd == A_CLSE) {