]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
SOCKET needs to be signed for slirp to work correctly.
authorToni Wilen <twilen@winuae.net>
Thu, 10 Dec 2015 15:37:38 +0000 (17:37 +0200)
committerToni Wilen <twilen@winuae.net>
Thu, 10 Dec 2015 15:37:38 +0000 (17:37 +0200)
slirp/libslirp.h
slirp/misc.cpp
slirp/misc.h
slirp/slirp.cpp
slirp/slirp.h
slirp/socket.cpp
slirp/socket.h
slirp/tcp_subr.cpp
slirp/udp.cpp
slirp/udp.h
slirp_uae.cpp

index 53acac81e16ef3fa38d3a8147b96b0f03a83f7eb..6cb34ddd987418af2ec2fdf99b8c5e0925278d22 100644 (file)
@@ -12,7 +12,7 @@ int inet_aton(const char *cp, struct in_addr *ia);
 int slirp_init(void);
 void slirp_cleanup(void);
 
-int slirp_select_fill(SOCKET *pnfds, 
+int slirp_select_fill(int *pnfds, 
                                          fd_set *readfds, fd_set *writefds, fd_set *xfds);
 
 void slirp_select_poll(fd_set *readfds, fd_set *writefds, fd_set *xfds);
index 249aba417b078e767b42da77ee50eb259c80e08e..cc51cdac902406e5f02947c2b2d0deae36faec58 100644 (file)
@@ -769,7 +769,7 @@ u_sleep(int usec)
  */
 
 void
-fd_nonblock(SOCKET fd)
+fd_nonblock(SLIRP_SOCKET fd)
 {
 #if defined USE_FIONBIO && defined FIONBIO
        ioctlsockopt_t opt = 1;
@@ -785,7 +785,7 @@ fd_nonblock(SOCKET fd)
 }
 
 void
-fd_block(SOCKET fd)
+fd_block(SLIRP_SOCKET fd)
 {
 #if defined USE_FIONBIO && defined FIONBIO
        ioctlsockopt_t opt = 0;
index 0d85940df8a5cda42f93ac0fa67ca6ed7ace1665..d383f4759491bd5714938da28fabc986126e41b7 100644 (file)
@@ -80,8 +80,8 @@ void snooze _P((void));
 void relay _P((int));
 void add_emu _P((char *));
 void u_sleep _P((int));
-void fd_nonblock _P((SOCKET));
-void fd_block _P((SOCKET));
+void fd_nonblock _P((SLIRP_SOCKET));
+void fd_block _P((SLIRP_SOCKET));
 int rsh_exec _P((struct socket *, struct socket *, char *, char *, char *));
 
 #endif
index 3416cd8865fb74ba9ae7445a1df1a9897d6b55af..b8e3cc01c682a5242571094da6804b610bf15840 100644 (file)
@@ -191,11 +191,11 @@ static void updtime(void)
 }
 #endif
 
-int slirp_select_fill(SOCKET *pnfds, 
+int slirp_select_fill(int *pnfds, 
                                          fd_set *readfds, fd_set *writefds, fd_set *xfds)
 {
     struct socket *so, *so_next;
-    SOCKET nfds;
+    int nfds;
     int timeout, tmp_time;
 
     /* fail safe */
index 483384ff7cc112fb8771b173521ff0f04fece485..e84390598c66fee299296899f13dfaddd49178b9 100644 (file)
@@ -230,6 +230,9 @@ int inet_aton _P((const char *cp, struct in_addr *ia));
 # define EHOSTUNREACH WSAEHOSTUNREACH
 # define ENETUNREACH WSAENETUNREACH
 # define ECONNREFUSED WSAECONNREFUSED
+
+/* Should be UINT_PTR but SLIRP code has <= 0 tests */
+#define SLIRP_SOCKET INT_PTR
 #endif
 
 #include "debug.h"
@@ -357,7 +360,7 @@ struct tcpcb * tcp_newtcpcb _P((struct socket *));
 struct tcpcb * tcp_close _P((register struct tcpcb *));
 void tcp_drain _P((void));
 void tcp_sockclosed _P((struct tcpcb *));
-SOCKET tcp_fconnect _P((struct socket *));
+int tcp_fconnect _P((struct socket *));
 void tcp_connect _P((struct socket *));
 int tcp_attach _P((struct socket *));
 u_int8_t tcp_tos _P((struct socket *));
index ab5e3dcc0acc290937d8b5e179ef1e93fde9020f..5a77241c6e3a4c23519997363c6899d55343996f 100644 (file)
@@ -516,7 +516,7 @@ struct socket *solisten(u_int port, u_int32_t laddr, u_int lport, int flags)
 {
        struct sockaddr_in addr;
        struct socket *so;
-       SOCKET s;
+       SLIRP_SOCKET s;
        socklen_t addrlen = sizeof(addr);
        int opt = 1;
 
index e8a5faf3c614bf0f0a29adf6d87d9c20f802a530..f0945960485fcc3ef3777683721e4afb18d12986 100644 (file)
@@ -20,7 +20,7 @@
 struct socket {
   struct socket *so_next,*so_prev;      /* For a linked list of sockets */
 
-  SOCKET s;                           /* The actual socket */
+  SLIRP_SOCKET s;                           /* The actual socket */
 
                        /* XXX union these with not-yet-used sbuf params */
   struct mbuf *so_m;              /* Pointer to the original SYN packet,
index 4205478cd35cdae9ee2f2280af3bde82fad2b30e..f17eea2eab30b05bbb40d313d24105c30b45e3e9 100644 (file)
@@ -382,16 +382,16 @@ void tcp_sockclosed(struct tcpcb *tp)
  * nonblocking.  Connect returns after the SYN is sent, and does 
  * not wait for ACK+SYN.
  */
-SOCKET tcp_fconnect(struct socket *so)
+int tcp_fconnect(struct socket *so)
 {
-  SOCKET ret=0;
+  int ret=0;
   
   DEBUG_CALL("tcp_fconnect");
   DEBUG_ARG("so = %p", so);
 
-  if( (ret=so->s=socket(AF_INET,SOCK_STREAM,0)) >= 0) {
+  if( (so->s=socket(AF_INET,SOCK_STREAM,0)) >= 0) {
        int opt;
-       SOCKET s = so->s;
+       SLIRP_SOCKET s = so->s;
     struct sockaddr_in addr;
     memset(&addr, 0, sizeof(struct sockaddr_in));
 
@@ -449,7 +449,7 @@ void tcp_connect(struct socket *inso)
        struct sockaddr_in addr;
        socklen_t addrlen = sizeof(struct sockaddr_in);
        struct tcpcb *tp;
-       SOCKET s;
+       SLIRP_SOCKET s;
        int opt;
 
        DEBUG_CALL("tcp_connect");
index a87b658ed1d35a47a687cb8a4e830ac068b8473d..19a08f187c4b0f1b768a5c817077cc2ad96ab63b 100644 (file)
@@ -324,7 +324,7 @@ int udp_output(struct socket *so, struct mbuf *m,
     return udp_output2(so, m, &saddr, &daddr, so->so_iptos);
 }
 
-SOCKET udp_attach(struct socket *so)
+SLIRP_SOCKET udp_attach(struct socket *so)
 {
   struct sockaddr_in addr;
        
index 6bdf8fd5bfade4e3454864d5e5e5ef72066e87b6..1b445059a24bf74dc3f09de0615588042be203ca 100644 (file)
@@ -97,7 +97,7 @@ void udp_init _P((void));
 void udp_cleanup _P((void));
 void udp_input _P((register struct mbuf *, int));
 int udp_output _P((struct socket *, struct mbuf *, struct sockaddr_in *));
-SOCKET udp_attach _P((struct socket *));
+SLIRP_SOCKET udp_attach _P((struct socket *));
 void udp_detach _P((struct socket *));
 u_int8_t udp_tos _P((struct socket *));
 void udp_emu _P((struct socket *, struct mbuf *));
index 7097c92ab43ccec1e0ebe74aa19574685e77ee05..b6ce86cc484193206e298767a71850a67c9b5ac7 100644 (file)
@@ -142,7 +142,7 @@ static void *slirp_receive_func(void *arg)
        while (slirp_thread_active) {
                // Wait for packets to arrive
                fd_set rfds, wfds, xfds;
-               SOCKET nfds;
+               int nfds;
                int ret, timeout;
 
                // ... in the output queue
@@ -163,6 +163,9 @@ static void *slirp_receive_func(void *arg)
                        tv.tv_sec = 0;
                        tv.tv_usec = timeout;
                        ret = select(0, &rfds, &wfds, &xfds, &tv);
+                       if (ret == SOCKET_ERROR) {
+                               write_log(_T("SLIRP socket ERR=%d\n"), WSAGetLastError());
+                       }
                }
                if (ret >= 0) {
                        uae_sem_wait (&slirp_sem2);