From: Jaewon Lim Date: Mon, 12 Dec 2016 04:32:09 +0000 (-0800) Subject: Revert "Modify the packet size in transport protocol." X-Git-Tag: accepted/tizen/3.0/common/20161212.161827^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=57917a169d72ead67de0921c6f1a37fe70f99040;p=sdk%2Ftarget%2Fsdbd.git Revert "Modify the packet size in transport protocol." This reverts commit f7a9e14ff28fdb099abbfba917a2d135e354c080. Change-Id: I1b6f418aaec7ce07b30e98989841cabb4f01dc1e --- diff --git a/src/sdb.c b/src/sdb.c index 017bfb0..ac7f573 100644 --- a/src/sdb.c +++ b/src/sdb.c @@ -543,7 +543,7 @@ static void send_connect(atransport *t) cp->msg.command = A_CNXN; cp->msg.arg0 = A_VERSION; #ifdef SUPPORT_ENCRYPT - cp->msg.arg1 = MAX_PAYLOAD - 100; // connection 시, sdb server의 패킷 크기를 암호화 오버로드 만큼 줄임 + cp->msg.arg1 = MAX_PAYLOAD - 100; // connection 시, sdb server의 패킷 크기를 암호화 오버로드 만큼 줄임 #else cp->msg.arg1 = MAX_PAYLOAD; #endif @@ -794,18 +794,6 @@ void parse_banner(char *banner, atransport *t) t->connection_state = CS_HOST; } -static void update_version(atransport *t, int version, size_t payload) -{ -#ifdef SUPPORT_ENCRYPT - size_t max_payload = MAX_PAYLOAD - 100; -#else - size_t max_payload = MAX_PAYLOAD; -#endif - t->protocol_version = min(version, A_VERSION); - t->max_payload = min(payload, max_payload); - D("update transport version. version=%x, max_payload=%d\n", t->protocol_version, t->max_payload); -} - void handle_packet(apacket *p, atransport *t) { // Verify pointer p @@ -841,7 +829,6 @@ void handle_packet(apacket *p, atransport *t) t->connection_state = CS_OFFLINE; handle_offline(t); } - update_version(t, p->msg.arg0, p->msg.arg1); parse_banner((char*) p->data, t); handle_online(); if(!HOST) send_connect(t); diff --git a/src/sdb.h b/src/sdb.h index 226da64..348a7eb 100644 --- a/src/sdb.h +++ b/src/sdb.h @@ -28,9 +28,7 @@ #endif #include -#define MAX_PAYLOAD_V1 (4*1024) -#define MAX_PAYLOAD_V2 (256*1024) -#define MAX_PAYLOAD MAX_PAYLOAD_V2 +#define MAX_PAYLOAD 4096 #define A_SYNC 0x434e5953 #define A_CNXN 0x4e584e43 @@ -214,8 +212,6 @@ struct atransport /* a list of adisconnect callbacks called when the transport is kicked */ int kicked; adisconnect disconnects; - int protocol_version; - size_t max_payload; #ifdef SUPPORT_ENCRYPT unsigned encryption; // 해당 연결이 암호화 모드인지 확인하는 flag , 0 = no-encryption / 1 = encryption @@ -312,7 +308,6 @@ asocket *create_local_service_socket(const char *destination); asocket *create_remote_socket(unsigned id, atransport *t); void connect_to_remote(asocket *s, const char *destination); void connect_to_smartsocket(asocket *s); -size_t asock_get_max_payload(asocket *s); void fatal(const char *fmt, ...); void fatal_errno(const char *fmt, ...); @@ -433,7 +428,7 @@ int get_emulator_guestip(char str[], int str_size); apacket *get_apacket(void); void put_apacket(apacket *p); -int check_header(apacket *p, atransport *t); +int check_header(apacket *p); int check_data(apacket *p); #if !TRACE_PACKETS diff --git a/src/sockets.c b/src/sockets.c index 71d646d..801ff42 100644 --- a/src/sockets.c +++ b/src/sockets.c @@ -28,7 +28,6 @@ #include "sdb.h" #include "strutils.h" -#include "utils.h" SDB_MUTEX_DEFINE( socket_list_lock ); @@ -323,11 +322,10 @@ static void local_socket_event_func(int fd, unsigned ev, void *_s) // sdb server에서 패킷 데이터의 크기를 MAX_PAYLOAD-100보다 작은 지를 체크함. // sdbd에서 패킷 데이터를 MAX_PAYLOAD - 200로 잡아서 암호화 하게되면 // 최대 MAX_PAYLOAD - 100 크기의 패킷을 생성하게 됨. - const size_t max_payload = asock_get_max_payload(s) - 200; + const size_t max_payload = MAX_PAYLOAD - 200; size_t avail = max_payload; #else - const size_t max_payload = asock_get_max_payload(s); - size_t avail = max_payload; + size_t avail = MAX_PAYLOAD; #endif int r = 0; @@ -352,7 +350,6 @@ static void local_socket_event_func(int fd, unsigned ev, void *_s) } D("LS(%d): fd=%d post avail loop. r=%d is_eof=%d forced_eof=%d\n", s->id, s->fd, r, is_eof, s->fde.force_eof); - #ifdef SUPPORT_ENCRYPT //변경된 최대 패킷 크기로 코드 수정 if((avail == max_payload) || (s->peer == 0)) { @@ -360,10 +357,10 @@ static void local_socket_event_func(int fd, unsigned ev, void *_s) } else { p->len = max_payload - avail; #else - if((avail == max_payload) || (s->peer == 0)) { + if((avail == MAX_PAYLOAD) || (s->peer == 0)) { put_apacket(p); } else { - p->len = max_payload - avail; + p->len = MAX_PAYLOAD - avail; #endif r = s->peer->enqueue(s->peer, p); D("LS(%d): fd=%d post peer->enqueue(). r=%d\n", s->id, s->fd, r); @@ -552,9 +549,9 @@ void connect_to_remote(asocket *s, const char *destination) { D("Connect_to_remote call RS(%d) fd=%d\n", s->id, s->fd); apacket *p = get_apacket(); - size_t len = strlen(destination) + 1; + int len = strlen(destination) + 1; - if(len > (asock_get_max_payload(s)-1)) { + if(len > (MAX_PAYLOAD-1)) { fatal("destination oversized"); } @@ -659,7 +656,7 @@ static int smart_socket_enqueue(asocket *s, apacket *p) s->pkt_first = p; s->pkt_last = p; } else { - if((s->pkt_first->len + p->len) > asock_get_max_payload(s)) { + if((s->pkt_first->len + p->len) > MAX_PAYLOAD) { D("SS(%d): overflow\n", s->id); put_apacket(p); goto fail; @@ -863,15 +860,3 @@ void connect_to_smartsocket(asocket *s) ss->peer = s; s->ready(s); } - -size_t asock_get_max_payload(asocket *s) -{ - size_t max_payload = MAX_PAYLOAD; - if (s->transport) { - max_payload = min(max_payload, s->transport->max_payload); - } - if (s->peer && s->peer->transport) { - max_payload = min(max_payload, s->peer->transport->max_payload); - } - return max_payload; -} diff --git a/src/transport.c b/src/transport.c index 616acab..470e55f 100644 --- a/src/transport.c +++ b/src/transport.c @@ -653,9 +653,6 @@ static void transport_registration_func(int _fd, unsigned ev, void *data) return; } - t->protocol_version = A_VERSION; - t->max_payload = MAX_PAYLOAD; - /* don't create transport threads for inaccessible devices */ if (t->connection_state != CS_NOPERM) { /* initial references are the two threads */ @@ -1190,15 +1187,15 @@ int writex(int fd, const void *ptr, size_t len) return 0; } -int check_header(apacket *p, atransport *t) +int check_header(apacket *p) { if(p->msg.magic != (p->msg.command ^ 0xffffffff)) { D("check_header(): invalid magic\n"); return -1; } - if(p->msg.data_length > t->max_payload) { - D("check_header(): %d > transport->max_payload(%d)\n", p->msg.data_length, t->max_payload); + if(p->msg.data_length > MAX_PAYLOAD) { + D("check_header(): %d > MAX_PAYLOAD\n", p->msg.data_length); return -1; } diff --git a/src/transport_local.c b/src/transport_local.c index dd145bd..a6adb0b 100644 --- a/src/transport_local.c +++ b/src/transport_local.c @@ -87,7 +87,7 @@ static int remote_read(apacket *p, atransport *t) D("read remote packet: %04x arg0=%0x arg1=%0x data_length=%0x data_check=%0x magic=%0x\n", p->msg.command, p->msg.arg0, p->msg.arg1, p->msg.data_length, p->msg.data_check, p->msg.magic); #endif - if(check_header(p, t)) { + if(check_header(p)) { D("bad header: terminated (data)\n"); return -1; } diff --git a/src/transport_usb.c b/src/transport_usb.c index 96905bf..932e170 100644 --- a/src/transport_usb.c +++ b/src/transport_usb.c @@ -57,7 +57,7 @@ static int remote_read(apacket *p, atransport *t) fix_endians(p); - if(check_header(p, t)) { + if(check_header(p)) { D("remote usb: check_header failed\n"); return -1; } diff --git a/src/usb_linux_client.c b/src/usb_linux_client.c index efeff2c..5d722b4 100644 --- a/src/usb_linux_client.c +++ b/src/usb_linux_client.c @@ -98,25 +98,17 @@ int linux_usb_write(usb_handle *h, const void *data, int len) int linux_usb_read(usb_handle *h, void *data, size_t len) { - D("about to read (fd=%d, len=%d)\n", h->fd, len); - while (len > 0) { - /* The sdb_read does not support read larger than 4096 bytes at once. - Read 4096 byte block repeatedly when reading data is larger than 4096 bytes. */ - int bytes_to_read = len < 4096 ? len : 4096; - int n = sdb_read(h->fd, data, bytes_to_read); - if(n < 0) { - if(errno == EINTR) { - continue; - } else { - D("ERROR: fd = %d, n = %d, errno = %d\n", h->fd, n, errno); - return -1; - } - } - len -= n; - data = ((char*) data) + n; - } - D("[ done fd=%d ]\n", h->fd); - return 0; + int n; + + D("about to read (fd=%d, len=%d)\n", h->fd, len); + n = sdb_read(h->fd, data, len); + if(n != len) { + D("ERROR: fd = %d, n = %d, errno = %d\n", + h->fd, n, errno); + return -1; + } + D("[ done fd=%d ]\n", h->fd); + return 0; } void linux_usb_init() diff --git a/src/utils.h b/src/utils.h index a2d0243..7e78b6e 100644 --- a/src/utils.h +++ b/src/utils.h @@ -80,13 +80,5 @@ char** str_split(char* a_str, const char a_delim); #define SDB_KEEPALIVE_IDLE (1) #define SDB_KEEPALIVE_INTVL (1) int keep_alive(int fd, int onoff, int cnt, int idle, int interval); -#define min(a,b) \ -({ __typeof__ (a) _a = (a); \ -__typeof__ (b) _b = (b); \ -_a > _b ? _b : _a; }) -#define max(a,b) \ -({ __typeof__ (a) _a = (a); \ -__typeof__ (b) _b = (b); \ -_a > _b ? _a : _b; }) #endif /* _SDB_UTILS_H */