MCPcopy Create free account
hub / github.com/ZDoom/Raze / PacketSend

Function PacketSend

source/common/engine/i_net.cpp:224–271  ·  view source on GitHub ↗

PacketSend

Source from the content-addressed store, hash-verified

222// PacketSend
223//
224void PacketSend (void)
225{
226 int c;
227
228 // FIXME: Catch this before we've overflown the buffer. With long chat
229 // text and lots of backup tics, it could conceivably happen. (Though
230 // apparently it hasn't yet, which is good.)
231 if (doomcom.datalength > MAX_MSGLEN)
232 {
233 I_FatalError("Netbuffer overflow!");
234 }
235 assert(!(doomcom.data[0] & NCMD_COMPRESSED));
236
237 uLong size = TRANSMIT_SIZE - 1;
238 if (doomcom.datalength >= 10)
239 {
240 TransmitBuffer[0] = doomcom.data[0] | NCMD_COMPRESSED;
241 c = compress2(TransmitBuffer + 1, &size, doomcom.data + 1, doomcom.datalength - 1, 9);
242 size += 1;
243 }
244 else
245 {
246 c = -1; // Just some random error code to avoid sending the compressed buffer.
247 }
248 if (c == Z_OK && size < (uLong)doomcom.datalength)
249 {
250// Printf("send %lu/%d\n", size, doomcom.datalength);
251 c = sendto(mysocket, (char *)TransmitBuffer, size,
252 0, (sockaddr *)&sendaddress[doomcom.remotenode],
253 sizeof(sendaddress[doomcom.remotenode]));
254 }
255 else
256 {
257 if (doomcom.datalength > TRANSMIT_SIZE)
258 {
259 I_Error("Net compression failed (zlib error %d)", c);
260 }
261 else
262 {
263// Printf("send %d\n", doomcom.datalength);
264 c = sendto(mysocket, (char *)doomcom.data, doomcom.datalength,
265 0, (sockaddr *)&sendaddress[doomcom.remotenode],
266 sizeof(sendaddress[doomcom.remotenode]));
267 }
268 }
269 // if (c == -1)
270 // I_Error ("SendPacket error: %s",strerror(errno));
271}
272
273void PreSend(const void* buffer, int bufferlen, const sockaddr_in* to);
274void SendConAck(int num_connected, int num_needed);

Callers 1

I_NetCmdFunction · 0.85

Calls 2

I_FatalErrorFunction · 0.85
I_ErrorFunction · 0.85

Tested by

no test coverage detected