void PAP::RAEvent(net_buffer *packet) { TRACE("PAP: RAEvent() state=%d\n", State()); NetBufferHeaderReader<ppp_lcp_packet> bufferheader(packet); if (bufferheader.Status() != B_OK) return; ppp_lcp_packet &lcp_hdr = bufferheader.Data(); if (fRequestID != lcp_hdr.id) { // this packet is not a reply to our request // TODO: log this event gBufferModule->free(packet); return; } switch (State()) { case REQ_SENT: NewState(ACCEPTED); Interface().StateMachine().LocalAuthenticationAccepted( Interface().Username()); UpEvent(); break; default: ; } gBufferModule->free(packet); }
VOID CComTouchDriver::ProcessInputEvent(const TOUCHINPUT* inData) { DWORD dwCursorID = inData->dwID; DWORD dwEvent = inData->dwFlags; BOOL bFoundObj = FALSE; // Check if contacts should be incremented if((dwEvent & TOUCHEVENTF_DOWN) && (dwCursorID != MOUSE_CURSOR_ID)) { m_uNumContacts++; } // Screen the types of inputs and the number of contacts if((m_uNumContacts == 0) && (dwCursorID != MOUSE_CURSOR_ID)) { return; } else if((m_uNumContacts > 0) && (dwCursorID == MOUSE_CURSOR_ID)) { return; } // Check if contacts should be decremented if((dwEvent & TOUCHEVENTF_UP) && (dwCursorID != MOUSE_CURSOR_ID)) { m_uNumContacts--; } // Find the object and associate the cursor id with the object if(dwEvent & TOUCHEVENTF_DOWN) { std::list<CCoreObject*>::iterator it; for(it = m_lCoreObjects.begin(); it != m_lCoreObjects.end(); it++) { DownEvent(*it, inData, &bFoundObj); if(bFoundObj) break; } } else if(dwEvent & TOUCHEVENTF_MOVE) { if(m_mCursorObject.count(inData->dwID) > 0) { MoveEvent(inData); } } else if(dwEvent & TOUCHEVENTF_UP) { if(m_mCursorObject.count(inData->dwID) > 0) { UpEvent(inData); } } }
void PAP::RREvent(net_buffer *packet) { TRACE("PAP: RREvent() state=%d\n", State()); NetBufferHeaderReader<ppp_lcp_packet> bufferheader(packet); if (bufferheader.Status() != B_OK) return; ppp_lcp_packet &request = bufferheader.Data(); int32 length = ntohs(request.length); uint8 *data = request.data; uint8 *userLength = data; uint8 *passwordLength = data + 1 + data[0]; // make sure the length values are all okay if (6 + *userLength + *passwordLength > length) { gBufferModule->free(packet); return; } char *peerUsername = (char*) userLength + 1, *peerPassword = (char*) passwordLength + 1; const char *username = Interface().Username(), *password = Interface().Password(); if (*userLength == strlen(username) && *passwordLength == strlen(password) && !strncmp(peerUsername, username, *userLength) && !strncmp(peerPassword, password, *passwordLength)) { NewState(ACCEPTED); Interface().StateMachine().PeerAuthenticationAccepted(username); UpEvent(); SendAck(packet); } else { NewState(INITIAL); Interface().StateMachine().PeerAuthenticationDenied(username); UpFailedEvent(); SendNak(packet); } }