connectivity/com.nokia.tcf/native/TCFNative/TCFCommTCP/TcpComm.cpp
author Chad Peckham <chad.peckham@nokia.com>
Tue, 25 Aug 2009 09:44:48 -0500
changeset 458 70467d598794
parent 425 33a58f7aa2f4
child 478 2d6f57ea6ce2
permissions -rw-r--r--
Fix for bug 9652
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     1
/*
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     3
* All rights reserved.
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     4
* This component and the accompanying materials are made available
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     6
* which accompanies this distribution, and is available
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     8
*
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     9
* Initial Contributors:
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    11
*
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    12
* Contributors:
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    13
*
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    14
* Description: 
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    15
*
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    16
*/
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    17
// TcpComm.cpp: implementation of the CTcpComm class.
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    18
//
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    19
//////////////////////////////////////////////////////////////////////
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    20
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    21
#include "stdafx.h"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    22
#include "TcpComm.h"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    23
//#include "pn_const.h"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    24
//#include "OSTConstants.h"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    25
#include "Connection.h"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    26
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    27
//////////////////////////////////////////////////////////////////////
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    28
// Construction/Destruction
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    29
//////////////////////////////////////////////////////////////////////
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    30
CTcpComm::CTcpComm()
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    31
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    32
#ifdef _DEBUG
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    33
	if (gDoLogging)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    34
	{
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    35
//		FILE* f = fopen("c:\\tcf\\tcpcommlog.txt", "at");
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    36
//		fprintf(f, "CTcpComm::CTcpComm() (default constructor)\n");
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    37
//		fclose(f);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    38
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    39
#endif
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    40
	m_socket = INVALID_SOCKET;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    41
	m_timeOut.tv_sec = TIMEOUT_SEC(DEFAULT_SOCKET_TIMEOUT);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    42
	m_timeOut.tv_usec = TIMEOUT_USEC(DEFAULT_SOCKET_TIMEOUT);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    43
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    44
	m_hSocketEvent = WSA_INVALID_EVENT;
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    45
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    46
}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    47
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    48
CTcpComm::CTcpComm(ConnectData* connectSettings, DWORD connectionId, CBaseProtocol* protocol)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    49
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    50
#ifdef _DEBUG
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    51
	if (gDoLogging)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    52
	{
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    53
//		FILE* f = fopen("c:\\tcf\\tcpcommlog.txt", "at");
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    54
//		fprintf(f, "connectSettings=%x connectionId=%d, protocol=%x\n", connectSettings, connectionId, protocol);
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    55
//		fclose(f);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    56
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    57
#endif
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    58
	m_connId = connectionId;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    59
	m_Protocol = protocol;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    61
	m_ConnectSettings = new ConnectData();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    62
	memcpy(m_ConnectSettings, connectSettings, sizeof(ConnectData));
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    63
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    64
#if (defined(LOG_COMM) || defined(LOG_PROCCOMM)) && defined(_DEBUG)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    65
	if (gDoLogging)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    66
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    67
		m_CommDebugLog = new TCDebugLog("TCF_Comm", connectionId, 2000L);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    68
		m_ProcDebugLog = new TCDebugLog("TCF_CommP", connectionId, 2000L);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    69
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    70
#endif
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    71
	m_socket = INVALID_SOCKET;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    72
	m_timeOut.tv_sec = TIMEOUT_SEC(DEFAULT_SOCKET_TIMEOUT);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    73
	m_timeOut.tv_usec = TIMEOUT_USEC(DEFAULT_SOCKET_TIMEOUT);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    74
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    75
	m_hSocketEvent = WSA_INVALID_EVENT;
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    76
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    77
}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    78
CTcpComm::~CTcpComm()
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    79
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    80
#ifdef _DEBUG
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    81
	if (gDoLogging)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    82
	{
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    83
//		FILE* f = fopen("c:\\tcf\\tcpcommlog.txt", "at");
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    84
//		fprintf(f, "CTcpComm::~CTcpComm()\n");
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    85
//		fclose(f);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    86
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    87
#endif
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    88
	if (IsConnected())
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    89
	{
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    90
		if (m_socket != INVALID_SOCKET)
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    91
		{
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    92
			shutdown(m_socket, SD_BOTH);
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    93
			closesocket(m_socket);
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    94
			WSAClose();
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    95
		}
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
    96
		m_isConnected = false;
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    97
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    98
	if (m_pBuffer)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    99
		delete[] m_pBuffer;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   100
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   101
	if (m_hSocketEvent != WSA_INVALID_EVENT)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   102
		WSACloseEvent(m_hSocketEvent);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   103
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   104
}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   105
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   106
//#define USE_EVENTS
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   107
;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   108
long CTcpComm::OpenPort()
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   109
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   110
	COMMLOGOPEN();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   111
	COMMLOGS("CTcpComm::OpenPort\n");
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   112
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   113
	long err = TCAPI_ERR_NONE;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   114
	char* ipAddress = m_ConnectSettings->tcpSettings.ipAddress;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   115
	char* ipPort = m_ConnectSettings->tcpSettings.ipPort;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   116
	// set this to set socket to non-blocking
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   117
	// DWORD nonblock = 1;		// non-blocking
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   118
	DWORD nonblock = 0;		// blocking
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   119
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   120
	COMMLOGA2("CTcpComm::OpenPort ipAddress=%s ipPort=%s\n", ipAddress, ipPort);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   121
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   122
	int wsaErr = 0;
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   123
	wsaErr = WSAInit();
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   124
	if (wsaErr != 0)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   125
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   126
		err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   127
//		err = -1;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   128
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   129
	else
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   130
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   131
		m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   132
		COMMLOGA1("CTcpComm::OpenPort socket=%x\n", m_socket);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   133
		if (m_socket == INVALID_SOCKET)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   134
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   135
			m_lastCommError = WSAGetLastError();
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   136
			WSASetLastError(0);
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   137
			WSAClose();
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   138
			err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   139
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   140
		else
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   141
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   142
			if (ioctlsocket(m_socket, FIONBIO, &nonblock) == SOCKET_ERROR)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   143
			{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   144
				m_lastCommError = WSAGetLastError();
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   145
				WSASetLastError(0);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   146
				closesocket(m_socket);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   147
				m_socket = INVALID_SOCKET;
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   148
				WSAClose();
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   149
				err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   150
			}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   151
			else
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   152
			{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   153
				int i = SO_MAX_MSG_SIZE;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   154
				// set socket options
389
de80f483b7e6 Turn keepalive back on to be compatible with 2.0.x releases.
Chad Peckham <chad.peckham@nokia.com>
parents: 366
diff changeset
   155
				BOOL keepAlive = TRUE;
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   156
				setsockopt(m_socket, SOL_SOCKET, SO_KEEPALIVE, (const char*)&keepAlive, sizeof(BOOL));
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   157
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   158
				struct linger l;
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   159
				l.l_onoff = 0; l.l_linger = 0;
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   160
				setsockopt(m_socket, SOL_SOCKET, SO_LINGER, (const char*)&l, sizeof(l));
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   161
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   162
				int sockRecvSize = MAX_TCP_MESSAGE_BUFFER_LENGTH;//(256*1024L);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   163
				setsockopt(m_socket, SOL_SOCKET, SO_RCVBUF, (const char*)&sockRecvSize, sizeof(int));
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   164
				int sockSendSize = (64*1024L);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   165
				setsockopt(m_socket, SOL_SOCKET, SO_SNDBUF, (const char*)&sockSendSize, sizeof(int));
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   166
				WSAGetLastError(); // ignore error for now
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   167
				WSASetLastError(0);
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   168
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   169
				// connect
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   170
				WORD wPort = atoi(ipPort);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   171
				m_clientService.sin_family = AF_INET;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   172
				m_clientService.sin_addr.S_un.S_addr = inet_addr(ipAddress);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   173
				m_clientService.sin_port = htons(wPort);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   174
				if (connect(m_socket, (SOCKADDR*)&m_clientService, sizeof(m_clientService)) == SOCKET_ERROR)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   175
				{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   176
					int wsaErr = WSAGetLastError();
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   177
					WSASetLastError(0);
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   178
					COMMLOGA1("CTcpComm::OpenPort connect=wsaErr=%d\n", wsaErr);
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   179
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   180
					// socket is non-blocking
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   181
					if (wsaErr != WSAEWOULDBLOCK)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   182
					{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   183
						m_lastCommError = wsaErr;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   184
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   185
						closesocket(m_socket);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   186
						m_socket = INVALID_SOCKET;
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   187
						WSAClose();
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   188
						err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   189
					}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   190
					else // WSAEWOULDBLOCK error returned
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   191
					{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   192
						// WSAEWOULDBLOCK use select now
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   193
						fd_set readfds, writefds, exceptfds;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   194
						FD_ZERO(&readfds);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   195
						FD_ZERO(&writefds);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   196
						FD_ZERO(&exceptfds);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   197
						FD_SET(m_socket, &readfds);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   198
						FD_SET(m_socket, &writefds);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   199
						FD_SET(m_socket, &exceptfds);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   200
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   201
						int selRes = 0;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   202
						while(1)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   203
						{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   204
							selRes = select(0, &readfds, &writefds, &exceptfds, &m_timeOut);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   205
							if (selRes == SOCKET_ERROR)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   206
							{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   207
								wsaErr = WSAGetLastError();
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   208
								WSASetLastError(0);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   209
								if (wsaErr != WSAEWOULDBLOCK)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   210
								{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   211
									// real error
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   212
									m_lastCommError = wsaErr;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   213
									shutdown(m_socket, SD_BOTH);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   214
									closesocket(m_socket);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   215
									m_socket = INVALID_SOCKET;
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   216
									WSAClose();
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   217
									err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   218
								}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   219
								// else do another select
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   220
							}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   221
							else if (selRes > 0)// select OK 
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   222
							{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   223
								m_lastCommError = 0;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   224
								m_isConnected = true;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   225
								break; // done
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   226
							}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   227
							else
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   228
							{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   229
								// timed out
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   230
								m_lastCommError = WSAGetLastError();
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   231
								WSASetLastError(0);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   232
								shutdown(m_socket, SD_BOTH);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   233
								closesocket(m_socket);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   234
								m_socket = INVALID_SOCKET;
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   235
								WSAClose();
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   236
								err = TCAPI_ERR_WHILE_CONFIGURING_MEDIA;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   237
							}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   238
						}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   239
					}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   240
				}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   241
				else // connect return OK
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   242
				{
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   243
					COMMLOGS("CTcpComm::OpenPort connect OK\n");
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   244
					m_lastCommError = 0;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   245
					m_isConnected = true;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   246
				}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   247
			}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   248
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   249
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   250
	if (err == TCAPI_ERR_NONE)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   251
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   252
		// we are connected
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   253
		m_numberBytes = 0;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   254
		m_pBuffer = new BYTE[MAX_TCP_MESSAGE_BUFFER_LENGTH];
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   255
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   256
#ifdef USE_EVENTS
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   257
		// create an event for the socket closing
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   258
		m_hSocketEvent = WSACreateEvent();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   259
		::WSAEventSelect(m_socket, m_hSocketEvent, FD_CLOSE);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   260
		// above call sets socket to non-blocking
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   261
		//  cannot reset to blocking after using WSAEventSelect
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   262
		//  thus this ioctlsocket call will fail
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   263
		ioctlsocket(m_socket, FIONBIO, &nonblock);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   264
#endif
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   265
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   266
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   267
	COMMLOGA1("CTcpComm::OpenPort err=%d\n", err);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   268
	COMMLOGCLOSE();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   269
	return err;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   270
}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   271
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   272
long CTcpComm::ClosePort()
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   273
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   274
	COMMLOGOPEN();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   275
	COMMLOGS("CTcpComm::ClosePort\n");
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   276
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   277
	long err = TCAPI_ERR_NONE;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   278
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   279
	if (!IsConnected())
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   280
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   281
		err = TCAPI_ERR_MEDIA_NOT_OPEN;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   282
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   283
	else
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   284
	{
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   285
		if (m_socket != INVALID_SOCKET)
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   286
		{
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   287
			shutdown(m_socket, SD_BOTH);
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   288
			closesocket(m_socket);
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   289
			m_socket = INVALID_SOCKET;
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   290
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   291
			WSAClose();
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   292
		}
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   293
		m_isConnected = false;
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   294
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   295
		delete[] m_pBuffer;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   296
		m_pBuffer = NULL;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   297
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   298
		if (m_hSocketEvent != WSA_INVALID_EVENT)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   299
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   300
			WSACloseEvent(m_hSocketEvent);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   301
			m_hSocketEvent = WSA_INVALID_EVENT;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   302
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   303
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   304
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   305
	COMMLOGCLOSE();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   306
	return err;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   307
}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   308
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   309
long CTcpComm::PollPort(DWORD &outSize)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   310
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   311
	long err = TCAPI_ERR_NONE;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   312
	DWORD numBytes = 0;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   313
	outSize = 0;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   314
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   315
	if (!IsConnected())
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   316
		return TCAPI_ERR_MEDIA_NOT_OPEN;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   317
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   318
#ifdef USE_EVENTS
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   319
	int ret = ::WSAWaitForMultipleEvents(1, &m_hSocketEvent, FALSE, 0, FALSE);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   320
	if (ret == WSA_WAIT_EVENT_0)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   321
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   322
		::WSAResetEvent(m_hSocketEvent);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   323
		err = TCAPI_ERR_COMM_ERROR;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   324
		m_lastCommError = WSAESHUTDOWN;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   325
		return err;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   326
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   327
#endif
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   328
	int sockErr = 0; int optLen = sizeof(int);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   329
	int getErr = getsockopt(m_socket, SOL_SOCKET, SO_ERROR, (char*)&sockErr, &optLen);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   330
	if (getErr == 0)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   331
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   332
		if (sockErr)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   333
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   334
			err = TCAPI_ERR_COMM_ERROR;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   335
			m_lastCommError = sockErr;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   336
			return err;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   337
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   338
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   339
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   340
	fd_set readfds, writefds, exceptfds;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   341
	FD_ZERO(&readfds); 
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   342
	FD_ZERO(&writefds); 
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   343
	FD_ZERO(&exceptfds);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   344
	FD_SET(m_socket, &readfds);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   345
	FD_SET(m_socket, &writefds);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   346
	FD_SET(m_socket, &exceptfds);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   347
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   348
	bool portReady = false;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   349
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   350
		TIMEVAL pollTimeout = {0,0}; // just poll the status
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   351
		int selErr = select(0, &readfds, 0, 0, &pollTimeout);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   352
		if (selErr > 0)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   353
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   354
			if (FD_ISSET(m_socket, &readfds))
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   355
			{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   356
				m_lastCommError = 0;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   357
				portReady = true;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   358
			}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   359
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   360
		else if (selErr == SOCKET_ERROR)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   361
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   362
			m_lastCommError = WSAGetLastError();
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   363
			WSASetLastError(0);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   364
			err = TCAPI_ERR_COMM_ERROR;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   365
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   366
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   367
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   368
	if (portReady)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   369
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   370
		// read was signaled as ready
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   371
		int recvRet = recv(m_socket, (char*)&m_pPeekBuffer, sizeof(m_pPeekBuffer), MSG_PEEK);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   372
		if (recvRet > 0)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   373
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   374
			if (ioctlsocket(m_socket, FIONREAD, &numBytes) == 0)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   375
			{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   376
				m_lastCommError = 0;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   377
				outSize = numBytes;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   378
			}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   379
			else // SOCKET_ERROR
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   380
			{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   381
				m_lastCommError = WSAGetLastError();
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   382
				WSASetLastError(0);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   383
				err = TCAPI_ERR_COMM_ERROR;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   384
			}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   385
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   386
		else if (recvRet == 0)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   387
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   388
			// read was signalled as ready but recv=0 signals that remote shutdown
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   389
			m_lastCommError = WSAESHUTDOWN;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   390
			err = TCAPI_ERR_COMM_ERROR;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   391
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   392
		else
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   393
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   394
			// SOCKET_ERROR: error on recv other than a shutdown
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   395
			m_lastCommError = WSAGetLastError();
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   396
			WSASetLastError(0);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   397
			err = TCAPI_ERR_COMM_ERROR;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   398
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   399
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   400
	return err;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   401
}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   402
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   403
long CTcpComm::ReadPort(DWORD inSize, void *outData, DWORD &outSize)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   404
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   405
	long err = TCAPI_ERR_NONE;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   406
	DWORD numBytes = 0;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   407
	outSize = 0;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   408
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   409
	if (!IsConnected())
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   410
		return TCAPI_ERR_MEDIA_NOT_OPEN;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   411
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   412
	if (ioctlsocket(m_socket, FIONREAD, &numBytes) == 0)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   413
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   414
		if (numBytes > inSize)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   415
			numBytes = inSize;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   416
		int res = recv(m_socket, (char*)outData, numBytes, 0);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   417
		if (res == SOCKET_ERROR)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   418
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   419
			long commErr = WSAGetLastError();
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   420
			WSASetLastError(0);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   421
			if ((DWORD)commErr != m_lastCommError)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   422
			{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   423
				m_lastCommError = commErr;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   424
			}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   425
			err = TCAPI_ERR_COMM_ERROR;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   426
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   427
		else if (res == 0)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   428
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   429
			// recv=0 --> connection closed
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   430
			m_lastCommError = WSAESHUTDOWN;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   431
			err = TCAPI_ERR_COMM_ERROR;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   432
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   433
		else
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   434
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   435
			m_lastCommError = 0;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   436
			outSize = numBytes;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   437
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   438
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   439
	else
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   440
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   441
		// SOCKET_ERROR on ioctlsocket
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   442
		m_lastCommError = WSAGetLastError();
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   443
		WSASetLastError(0);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   444
		err = TCAPI_ERR_COMM_ERROR;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   445
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   446
	return err;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   447
}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   448
long CTcpComm::ProcessBuffer(CConnection* pConn, CRegistry* pRegistry, long& numberProcessed)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   449
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   450
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   451
	long err = TCAPI_ERR_NONE;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   452
	long routingErr = TCAPI_ERR_NONE;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   453
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   454
	if (!IsConnected())
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   455
		return TCAPI_ERR_MEDIA_NOT_OPEN;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   456
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   457
	if (!m_Protocol)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   458
		return TCAPI_ERR_UNKNOWN_MEDIA_TYPE;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   459
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   460
	DWORD protocolHeaderLength = m_Protocol->GetHeaderLength();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   461
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   462
	// fill buffer
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   463
	if (m_numberBytes < MAX_TCP_MESSAGE_BUFFER_LENGTH)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   464
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   465
		DWORD outLen = MAX_TCP_MESSAGE_BUFFER_LENGTH - m_numberBytes;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   466
		BYTE* ptr = &m_pBuffer[m_numberBytes];
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   467
		err = ReadPort(outLen, ptr, outLen);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   468
		if (err == TCAPI_ERR_NONE && outLen > 0)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   469
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   470
			m_numberBytes += outLen;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   471
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   472
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   473
	
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   474
	// now process buffer but only for complete messages
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   475
	if (err == TCAPI_ERR_NONE)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   476
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   477
		if (m_numberBytes >= protocolHeaderLength)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   478
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   479
			BYTE* ptr = m_pBuffer;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   480
			long bytesRemaining = m_numberBytes;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   481
			long usedLen = 0;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   482
			bool done = false;
