代码拉取完成,页面将自动刷新
同步操作将从 冰雪不语/iceftpd 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include "privsock.h"
#include "common.h"
#include "sysutil.h"
void priv_sock_init(session_t *sess)
{
int sockfds[2];
if (socketpair(PF_UNIX, SOCK_STREAM, 0, sockfds) < 0)
ERR_EXIT("socketpair");
sess->parent_fd = sockfds[0];
sess->child_fd = sockfds[1];
}
void priv_sock_close(session_t *sess)
{
if (sess->parent_fd != -1) {
close(sess->parent_fd);
sess->parent_fd = -1;
}
if (sess->child_fd != -1) {
close(sess->child_fd);
sess->child_fd = -1;
}
}
void priv_sock_set_parent_context(session_t *sess)
{
if (sess->child_fd != -1) {
close(sess->child_fd);
sess->child_fd = -1;
}
}
void priv_sock_set_child_context(session_t *sess)
{
if (sess->parent_fd != -1) {
close(sess->parent_fd);
sess->parent_fd = -1;
}
}
void priv_sock_send_cmd(int fd, char cmd)
{
int ret;
ret = writen(fd, &cmd, sizeof(cmd));
if (ret != sizeof(cmd)) {
fprintf(stderr, "priv_sock_send_cmd error\n");
exit(EXIT_FAILURE);
}
}
char priv_sock_get_cmd(int fd)
{
char res;
int ret;
ret = readn(fd, &res, sizeof(res));
if (ret == 0) {
printf("ftp process exit\n");
exit(EXIT_SUCCESS);
}
if (ret != sizeof(res)) {
fprintf(stderr, "priv_sock_get_cmd error\n");
exit(EXIT_FAILURE);
}
return res;
}
void priv_sock_send_result(int fd, char res)
{
int ret;
ret = writen(fd, &res, sizeof(res));
if (ret != sizeof(res)) {
fprintf(stderr, "priv_sock_send_result error\n");
exit(EXIT_FAILURE);
}
}
char priv_sock_get_result(int fd)
{
char res;
int ret;
ret = readn(fd, &res, sizeof(res));
if (ret != sizeof(res)) {
fprintf(stderr, "priv_sock_get_result error\n");
exit(EXIT_FAILURE);
}
return res;
}
void priv_sock_send_int(int fd, int the_int)
{
int ret;
ret = writen(fd, &the_int, sizeof(the_int));
if (ret != sizeof(the_int)) {
fprintf(stderr, "priv_sock_send_int error\n");
exit(EXIT_FAILURE);
}
}
int priv_sock_get_int(int fd)
{
int the_int;
int ret;
ret = readn(fd, &the_int, sizeof(the_int));
if (ret != sizeof(the_int)) {
fprintf(stderr, "priv_sock_get_int error\n");
exit(EXIT_FAILURE);
}
return the_int;
}
void priv_sock_send_buf(int fd, const char *buf, unsigned int len)
{
priv_sock_send_int(fd, (int)len);
int ret = writen(fd, buf, len);
if (ret != (int)len) {
fprintf(stderr, "priv_sock_send_buf error\n");
exit(EXIT_FAILURE);
}
}
void priv_sock_recv_buf(int fd, char *buf, unsigned int len)
{
unsigned int recv_len = (unsigned int)priv_sock_get_int(fd);
if (recv_len > len) {
fprintf(stderr, "priv_sock_recv_buf error\n");
exit(EXIT_FAILURE);
}
int ret = readn(fd, buf, recv_len);
if (ret != (int)recv_len) {
fprintf(stderr, "priv_sock_recv_buf error\n");
exit(EXIT_FAILURE);
}
}
void priv_sock_send_fd(int sock_fd, int fd)
{
send_fd(sock_fd, fd);
}
int priv_sock_recv_fd(int sock_fd)
{
return recv_fd(sock_fd);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。