modem: do not reject VJ option for Web TV

This commit is contained in:
Flyinghead 2020-12-29 18:02:06 +01:00
parent bbedcaa37b
commit 62a1e29670
2 changed files with 8 additions and 1 deletions

View File

@ -1338,6 +1338,8 @@ static void ppp_ipv4_conf(struct pico_device_ppp *ppp)
static void ipcp_send_nack(struct pico_device_ppp *ppp);
int dont_reject_opt_vj_hack = 0; // Hack to not reject the VJ option. Makes Web TV happy.
static void ipcp_process_in(struct pico_device_ppp *ppp, uint8_t *pkt, uint32_t len)
{
struct pico_ipcp_hdr *ih = (struct pico_ipcp_hdr *)pkt;
@ -1345,7 +1347,7 @@ static void ipcp_process_in(struct pico_device_ppp *ppp, uint8_t *pkt, uint32_t
int reject = 0;
int nak = 0;
while (p < pkt + len) {
if (p[0] == IPCP_OPT_VJ) {
if (p[0] == IPCP_OPT_VJ && dont_reject_opt_vj_hack == 0) {
reject++;
}

View File

@ -228,6 +228,7 @@ static std::map<uint16_t, sock_t> tcp_listening_sockets;
static bool pico_stack_inited;
static bool pico_thread_running = false;
extern "C" int dont_reject_opt_vj_hack;
static void read_native_sockets();
void get_host_by_name(const char *name, pico_ip4 dnsaddr);
@ -736,6 +737,10 @@ static void *pico_thread_func(void *)
}
}
}
// Web TV requires the VJ compression option, which picotcp doesn't support.
// This hack allows WebTV to connect although the correct fix would
// be to implement VJ compression.
dont_reject_opt_vj_hack = gameId == "6107117" ? 1 : 0;
// Initialize miniupnpc and map network ports
MiniUPnP upnp;