458
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   483
			long numberSkipped=0;
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   484
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   485
			while (!done)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   486
			{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   487
				DWORD fullMessageLength = bytesRemaining;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   488
				DWORD rawLength = 0;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   489
				BYTE* fullMessage = ptr;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   490
				BYTE* rawMessage = ptr;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   491
				BYTE msgId = 0;
458
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   492
				int result = m_Protocol->DecodeMessage(fullMessage, fullMessageLength, msgId, rawMessage, rawLength);
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   493
				if (result == DECODE_NOT_ENOUGH_BYTES_TO_SEARCH)
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   494
				{
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   495
					done = true;
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   496
				}
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   497
				else if (result == DECODE_MESSAGE_NOT_FOUND)
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   498
				{
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   499
					numberSkipped++;
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   500
					usedLen += fullMessageLength;
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   501
					bytesRemaining -= fullMessageLength;
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   502
					ptr += fullMessageLength;
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   503
					if (bytesRemaining < protocolHeaderLength)
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   504
						done = true;
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   505
				}
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   506
				else if (result == DECODE_MESSAGE_FOUND)
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   507
				{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   508
					err = PreProcessMessage(msgId, fullMessageLength, fullMessage);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   509
					if (err != TCAPI_ERR_NONE)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   510
					{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   511
						PROCLOGOPEN();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   512
						PROCLOGA1("CTcpComm::ProcessBuffer Notify err = %x\n", err);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   513
						PROCLOGCLOSE();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   514
						// notify all clients right now 
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   515
						pConn->NotifyClientsCommError(err, false, 0);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   516
						err = TCAPI_ERR_NONE;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   517
					}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   518
#ifdef _DEBUG
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   519
					int reallen = fullMessageLength;
458
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   520
					if (reallen > 80) reallen = 80;
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   521
					char msg[6];
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   522
					msg[0] = '\0';
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   523
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   524
					sTcpLogMsg[0] = '\0';
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   525
					if (reallen > 0)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   526
					{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   527
						sTcpLogMsg[0] = '\0';
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   528
						for (int i = 0; i < reallen; i++)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   529
						{
458
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   530
							if (isalnum(ptr[i]))
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   531
							{
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   532
								sprintf(msg, "%c", ptr[i]);
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   533
							}
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   534
							else
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   535
							{
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   536
								sprintf(msg, "%02.2x ", ptr[i]);
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   537
							}
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   538
							strcat(sTcpLogMsg, msg);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   539
						}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   540
					}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   541
#endif
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   542
					PROCLOGOPEN();
458
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   543
					PROCLOGA5("CTcpComm::ProcessBuffer - RouteMesssage pRegistry = %x id=%x len=%d len=%d msg=%s\n", pRegistry, msgId, fullMessageLength, rawLength, sTcpLogMsg);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   544
					PROCLOGCLOSE();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   545
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   546
					err = pRegistry->RouteMessage(msgId, fullMessage, fullMessageLength, rawMessage, rawLength);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   547
					if (err != TCAPI_ERR_NONE) routingErr = err; // saved for future
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   548
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   549
					numberProcessed++;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   550
					usedLen += fullMessageLength;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   551
					bytesRemaining -= fullMessageLength;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   552
					ptr += fullMessageLength;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   553
					if (bytesRemaining < protocolHeaderLength)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   554
						done = true;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   555
				}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   556
			}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   557
			DeleteMsg(usedLen);
458
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   558
			PROCLOGOPEN();
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   559
			PROCLOGA2("CTcpComm::ProcessBuffer - numberSkipped=%d numberProcessed=%d\n", numberSkipped, numberProcessed);
70467d598794 Fix for bug 9652
Chad Peckham <chad.peckham@nokia.com>
parents: 425
diff changeset
   560
			PROCLOGCLOSE();
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   561
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   562
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   563
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   564
	if (routingErr == TCAPI_ERR_NONE)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   565
		return err;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   566
	else
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   567
		return routingErr;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   568
}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   569
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   570
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   571
long CTcpComm::SendDataToPort(DWORD inSize, const void* inData)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   572
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   573
	COMMLOGOPEN();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   574
	COMMLOGS("CTcpComm::SendDataToPort\n");
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   575
	
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   576
	long err = TCAPI_ERR_NONE;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   577
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   578
	if (!IsConnected())
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   579
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   580
		COMMLOGCLOSE();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   581
		return TCAPI_ERR_MEDIA_NOT_OPEN;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   582
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   583
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   584
#ifdef USE_EVENTS
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   585
	int ret = ::WSAWaitForMultipleEvents(1, &m_hSocketEvent, FALSE, 0, FALSE);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   586
	if (ret == WSA_WAIT_EVENT_0)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   587
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   588
		::WSAResetEvent(m_hSocketEvent);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   589
		err = TCAPI_ERR_COMM_ERROR;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   590
		m_lastCommError = WSAESHUTDOWN;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   591
		COMMLOGCLOSE();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   592
		return err;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   593
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   594
#endif
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   595
	int sockErr = 0; int optLen = sizeof(int);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   596
	int getErr = getsockopt(m_socket, SOL_SOCKET, SO_ERROR, (char*)&sockErr, &optLen);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   597
	if (getErr == 0)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   598
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   599
		if (sockErr)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   600
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   601
			err = TCAPI_ERR_COMM_ERROR;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   602
			m_lastCommError = sockErr;
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   603
			COMMLOGA1("CTcpComm::SendDataToPort getsockopt=%d\n", sockErr);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   604
			COMMLOGCLOSE();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   605
			return err;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   606
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   607
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   608
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   609
	fd_set readfds, writefds, exceptfds;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   610
	FD_ZERO(&readfds); 
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   611
	FD_ZERO(&writefds); 
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   612
	FD_ZERO(&exceptfds);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   613
	FD_SET(m_socket, &readfds);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   614
	FD_SET(m_socket, &writefds);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   615
	FD_SET(m_socket, &exceptfds);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   616
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   617
	COMMLOGS("CTcpComm::SendDataToPort select\n");
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   618
	bool portReady = false;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   619
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   620
		int selErr = select(0, &readfds, &writefds, &exceptfds, &m_timeOut);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   621
		if (selErr > 0)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   622
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   623
			if (FD_ISSET(m_socket, &writefds))
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   624
			{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   625
				m_lastCommError = 0;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   626
				portReady = true;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   627
			}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   628
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   629
		else if (selErr == SOCKET_ERROR)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   630
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   631
			m_lastCommError = WSAGetLastError();
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   632
			WSASetLastError(0);
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   633
			COMMLOGA1("CTcpComm::SendDataToPort select(SOCKET_ERROR)=%d\n", m_lastCommError);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   634
			err = TCAPI_ERR_COMM_ERROR;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   635
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   636
		else if (selErr == 0) // timeout
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   637
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   638
			m_lastCommError = WSAGetLastError();
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   639
			WSASetLastError(0);
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   640
			COMMLOGA1("CTcpComm::SendDataToPort select(timeout)=%d\n", m_lastCommError);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   641
			err = TCAPI_ERR_COMM_ERROR;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   642
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   643
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   644
	COMMLOGA1("CTcpComm::SendDataToPort portReady=%d\n", portReady);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   645
	if (portReady)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   646
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   647
		COMMLOGS("CTcpComm::SendDataToPort send start\n");
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   648
		// loop until all bytes are sent
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   649
		DWORD bytesRemaining = inSize;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   650
		DWORD nSent = 0;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   651
		char* unsent = (char*)inData;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   652
		while (bytesRemaining)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   653
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   654
			nSent = send(m_socket, unsent, bytesRemaining, 0);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   655
			if (nSent == SOCKET_ERROR)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   656
			{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   657
				int wsaErr = WSAGetLastError();
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   658
				WSASetLastError(0);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   659
				// ignore "would block" errors
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   660
				if (wsaErr != WSAEWOULDBLOCK)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   661
				{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   662
					// TODO: error handling
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   663
					COMMLOGA1("CTcpComm::SendDataToPort send(SOCKET_ERROR)=%d\n", wsaErr);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   664
					m_lastCommError = wsaErr;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   665
					err = TCAPI_ERR_COMM_ERROR;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   666
					break;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   667
				}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   668
			}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   669
			else
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   670
			{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   671
				m_lastCommError = 0;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   672
				unsent += nSent;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   673
				bytesRemaining -= nSent;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   674
			}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   675
		} // end while
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   676
		COMMLOGS("CTcpComm::SendDataToPort send done\n");
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   677
#ifdef _DEBUG
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   678
		BYTE* ptr = (BYTE*)inData;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   679
		long numBytes = (inSize > 20) ? 20 : inSize;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   680
		char msg[200];
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   681
		sprintf(msg, "CTcpComm::SendDataToPort data = ");
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   682
		for (int i = 0; i < numBytes; i++)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   683
		{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   684
			sprintf(msg, "%s %02.2x", msg, ptr[i]);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   685
		}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   686
		sprintf(msg, "%s\n", msg);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   687
		COMMLOGS(msg);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   688
