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;
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);
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) {