SGSocket::SocketType SGSocket::make_server_socket () {
struct sockaddr_in name;
-#if defined( __CYGWIN__ ) || defined( __CYGWIN32__ ) || defined( sgi ) || defined( _MSC_VER ) || defined(__MINGW32__)
+#if defined( __CYGWIN__ ) || defined( __CYGWIN32__ ) || defined( sgi ) || defined( _MSC_VER ) || defined(__MINGW32__) || defined( __APPLE__ )
int length;
#else
socklen_t length;
// cout << "sock_stream\n";
if ( msgsock == INVALID_SOCKET ) {
// cout << "msgsock == invalid\n";
- msgsock = accept(sock, 0, 0);
- closesocket(sock);
- sock = msgsock;
+ msgsock = sock;
+ sock = accept(msgsock, 0, 0);
} else {
// cout << "ready to read\n";
char *buf_ptr = save_buf + save_len;
if ( result == 0 && save_len == 0 && first_read == true ) {
SG_LOG( SG_IO, SG_ALERT,
"Connection closed by foreign host." );
- closesocket(sock);
- open( get_dir() );
+ close();
}
}
} else {
}
closesocket( sock );
+ if ( sock_style == SOCK_STREAM && msgsock != INVALID_SOCKET ) {
+ sock = msgsock;
+ msgsock = INVALID_SOCKET;
+ }
return true;
}