struct sockaddr_in gSyscall_ServerAddr;
// === CODE ===
-int _InitSyscalls()
+void Request_Preinit(void)
+{
+ // Set server address
+ memset((void *)&gSyscall_ServerAddr, '\0', sizeof(struct sockaddr_in));
+ gSyscall_ServerAddr.sin_family = AF_INET;
+ gSyscall_ServerAddr.sin_port = htons(SERVER_PORT);
+}
+
+int _InitSyscalls(void)
{
-
#ifdef __WIN32__
/* Open windows connection */
if (WSAStartup(0x0101, &gWinsock) != 0)
exit(0);
}
- // Set server address
- memset((void *)&gSyscall_ServerAddr, '\0', sizeof(struct sockaddr_in));
- gSyscall_ServerAddr.sin_family = AF_INET;
- gSyscall_ServerAddr.sin_port = htons(SERVER_PORT);
- gSyscall_ServerAddr.sin_addr.s_addr = htonl(0x7F000001);
-
#if 0
// Set client address
memset((void *)&client, '\0', sizeof(struct sockaddr_in));
#if USE_TCP
if( connect(gSocket, (struct sockaddr *)&gSyscall_ServerAddr, sizeof(struct sockaddr_in)) < 0 )
{
- fprintf(stderr, "Cannot connect to server (localhost:%i)\n", SERVER_PORT);
+ fprintf(stderr, "[ERROR -] Cannot connect to server (localhost:%i)\n", SERVER_PORT);
+ fprintf(stderr, "[ERROR -] ", giSyscall_ClientID);
perror("_InitSyscalls");
#if __WIN32__
closesocket(gSocket);
#endif
exit(0);
}
- giSyscall_ClientID = gSocket; // A bit of a hack really :(
#endif
#if 0
#if !USE_TCP
// Ask server for a client ID
+ if( !giSyscall_ClientID )
{
tRequestHeader req;
int len;
return 0;
}
+/**
+ * \brief Close the syscall socket
+ * \note Used in acess_fork to get a different port number
+ */
+void _CloseSyscalls(void)
+{
+ #if __WIN32__
+ closesocket(gSocket);
+ WSACleanup();
+ #else
+ close(gSocket);
+ #endif
+}
+
int SendRequest(tRequestHeader *Request, int RequestSize, int ResponseSize)
{
if( gSocket == INVALID_SOCKET )
// Send it off
SendData(Request, RequestSize);
-
+
+ if( Request->CallID == SYS_EXIT ) return 0;
+
// Wait for a response (no timeout)
return ReadData(Request, ResponseSize, 0);
}
#endif
if( len != Length ) {
+ fprintf(stderr, "[ERROR %i] ", giSyscall_ClientID);
perror("SendData");
exit(-1);
}
ret = select(gSocket+1, &fds, NULL, NULL, timeoutPtr);
if( ret == -1 ) {
+ fprintf(stderr, "[ERROR %i] ", giSyscall_ClientID);
perror("ReadData - select");
exit(-1);
}
if( !ret ) {
- printf("Timeout reading from socket\n");
+ printf("[ERROR %i] Timeout reading from socket\n", giSyscall_ClientID);
return 0; // Timeout
}
#endif
if( ret < 0 ) {
+ fprintf(stderr, "[ERROR %i] ", giSyscall_ClientID);
perror("ReadData");
exit(-1);
}