Udp
This commit is contained in:
committed by
Matthew McClaskey
parent
ba902f8194
commit
3b40a92548
@@ -17,6 +17,7 @@
|
||||
* USA.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <network/Udp.h>
|
||||
#include <rdr/InStream.h>
|
||||
#include <rdr/ZlibInStream.h>
|
||||
|
||||
@@ -96,6 +97,9 @@ void SMsgReader::readMsg()
|
||||
case msgTypeQEMUClientMessage:
|
||||
readQEMUMessage();
|
||||
break;
|
||||
case msgTypeUpgradeToUdp:
|
||||
readUpgradeToUdp();
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "unknown message type %d\n", msgType);
|
||||
throw Exception("unknown message type");
|
||||
@@ -329,3 +333,27 @@ void SMsgReader::readQEMUKeyEvent()
|
||||
}
|
||||
handler->keyEvent(keysym, keycode, down);
|
||||
}
|
||||
|
||||
void SMsgReader::readUpgradeToUdp()
|
||||
{
|
||||
char buf[4096], resp[4096];
|
||||
rdr::U16 len = is->readU16();
|
||||
|
||||
if (len >= sizeof(buf)) {
|
||||
vlog.error("Ignoring udp upgrade with too large payload");
|
||||
is->skip(len);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!len) {
|
||||
handler->udpDowngrade();
|
||||
return;
|
||||
}
|
||||
|
||||
is->readBytes(buf, len);
|
||||
buf[len] = '\0';
|
||||
|
||||
wuGotHttp(buf, len, resp);
|
||||
|
||||
handler->udpUpgrade(resp);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user