1 diff -Naur forte-0.3.orig/src/arch/netos/txsocha.cpp forte-0.3/src/arch/netos/txsocha.cpp
2 --- forte-0.3.orig/src/arch/netos/txsocha.cpp 2008-07-10 07:33:44.000000000 +0000
3 +++ forte-0.3/src/arch/netos/txsocha.cpp 2008-09-24 13:29:32.000000000 +0000
5 strcpy(ip, pa_stConnectionInformation.m_pcConnectionID);
\r
6 sock_addr.sin_family = AF_INET;
\r
7 sock_addr.sin_port = htons(atoi(splitString(ip)));
\r
8 - memset(&(sock_addr.sin_zero), '\0', 8);
\r
9 + memset(&(sock_addr.sin_zero), '\0', sizeof(sock_addr.sin_zero));
\r
10 fprintf(stderr,"CTXSocketHandler:: Opening TCP-Connection at IP: %s\n",pa_stConnectionInformation.m_pcConnectionID);
\r
12 if ((sock_id = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
\r
13 diff -Naur forte-0.3.orig/src/arch/pc/pcsochan.cpp forte-0.3/src/arch/pc/pcsochan.cpp
14 --- forte-0.3.orig/src/arch/pc/pcsochan.cpp 2008-07-10 07:33:44.000000000 +0000
15 +++ forte-0.3/src/arch/pc/pcsochan.cpp 2008-09-30 10:23:36.000000000 +0000
17 strcpy(ip, pa_stConnectionInformation.m_pcConnectionID);
\r
18 sock_addr.sin_family = AF_INET;
\r
19 sock_addr.sin_port = htons(atoi(splitString(ip)));
\r
20 - memset(&(sock_addr.sin_zero), '\0', 8);
\r
21 + memset(&(sock_addr.sin_zero), '\0', sizeof(sock_addr.sin_zero));
\r
23 - char acInfo[64] = { "CPCSocketHandler:: Opening TCP-Connection at IP: " };
\r
24 + char acInfo[128] = { "CPCSocketHandler:: Opening TCP-Connection at IP: " };
\r
25 strcat(acInfo, pa_stConnectionInformation.m_pcConnectionID);
\r
26 DEVLOG_INFO(cg_nID_CSocketHandler, 0x10, acInfo);
\r
30 // switch between client/server:
\r
31 if (pa_stConnectionInformation.m_enServiceType == e_Server) {
\r
32 + unsigned int opt = 1;
\r
34 + if (setsockopt(sock_id, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) != 0)
\r
36 + char acError[80] = { "TCP-Socket setsockopt() failed: " };
\r
37 + strcat(acError, strerror(errno));
\r
38 + DEVLOG_ERROR(cg_nID_CSocketHandler, 0x10, acError);
\r
42 sock_addr.sin_addr.s_addr = htonl(INADDR_ANY);
\r
43 if (bind(sock_id, (struct sockaddr *)&sock_addr, sizeof(struct sockaddr))
\r
46 int CPCSocketHandler::receiveDataOnTCP(SSocketHandlerListEntry &pa_stData) {
\r
47 DEVLOG_INFO(cg_nID_CSocketHandler, 0x10, "CPCSocketHandler:: Entering ReceiveDataOnTCP\n");
\r
51 + if (pa_stData.m_bAcceptedConnection)
\r
52 + sock_id = pa_stData.m_nAcceptID;
\r
54 + sock_id = pa_stData.m_nSocketID;
\r
56 receveagain: pa_stData.m_stConnectionInformation.m_pstRecvBuffer->m_nFilledSize
\r
57 - =recv(pa_stData.m_nAcceptID, pa_stData.m_stConnectionInformation.m_pstRecvBuffer->m_pcData, pa_stData.m_stConnectionInformation.m_pstRecvBuffer->m_nMaxSize, 0);
\r
58 + =recv(sock_id, pa_stData.m_stConnectionInformation.m_pstRecvBuffer->m_pcData, pa_stData.m_stConnectionInformation.m_pstRecvBuffer->m_nMaxSize, 0);
\r
60 if (pa_stData.m_stConnectionInformation.m_pstRecvBuffer->m_nFilledSize == -1) {
\r
61 if (errno == EINTR) {
\r
62 diff -Naur forte-0.3.orig/src/arch/pc/pctimeha.cpp forte-0.3/src/arch/pc/pctimeha.cpp
63 --- forte-0.3.orig/src/arch/pc/pctimeha.cpp 2008-04-22 13:31:52.000000000 +0000
64 +++ forte-0.3/src/arch/pc/pctimeha.cpp 2008-10-08 12:27:09.000000000 +0000
66 #include "pctimeha.h"
\r
67 #include "../../core/devexec.h"
\r
69 +#include <sys/time.h>
\r
71 const TINT32 CPCTimerHandler::csm_nTicksPerSecond = 1000;
\r
77 +static inline unsigned long long GetTicks(struct timeval* stTmVal, TINT32 ticksPerSecond)
\r
79 + unsigned long long ret = stTmVal->tv_sec * 1000LL;// sec -> ms
\r
80 + ret += stTmVal->tv_usec/1000;// + us -> ms
\r
81 + ret /= 1000/ticksPerSecond; // ms -> ticks
\r
85 bool CPCTimerHandler::run(){
\r
86 struct timespec stReq;
\r
87 + struct timeval stTmNow;
\r
88 + unsigned long long tickStart;
\r
89 + unsigned long long tickNow;
\r
90 + unsigned long long tickCalled = 0;
\r
92 - stReq.tv_nsec = 1000000 / (csm_nTicksPerSecond / 1000);
\r
93 + stReq.tv_nsec = 1000000000 / (csm_nTicksPerSecond);
\r
95 + gettimeofday(&stTmNow, NULL);
\r
96 + tickNow = tickStart = GetTicks(&stTmNow, csm_nTicksPerSecond);
\r
99 - nanosleep(&stReq, NULL);
\r
100 + if( (tickNow-tickStart) <= (tickCalled+1) ) {
\r
101 + nanosleep(&stReq, NULL);
\r
105 + gettimeofday(&stTmNow, NULL);
\r
106 + tickNow = GetTicks(&stTmNow, csm_nTicksPerSecond);
\r