示例#1
0
ssize_t ws_close(wsh_t *wsh, int16_t reason) 
{
	
	if (wsh->down) {
		return -1;
	}

	wsh->down = 1;
	
	if (reason && wsh->sock != ws_sock_invalid) {
		uint16_t *u16;
		uint8_t fr[4] = {WSOC_CLOSE | 0x80, 2, 0};

		u16 = (uint16_t *) &fr[2];
		*u16 = htons((int16_t)reason);
		ws_raw_write(wsh, fr, 4);
	}

	restore_socket(wsh->sock);

	if (wsh->close_sock && wsh->sock != ws_sock_invalid) {
		close(wsh->sock);
	}

	wsh->sock = ws_sock_invalid;

	return reason * -1;
	
}
示例#2
0
int Tracker::send_message(TRACKER_EVENT event2send)
{
	if (m_state == TRACKER_STATE_FAILURE || m_state == TRACKER_STATE_RELEASING)
		return ERR_INTERNAL;
	if (restore_socket() != ERR_NO_ERROR)
	{
		m_status = TRACKER_STATUS_ERROR;
		logger::LOGGER() << "Tracker " << m_announce.c_str() << "  can not restore socket";
		return ERR_INTERNAL;
	}
	m_event_after_connect = event2send;
	m_state = TRACKER_STATE_WORK;
	m_last_update = time(NULL);
	return ERR_NO_ERROR;
}
示例#3
0
static AGESA_STATUS board_ReadSpd (UINT32 Func, UINTN Data, VOID *ConfigPtr)
{
	AGESA_STATUS Status;
#ifdef __PRE_RAM__
	if (ConfigPtr == NULL)
		return AGESA_ERROR;

	select_socket(((AGESA_READ_SPD_PARAMS *)ConfigPtr)->SocketId);

	Status = agesa_ReadSpd (Func, Data, ConfigPtr);

	restore_socket();
#else
	Status = AGESA_UNSUPPORTED;
#endif

	return Status;
}