Changeset 3676
- Timestamp:
- Mar 14, 2011, 6:37:38 PM (14 years ago)
- Location:
- branches/libc-0.6/src/emx/src/libsocket
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/libc-0.6/src/emx/src/libsocket/accept.c
r1454 r3676 47 47 if (pFHSocket) 48 48 { 49 s = __libsocket_accept(pFHSocket->iSocket, addr, addrlen);50 if ( s >= 0)49 __LIBSOCKET_SAFEADDR SafeAddr; 50 if (__libsocket_safe_addr_pre(addr, addrlen, &SafeAddr) == 0) 51 51 { 52 int fh; 53 PLIBCSOCKETFH pFH = TCPNAMEG(AllocFH)(s, &fh); 54 if (pFH) 55 LIBCLOG_RETURN_INT(fh); 52 s = __libsocket_accept(pFHSocket->iSocket, SafeAddr.pAddr, SafeAddr.pcbAddr); 53 if (s >= 0) 54 { 55 if (__libsocket_safe_addr_post(addr, addrlen, &SafeAddr, 1) == 0) 56 { 57 int fh; 58 PLIBCSOCKETFH pFH = TCPNAMEG(AllocFH)(s, &fh); 59 if (pFH) 60 LIBCLOG_RETURN_INT(fh); 61 62 __libsocket_soclose(s); 63 __libc_TcpipSetSocketErrno(); 64 } 65 else 66 __libsocket_soclose(s); 67 } 56 68 else 57 __libsocket_soclose(s); 58 __libc_TcpipSetSocketErrno(); 69 { 70 __libc_TcpipUpdateErrno(); 71 __libsocket_safe_addr_post(addr, addrlen, &SafeAddr, 0); 72 } 59 73 } 60 else61 __libc_TcpipUpdateErrno();62 74 } 63 64 75 LIBCLOG_RETURN_INT(-1); 65 76 } -
branches/libc-0.6/src/emx/src/libsocket/bind.c
r1454 r3676 40 40 { 41 41 LIBCLOG_ENTER("socket=%d addr=%p addrlen=%d\n", socket, addr, addrlen); 42 int rc = -1; 42 43 PLIBCSOCKETFH pFHSocket = __libc_TcpipFH(socket); 43 44 if (pFHSocket) 44 45 { 45 int rc; 46 rc = __libsocket_bind(pFHSocket->iSocket, addr, addrlen); 47 if (rc >= 0) 48 LIBCLOG_RETURN_INT(rc); 49 __libc_TcpipUpdateErrno(); 46 __LIBSOCKET_SAFEADDR SafeAddr; 47 if (__libsocket_safe_addr_pre(addr, &addrlen, &SafeAddr) == 0) 48 { 49 rc = __libsocket_bind(pFHSocket->iSocket, SafeAddr.pAddr, addrlen); 50 if (rc < 0) 51 __libc_TcpipUpdateErrno(); 52 __libsocket_safe_addr_free(&SafeAddr); 53 } 50 54 } 51 52 LIBCLOG_RETURN_INT(-1); 55 LIBCLOG_RETURN_INT(rc); 53 56 } 54 57 -
branches/libc-0.6/src/emx/src/libsocket/connect.c
r1454 r3676 44 44 { 45 45 int rc; 46 rc = __libsocket_connect(pFHSocket->iSocket, addr, addrlen); 47 if (rc >= 0) 48 LIBCLOG_RETURN_INT(rc); 49 __libc_TcpipUpdateErrno(); 46 __LIBSOCKET_SAFEADDR SafeAddr; 47 if (__libsocket_safe_addr_pre(addr, &addrlen, &SafeAddr) == 0) 48 { 49 rc = __libsocket_connect(pFHSocket->iSocket, SafeAddr.pAddr, addrlen); 50 __libsocket_safe_addr_free(&SafeAddr); 51 if (rc >= 0) 52 LIBCLOG_RETURN_INT(rc); 53 __libc_TcpipUpdateErrno(); 54 } 50 55 } 51 56 -
branches/libc-0.6/src/emx/src/libsocket/getpeername.c
r1517 r3676 40 40 { 41 41 LIBCLOG_ENTER("socket=%d addr=%p addrlen=%p\n", socket, (void *)addr, (void *)addrlen); 42 int rc = -1; 42 43 PLIBCSOCKETFH pFHSocket = __libc_TcpipFH(socket); 43 44 if (pFHSocket) 44 45 { 45 int rc; 46 rc = __libsocket_getpeername(pFHSocket->iSocket, addr, addrlen); 47 if (rc >= 0) 48 LIBCLOG_RETURN_INT(rc); 49 __libc_TcpipUpdateErrno(); 46 __LIBSOCKET_SAFEADDR SafeAddr; 47 if (__libsocket_safe_addr_pre(addr, addrlen, &SafeAddr) == 0) 48 { 49 rc = __libsocket_getpeername(pFHSocket->iSocket, SafeAddr.pAddr, SafeAddr.pcbAddr); 50 if (rc < 0) 51 __libc_TcpipUpdateErrno(); 52 if (__libsocket_safe_addr_post(addr, addrlen, &SafeAddr, rc >= 0) != 0) 53 rc = -1; 54 } 50 55 } 51 52 56 LIBCLOG_RETURN_INT(-1); 53 57 } -
branches/libc-0.6/src/emx/src/libsocket/getsockname.c
r1517 r3676 36 36 #include <InnoTekLIBC/logstrict.h> 37 37 #include "socket.h" 38 38 39 39 40 int getsockname(int socket, struct sockaddr *addr, int *addrlen) 40 41 { 41 42 LIBCLOG_ENTER("socket=%d addr=%p addrlen=%p\n", socket, (void *)addr, (void *)addrlen); 43 int rc = -1; 42 44 PLIBCSOCKETFH pFHSocket = __libc_TcpipFH(socket); 43 45 if (pFHSocket) 44 46 { 45 int rc; 46 rc = __libsocket_getsockname(pFHSocket->iSocket, addr, addrlen); 47 if (rc >= 0) 48 LIBCLOG_RETURN_INT(rc); 49 __libc_TcpipUpdateErrno(); 47 __LIBSOCKET_SAFEADDR SafeAddr; 48 if (__libsocket_safe_addr_pre(addr, addrlen, &SafeAddr) == 0) 49 { 50 rc = __libsocket_getsockname(pFHSocket->iSocket, SafeAddr.pAddr, SafeAddr.pcbAddr); 51 if (rc < 0) 52 __libc_TcpipUpdateErrno(); 53 if (__libsocket_safe_addr_post(addr, addrlen, &SafeAddr, rc >= 0) != 0) 54 rc = -1; 55 } 50 56 } 51 57 52 LIBCLOG_RETURN_INT( -1);58 LIBCLOG_RETURN_INT(rc); 53 59 } 54 60 55 -
branches/libc-0.6/src/emx/src/libsocket/socket.h
r1454 r3676 34 34 #endif 35 35 36 struct sockaddr; 37 38 /** 39 * Safe socket address state info. 40 */ 41 typedef struct __LIBSOCKET_SAFEADDR 42 { 43 /** What to feed the API. */ 44 struct sockaddr *pAddr; 45 /** What to feed the API. */ 46 int *pcbAddr; 47 48 /** Bounce buffer storage of the address length. */ 49 int cbAddr; 50 /** The input address length value */ 51 int cbAlloc; 52 /** The address structure if bouncing was needed, NULL if none of the two 53 * parameters was in high memory. */ 54 void *pvFree; 55 } __LIBSOCKET_SAFEADDR; 56 57 58 int __libsocket_safe_copy(void *pvDst, void const *pvSrc, size_t cbCopy); 59 int __libsocket_safe_addr_pre(const struct sockaddr *pAddr, const int *pcbAddr, __LIBSOCKET_SAFEADDR *pSafeAddr); 60 int __libsocket_safe_addr_post(struct sockaddr *pAddr, int *pcbAddr, __LIBSOCKET_SAFEADDR *pSafeAddr, int fSuccess); 61 void __libsocket_safe_addr_free(__LIBSOCKET_SAFEADDR *pSafeAddr); 62 36 63 #endif
Note:
See TracChangeset
for help on using the changeset viewer.