mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-05 15:28:39 +09:00
Update NSS to 3.35-RTM
This commit is contained in:
parent
fe49ad404e
commit
66dd670b60
388 changed files with 39075 additions and 20752 deletions
225
security/nss/cpputil/dummy_io.cc
Normal file
225
security/nss/cpputil/dummy_io.cc
Normal file
|
|
@ -0,0 +1,225 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include <assert.h>
|
||||
#include <iostream>
|
||||
|
||||
#include "prerror.h"
|
||||
#include "prio.h"
|
||||
|
||||
#include "dummy_io.h"
|
||||
|
||||
#define UNIMPLEMENTED() \
|
||||
std::cerr << "Unimplemented: " << __FUNCTION__ << std::endl; \
|
||||
assert(false);
|
||||
|
||||
extern const struct PRIOMethods DummyMethodsForward;
|
||||
|
||||
ScopedPRFileDesc DummyIOLayerMethods::CreateFD(PRDescIdentity id,
|
||||
DummyIOLayerMethods *methods) {
|
||||
ScopedPRFileDesc fd(PR_CreateIOLayerStub(id, &DummyMethodsForward));
|
||||
assert(fd);
|
||||
if (!fd) {
|
||||
return nullptr;
|
||||
}
|
||||
fd->secret = reinterpret_cast<PRFilePrivate *>(methods);
|
||||
return fd;
|
||||
}
|
||||
|
||||
PRStatus DummyIOLayerMethods::Close(PRFileDesc *f) {
|
||||
f->secret = nullptr;
|
||||
f->dtor(f);
|
||||
return PR_SUCCESS;
|
||||
}
|
||||
|
||||
int32_t DummyIOLayerMethods::Read(PRFileDesc *f, void *buf, int32_t length) {
|
||||
UNIMPLEMENTED();
|
||||
return -1;
|
||||
}
|
||||
|
||||
int32_t DummyIOLayerMethods::Write(PRFileDesc *f, const void *buf,
|
||||
int32_t length) {
|
||||
UNIMPLEMENTED();
|
||||
return -1;
|
||||
}
|
||||
|
||||
int32_t DummyIOLayerMethods::Available(PRFileDesc *f) {
|
||||
UNIMPLEMENTED();
|
||||
return -1;
|
||||
}
|
||||
|
||||
int64_t DummyIOLayerMethods::Available64(PRFileDesc *f) {
|
||||
UNIMPLEMENTED();
|
||||
return -1;
|
||||
}
|
||||
|
||||
PRStatus DummyIOLayerMethods::Sync(PRFileDesc *f) {
|
||||
UNIMPLEMENTED();
|
||||
return PR_FAILURE;
|
||||
}
|
||||
|
||||
int32_t DummyIOLayerMethods::Seek(PRFileDesc *f, int32_t offset,
|
||||
PRSeekWhence how) {
|
||||
UNIMPLEMENTED();
|
||||
return -1;
|
||||
}
|
||||
|
||||
int64_t DummyIOLayerMethods::Seek64(PRFileDesc *f, int64_t offset,
|
||||
PRSeekWhence how) {
|
||||
UNIMPLEMENTED();
|
||||
return -1;
|
||||
}
|
||||
|
||||
PRStatus DummyIOLayerMethods::FileInfo(PRFileDesc *f, PRFileInfo *info) {
|
||||
UNIMPLEMENTED();
|
||||
return PR_FAILURE;
|
||||
}
|
||||
|
||||
PRStatus DummyIOLayerMethods::FileInfo64(PRFileDesc *f, PRFileInfo64 *info) {
|
||||
UNIMPLEMENTED();
|
||||
return PR_FAILURE;
|
||||
}
|
||||
|
||||
int32_t DummyIOLayerMethods::Writev(PRFileDesc *f, const PRIOVec *iov,
|
||||
int32_t iov_size, PRIntervalTime to) {
|
||||
UNIMPLEMENTED();
|
||||
return -1;
|
||||
}
|
||||
|
||||
PRStatus DummyIOLayerMethods::Connect(PRFileDesc *f, const PRNetAddr *addr,
|
||||
PRIntervalTime to) {
|
||||
UNIMPLEMENTED();
|
||||
return PR_FAILURE;
|
||||
}
|
||||
|
||||
PRFileDesc *DummyIOLayerMethods::Accept(PRFileDesc *sd, PRNetAddr *addr,
|
||||
PRIntervalTime to) {
|
||||
UNIMPLEMENTED();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
PRStatus DummyIOLayerMethods::Bind(PRFileDesc *f, const PRNetAddr *addr) {
|
||||
UNIMPLEMENTED();
|
||||
return PR_FAILURE;
|
||||
}
|
||||
|
||||
PRStatus DummyIOLayerMethods::Listen(PRFileDesc *f, int32_t depth) {
|
||||
UNIMPLEMENTED();
|
||||
return PR_FAILURE;
|
||||
}
|
||||
|
||||
PRStatus DummyIOLayerMethods::Shutdown(PRFileDesc *f, int32_t how) {
|
||||
return PR_SUCCESS;
|
||||
}
|
||||
|
||||
int32_t DummyIOLayerMethods::Recv(PRFileDesc *f, void *buf, int32_t buflen,
|
||||
int32_t flags, PRIntervalTime to) {
|
||||
UNIMPLEMENTED();
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Note: this is always nonblocking and assumes a zero timeout.
|
||||
int32_t DummyIOLayerMethods::Send(PRFileDesc *f, const void *buf,
|
||||
int32_t amount, int32_t flags,
|
||||
PRIntervalTime to) {
|
||||
return Write(f, buf, amount);
|
||||
}
|
||||
|
||||
int32_t DummyIOLayerMethods::Recvfrom(PRFileDesc *f, void *buf, int32_t amount,
|
||||
int32_t flags, PRNetAddr *addr,
|
||||
PRIntervalTime to) {
|
||||
UNIMPLEMENTED();
|
||||
return -1;
|
||||
}
|
||||
|
||||
int32_t DummyIOLayerMethods::Sendto(PRFileDesc *f, const void *buf,
|
||||
int32_t amount, int32_t flags,
|
||||
const PRNetAddr *addr, PRIntervalTime to) {
|
||||
UNIMPLEMENTED();
|
||||
return -1;
|
||||
}
|
||||
|
||||
int16_t DummyIOLayerMethods::Poll(PRFileDesc *f, int16_t in_flags,
|
||||
int16_t *out_flags) {
|
||||
UNIMPLEMENTED();
|
||||
return -1;
|
||||
}
|
||||
|
||||
int32_t DummyIOLayerMethods::AcceptRead(PRFileDesc *sd, PRFileDesc **nd,
|
||||
PRNetAddr **raddr, void *buf,
|
||||
int32_t amount, PRIntervalTime t) {
|
||||
UNIMPLEMENTED();
|
||||
return -1;
|
||||
}
|
||||
|
||||
int32_t DummyIOLayerMethods::TransmitFile(PRFileDesc *sd, PRFileDesc *f,
|
||||
const void *headers, int32_t hlen,
|
||||
PRTransmitFileFlags flags,
|
||||
PRIntervalTime t) {
|
||||
UNIMPLEMENTED();
|
||||
return -1;
|
||||
}
|
||||
|
||||
// TODO: Modify to return unique names for each channel
|
||||
// somehow, as opposed to always the same static address. The current
|
||||
// implementation messes up the session cache, which is why it's off
|
||||
// elsewhere
|
||||
PRStatus DummyIOLayerMethods::Getpeername(PRFileDesc *f, PRNetAddr *addr) {
|
||||
addr->inet.family = PR_AF_INET;
|
||||
addr->inet.port = 0;
|
||||
addr->inet.ip = 0;
|
||||
|
||||
return PR_SUCCESS;
|
||||
}
|
||||
|
||||
PRStatus DummyIOLayerMethods::Getsockname(PRFileDesc *f, PRNetAddr *addr) {
|
||||
UNIMPLEMENTED();
|
||||
return PR_FAILURE;
|
||||
}
|
||||
|
||||
PRStatus DummyIOLayerMethods::Getsockoption(PRFileDesc *f,
|
||||
PRSocketOptionData *opt) {
|
||||
switch (opt->option) {
|
||||
case PR_SockOpt_Nonblocking:
|
||||
opt->value.non_blocking = PR_TRUE;
|
||||
return PR_SUCCESS;
|
||||
default:
|
||||
UNIMPLEMENTED();
|
||||
break;
|
||||
}
|
||||
|
||||
return PR_FAILURE;
|
||||
}
|
||||
|
||||
PRStatus DummyIOLayerMethods::Setsockoption(PRFileDesc *f,
|
||||
const PRSocketOptionData *opt) {
|
||||
switch (opt->option) {
|
||||
case PR_SockOpt_Nonblocking:
|
||||
return PR_SUCCESS;
|
||||
case PR_SockOpt_NoDelay:
|
||||
return PR_SUCCESS;
|
||||
default:
|
||||
UNIMPLEMENTED();
|
||||
break;
|
||||
}
|
||||
|
||||
return PR_FAILURE;
|
||||
}
|
||||
|
||||
int32_t DummyIOLayerMethods::Sendfile(PRFileDesc *out, PRSendFileData *in,
|
||||
PRTransmitFileFlags flags,
|
||||
PRIntervalTime to) {
|
||||
UNIMPLEMENTED();
|
||||
return -1;
|
||||
}
|
||||
|
||||
PRStatus DummyIOLayerMethods::ConnectContinue(PRFileDesc *f, int16_t flags) {
|
||||
UNIMPLEMENTED();
|
||||
return PR_FAILURE;
|
||||
}
|
||||
|
||||
int32_t DummyIOLayerMethods::Reserved(PRFileDesc *f) {
|
||||
UNIMPLEMENTED();
|
||||
return -1;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue