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; }
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; }
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; }