X-Git-Url: http://git.cascardo.info/?p=cascardo%2Flibreceita.git;a=blobdiff_plain;f=rnetclient.c;fp=rnetclient.c;h=a9c75cd4702a5d1a1d281b73da274afc285798d7;hp=6f44767b4323bc623441cfcb7f51bdcb50bcc72a;hb=90cc697dec1fe387e27b28424d85fbc7df36e27f;hpb=5f124a78b9b2f7e98cad8d851bb5835001b86846 diff --git a/rnetclient.c b/rnetclient.c index 6f44767..a9c75cd 100644 --- a/rnetclient.c +++ b/rnetclient.c @@ -194,17 +194,26 @@ static int rnet_recv(gnutls_session_t session, struct rnet_message **message) rnet_message_expand(message, 6); buffer = (*message)->buffer; r = gnutls_record_recv(session, buffer, 6); - len = (buffer[1] << 8 | buffer[2]); - rnet_message_expand(message, len); - buffer = (*message)->buffer + 6; - r = gnutls_record_recv(session, buffer, len); - inflateRecord(buffer - 6, len + 6, &out, &olen); - rnet_message_del(*message); - *message = NULL; - rnet_message_expand(message, olen); - memcpy((*message)->buffer, out, olen); - (*message)->len = olen; - free(out); + if (buffer[0] == 0x01) { + len = (buffer[1] << 8 | buffer[2]); + rnet_message_expand(message, len); + buffer = (*message)->buffer + 6; + r = gnutls_record_recv(session, buffer, len); + inflateRecord(buffer - 6, len + 6, &out, &olen); + rnet_message_del(*message); + *message = NULL; + rnet_message_expand(message, olen); + memcpy((*message)->buffer, out, olen); + (*message)->len = olen; + free(out); + } else { + len = (buffer[1] << 8 | buffer[2]); + rnet_message_expand(message, len - 1); + buffer = (*message)->buffer + 6; + r = gnutls_record_recv(session, buffer, len - 1); + (*message)->len = len + 4; + rnet_message_strip(*message, 4); + } return 0; }