+
+ packet.ptr = data;
+ packet.chunk = len;
+ read_int((int *)&packet.chunk, &packet);
+
+ if(packet.chunk&0x80000000)
+ {
+ packet.chunk &= 0x7FFFFFFF;
+ packet.total = packet.chunk;
+
+ while(1)
+ {
+ if(len<packet.total+sizeof(int))
+ return -1;
+
+ GlPacket p = { packet.ptr+packet.total, len-packet.total, 0 };
+ unsigned chunk;
+ read_int((int *)&chunk, &p);
+ packet.total += chunk&0x7FFFFFFF;
+ if(!(chunk&0x80000000))
+ break;
+ }
+ }
+ else
+ packet.total = packet.chunk;
+
+ if(len<packet.total)