static FskErr KprWebSocketEndpointSendRawFrame(KprWebSocketEndpoint self, UInt8 opcode, void *payload, UInt32 length) { FskErr err = kFskErrNone; void *frame = NULL; UInt32 frameLength; if (self->closeWasSent) return kFskErrBadState; if (self->writer == NULL) return kFskErrBadState; bailIfError(KprWebSocketEndpointCreateFrame(true, opcode, self->doMask, payload, length, &frame, &frameLength)); KprSocketWriterSendBytes(self->writer, frame, frameLength); bail: if (frame) FskMemPtrDispose(frame); return err; }
static FskErr KprWebSocketEndpointSendRawFrame(KprWebSocketEndpoint self, UInt8 opcode, void *payload, UInt32 length) { FskErr err = kFskErrNone; void *frame = NULL; UInt32 frameLength; if (self->state == kKprWebSocketStateConnecting) return kFskErrBadState; if (self->closeWasSent || self->writer == NULL) { CALLBACK(errorCallback)(self, kFskErrConnectionClosed, "endpoint closed", self->refcon); return kFskErrNone; } bailIfError(KprWebSocketEndpointCreateFrame(true, opcode, self->doMask, payload, length, &frame, &frameLength)); KprSocketWriterSendBytes(self->writer, frame, frameLength); bail: if (frame) FskMemPtrDispose(frame); return err; }