#include <algorithm>
#include "nacl_io/kernel_handle.h"
+#include "nacl_io/log.h"
#include "nacl_io/pepper_interface.h"
#include "nacl_io/socket/tcp_node.h"
#include "nacl_io/stream/stream_fs.h"
emitter_(emitter),
data_(NULL) {}
- ~TcpWork() { delete[] data_; }
+ ~TcpWork() {
+ free(data_);
+ }
TCPSocketInterface* TCPInterface() {
return filesystem()->ppapi()->GetTCPSocketInterface();
if (capped_len == 0)
return false;
- data_ = new char[capped_len];
+ data_ = (char*)malloc(capped_len);
+ assert(data_);
+ if (data_ == NULL)
+ return false;
emitter_->ReadOut_Locked(data_, capped_len);
int err = TCPInterface()->Write(node_->socket_resource(),
if (capped_len == 0)
return false;
- data_ = new char[capped_len];
+ data_ = (char*)malloc(capped_len);
+ assert(data_);
+ if (data_ == NULL)
+ return false;
int err = TCPInterface()->Read(stream->socket_resource(),
data_,
capped_len,
if (err != 0)
return err;
- if (TCPInterface() == NULL)
+ if (TCPInterface() == NULL) {
+ LOG_ERROR("Got NULL interface: TCP");
return EACCES;
+ }
if (socket_resource_ != 0) {
// TCP sockets that are contructed with an existing socket_resource_
} else {
socket_resource_ =
TCPInterface()->Create(filesystem_->ppapi()->GetInstance());
- if (0 == socket_resource_)
+ if (0 == socket_resource_) {
+ LOG_ERROR("Unable to create TCP resource.");
return EACCES;
+ }
SetStreamFlags(SSF_CAN_CONNECT);
}
return err;
}
+ // Make sure the connection succeeded.
+ if (last_errno_ != 0) {
+ ConnectFailed_Locked();
+ return last_errno_;
+ }
+
ConnectDone_Locked();
return 0;
}
AUTO_LOCK(node_lock_);
if (!IsConnected())
return ENOTCONN;
+
{
AUTO_LOCK(emitter_->GetLock());
emitter_->SetError_Locked();