#endif
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   689
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   690
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   691
	COMMLOGCLOSE();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   692
	return err;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   693
}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   694
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   695
void CTcpComm::DeleteMsg(DWORD inMsgLength)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   696
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   697
	// inMsgLength includes header
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   698
	// delete from beginning of buffer
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   699
	if (inMsgLength == 0)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   700
		return;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   701
	if (m_numberBytes > 0 && m_numberBytes >= inMsgLength)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   702
	{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   703
		size_t moveLen = m_numberBytes - inMsgLength;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   704
		if (moveLen > 0)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   705
			memcpy(&m_pBuffer[0], &m_pBuffer[inMsgLength], moveLen);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   706
		m_numberBytes -= inMsgLength;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   707
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   708
}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   709
bool CTcpComm::IsConnectionEqual(ConnectData* pConn)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   710
{
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   711
	if ((strcmp(pConn->tcpSettings.ipAddress, m_ConnectSettings->tcpSettings.ipAddress) == 0))
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   712
	{
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   713
		if ((strcmp(pConn->tcpSettings.ipPort, m_ConnectSettings->tcpSettings.ipPort) == 0))
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   714
		{
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   715
			// same port and same IP
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   716
			return true;
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   717
		}
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   718
		else
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   719
		{
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   720
			// different port but same IP
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   721
			return false;
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   722
		}
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   723
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   724
	else
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   725
	{
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   726
		// different IP
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   727
		return false;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   728
	}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   729
}
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   730
366
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   731
int CTcpComm::WSAInit() 
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   732
{
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   733
	int wsaErr = 0;
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   734
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   735
	COMMLOGOPEN();
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   736
	COMMLOGS("CTcpComm::WSAInit\n");
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   737
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   738
	WSADATA wsaData;
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   739
	wsaErr = WSAStartup(MAKEWORD(2,2), &wsaData);
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   740
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   741
	COMMLOGCLOSE();
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   742
	return wsaErr;
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   743
}
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   744
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   745
void CTcpComm::WSAClose()
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   746
{
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   747
	COMMLOGOPEN();
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   748
	COMMLOGS("CTcpComm::WSAClose\n");
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   749
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   750
	WSACleanup();
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   751
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   752
	COMMLOGCLOSE();
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   753
}
b054461d2f85 fix bug 9433 - also some logging changes
chpeckha
parents: 60
diff changeset
   754