From 98413db36b474c91c893d0cef99a16e3b1c73900 Mon Sep 17 00:00:00 2001 From: Kelvin Sherlock Date: Mon, 14 May 2012 21:31:32 -0400 Subject: [PATCH] ... --- mconnect.c | 30 +++++++++++++++--------------- mlisten.c | 1 + 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/mconnect.c b/mconnect.c index 2040161..66f1d7c 100644 --- a/mconnect.c +++ b/mconnect.c @@ -10,12 +10,7 @@ #pragma noroot #pragma optimize 79 -union split { - - LongWord i32; - Word i16[2]; - Byte i8[4]; -}; + int mconnect(Entry *e, void *p1, void *p2, void *p3, void *p4, void *p5) { @@ -29,10 +24,10 @@ int mconnect(Entry *e, void *p1, void *p2, void *p3, void *p4, void *p5) // return EINPROGRESS // - xsockaddr_in *sin = (xsockaddr_in *)p3; - int addrlen = *(int *)p4; + xsockaddr_in *addr = (xsockaddr_in *)p3; + int addrlen = p4 ? *(int *)p4 : 0; - port = sin->sin_port; + port = addr->sin_port; asm { lda 0) { - union split s; - s.i32 = sin->sin_addr; - s16_debug_printf("connect address = %d.%d.%d.%d port = %d", - s.i8[0], s.i8[1], s.i8[2], s.i8[3], port); + union xsplit s; + s.i32 = addr->sin_addr; + s16_debug_printf("connect family = %d address = %d.%d.%d.%d port = %d", + addr->sin_family, + s.i8[0], s.i8[1], s.i8[2], s.i8[3], + port); } + if (addrlen < 8 || !addr) return EINVAL; + if (addr->sin_family != AF_INET) return EINVAL; + if (e->_TYPE == SOCK_DGRAM) { IncBusy(); - TCPIPSetNewDestination(e->ipid, sin->sin_addr, port); + TCPIPSetNewDestination(e->ipid, addr->sin_addr, port); t = _toolErr; DecBusy(); return 0; @@ -72,7 +72,7 @@ int mconnect(Entry *e, void *p1, void *p2, void *p3, void *p4, void *p5) IncBusy(); - TCPIPSetNewDestination(e->ipid, sin->sin_addr, port); + TCPIPSetNewDestination(e->ipid, addr->sin_addr, port); t = _toolErr; DecBusy(); diff --git a/mlisten.c b/mlisten.c index 2b33a68..88893b3 100644 --- a/mlisten.c +++ b/mlisten.c @@ -13,6 +13,7 @@ int mlisten(Entry *e, void *p1, void *p2, void *p3, void *p4, void *p5) { + Word port; Word terr; Word t;