void SockRaii::connect(const std::string &interface)
{
TPKP_CHECK_THROW_EXCEPTION(!interface.empty(),
- TPKP_E_INTERNAL, "No valid interface address given.");
+ TPKP_E_INVALID_PARAMETER, "No valid interface address given.");
int sock = socket(AF_UNIX, SOCK_STREAM, 0);
SLOGD("make client sock: %d", sock);
TPKP_CHECK_THROW_EXCEPTION(sock >= 0,
- TPKP_E_INTERNAL, "Error to create sock");
+ TPKP_E_IO, "Error to create sock");
connectWrapper(sock, interface);
{
sockaddr_un clientaddr;
- /*
- * TODO(k.tak): add more error codes (at least internal) to represent
- * various error cases
- */
TPKP_CHECK_THROW_EXCEPTION(
interface.length() < sizeof(clientaddr.sun_path),
- TPKP_E_INTERNAL, "Error: interface name[" << interface << "] is too long");
+ TPKP_E_INVALID_PARAMETER,
+ "Error: interface name[" << interface << "] is too long");
memset(&clientaddr, 0, sizeof(clientaddr));
clientaddr.sun_family = AF_UNIX;
strcpy(clientaddr.sun_path, interface.c_str());
- int ret = TEMP_FAILURE_RETRY(::connect(sock, (struct sockaddr *)&clientaddr, SUN_LEN(&clientaddr)));
+ int ret = TEMP_FAILURE_RETRY(
+ ::connect(sock, (struct sockaddr *)&clientaddr, SUN_LEN(&clientaddr)));
const int err = errno;
if (ret == -1) {
if (err == EACCES)
- TPKP_THROW_EXCEPTION(TPKP_E_INTERNAL,
+ TPKP_THROW_EXCEPTION(TPKP_E_PERMISSION_DENIED,
"Access denied to interface: " << interface);
- TPKP_THROW_EXCEPTION(TPKP_E_INTERNAL,
+ TPKP_THROW_EXCEPTION(TPKP_E_IO,
"Error on connect socket. errno: " << err);
}
}
}
if (ret == 0)
- TPKP_THROW_EXCEPTION(TPKP_E_INTERNAL, "Poll timeout[" << timeout << "]!!");
+ TPKP_THROW_EXCEPTION(TPKP_E_TIMEOUT, "Poll timeout[" << timeout << "]!!");
else if (ret == -1)
- TPKP_THROW_EXCEPTION(TPKP_E_INTERNAL, "Error in poll! errno: " << errno);
+ TPKP_THROW_EXCEPTION(TPKP_E_IO, "Error in poll! errno: " << errno);
}
int SockRaii::get(void) const
BinaryStream ServiceConnection::receive(void)
{
TPKP_CHECK_THROW_EXCEPTION(m_socket.isConnected(),
- TPKP_E_INTERNAL, "Not connected!");
+ TPKP_E_IO, "Not connected!");
m_socket.waitForStreamIn(m_timeout);
SLOGD("allow answer");
TPKP_CHECK_THROW_EXCEPTION(data != nullptr,
- TPKP_E_INTERNAL, "data shouldn't be null on evas callbacks");
+ TPKP_E_INVALID_PARAMETER, "data shouldn't be null on evas callbacks");
TpkpPopup *pdp = static_cast<TpkpPopup *>(data);
pdp->result = Response::ALLOW;
SLOGD("deny answer");
TPKP_CHECK_THROW_EXCEPTION(data != nullptr,
- TPKP_E_INTERNAL, "data shouldn't be null on evas callbacks");
+ TPKP_E_INVALID_PARAMETER, "data shouldn't be null on evas callbacks");
TpkpPopup *pdp = static_cast<TpkpPopup *>(data);
pdp->result = Response::DENY;
Eina_Bool timeoutCb(void *data)
{
TPKP_CHECK_THROW_EXCEPTION(data != nullptr,
- TPKP_E_INTERNAL, "data shouldn't be null on timeout callback");
+ TPKP_E_INVALID_PARAMETER, "data shouldn't be null on timeout callback");
TpkpPopup *pdp = static_cast<TpkpPopup *>(data);
pdp->result = Response::DENY;
char *content = nullptr;
if (asprintf(&content, contentFormat, pdp->hostname.c_str()) == -1)
- TPKP_THROW_EXCEPTION(TPKP_E_INTERNAL, "Failed to alloc memory for popup text");
+ TPKP_THROW_EXCEPTION(TPKP_E_MEMORY,
+ "Failed to alloc memory for popup text");
return std::unique_ptr<char>(content);
}
SLOGD("Start to make popup");
TPKP_CHECK_THROW_EXCEPTION(pdp != nullptr,
- TPKP_E_INTERNAL, "pdp shouldn't be null");
+ TPKP_E_INVALID_PARAMETER, "pdp shouldn't be null");
/* create win */
Evas_Object *win = elm_win_add(nullptr, "tpkp popup", ELM_WIN_NOTIFICATION);
Evas_Object *popup = elm_popup_add(win);
evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_text_set(popup, contentString.get());
- elm_object_part_text_set(popup, "title,text", dgettext(PROJECT_NAME, "SID_TITLE_PUBLIC_KEY_MISMATCHED"));
+ elm_object_part_text_set(popup, "title,text",
+ dgettext(PROJECT_NAME, "SID_TITLE_PUBLIC_KEY_MISMATCHED"));
evas_object_show(popup);
/* create allow button */
evas_object_smart_callback_add(buttonDeny, "clicked", answerDenyCb, pdp);
evas_object_show(buttonDeny);
- if (pdp->timeout > 0) {
+ if (pdp->timeout > 0)
ecore_timer_add(pdp->timeout / 1000, timeoutCb, pdp);
- }
pdp->win = win;
return fd;
}
}
- TPKP_THROW_EXCEPTION(TPKP_E_INTERNAL, "Failed to get sock from systemd.");
+ TPKP_THROW_EXCEPTION(TPKP_E_IO, "Failed to get sock from systemd.");
}
} // namespace anonymous
while (true) {
/* non blocking poll */
int ret = poll(fds, 1, 0);
- TPKP_CHECK_THROW_EXCEPTION(ret >= 0,
- TPKP_E_INTERNAL, "poll() error. errno: " << errno);
-
- if (ret == 0) {
+ if (ret < 0) {
+ TPKP_THROW_EXCEPTION(TPKP_E_IO, "poll() error. errno: " << errno);
+ } else if (ret == 0) {
SLOGD("tpkp-popup backend service timeout. Let's be deactivated");
return 0;
}
memset(&clientaddr, 0, client_len);
int clientFd = accept(fds[0].fd, (struct sockaddr *)&clientaddr, (socklen_t *)&client_len);
- TPKP_CHECK_THROW_EXCEPTION(clientFd >= 0, TPKP_E_INTERNAL, "Error in func accept()");
+ TPKP_CHECK_THROW_EXCEPTION(clientFd >= 0, TPKP_E_IO, "Error in func accept()");
SLOGD("client accepted with fd: %d", clientFd);
SockRaii clientSock(clientFd);