projects
/
paraslash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix two bugs concerning blocking fds
[paraslash.git]
/
net.c
diff --git
a/net.c
b/net.c
index c70c658cda6eb6c4aa92ffd305d99bd72f32c92c..e7c7724b4143e33ac7fbd7d79ba8ee1c5fd38bdf 100644
(file)
--- a/
net.c
+++ b/
net.c
@@
-39,11
+39,11
@@
static struct crypt_data *crypt_data_array;
* activate encryption for one file descriptor
*
* \param fd the file descriptor
* activate encryption for one file descriptor
*
* \param fd the file descriptor
- * \param recv the function used for decrypting received data
- * \param send the function used for encrypting before sending
+ * \param recv
_f
the function used for decrypting received data
+ * \param send
_f
the function used for encrypting before sending
* \param private_data user data supplied by the caller
*/
* \param private_data user data supplied by the caller
*/
-void enable_crypt(int fd, crypt_function *recv
, crypt_function *send
,
+void enable_crypt(int fd, crypt_function *recv
_f, crypt_function *send_f
,
void *private_data)
{
if (fd + 1 > cda_size) {
void *private_data)
{
if (fd + 1 > cda_size) {
@@
-53,8
+53,8
@@
void enable_crypt(int fd, crypt_function *recv, crypt_function *send,
(fd + 1 - cda_size) * sizeof(struct crypt_data));
cda_size = fd + 1;
}
(fd + 1 - cda_size) * sizeof(struct crypt_data));
cda_size = fd + 1;
}
- crypt_data_array[fd].recv = recv;
- crypt_data_array[fd].send = send;
+ crypt_data_array[fd].recv = recv
_f
;
+ crypt_data_array[fd].send = send
_f
;
crypt_data_array[fd].private_data = private_data;
PARA_INFO_LOG("rc4 encryption activated for fd %d\n", fd);
}
crypt_data_array[fd].private_data = private_data;
PARA_INFO_LOG("rc4 encryption activated for fd %d\n", fd);
}
@@
-312,9
+312,9
@@
int para_connect(int fd, struct sockaddr_in *their_addr)
/**
* paraslash's wrapper around the accept system call
*
/**
* paraslash's wrapper around the accept system call
*
- *
@
param fd the listening socket
- *
@
param addr structure which is filled in with the address of the peer socket
- *
@
param size should contain the size of the structure pointed to by \a addr
+ *
\
param fd the listening socket
+ *
\
param addr structure which is filled in with the address of the peer socket
+ *
\
param size should contain the size of the structure pointed to by \a addr
*
* \sa accept(2).
*/
*
* \sa accept(2).
*/
@@
-322,8
+322,10
@@
int para_accept(int fd, void *addr, socklen_t size)
{
int new_fd;
{
int new_fd;
- new_fd = accept(fd, (struct sockaddr *) addr, &size);
- return new_fd == -1? -E_ACCEPT : new_fd;
+ do
+ new_fd = accept(fd, (struct sockaddr *) addr, &size);
+ while (new_fd < 0 && errno == EINTR);
+ return new_fd < 0? -E_ACCEPT : new_fd;
}
static int setserversockopts(int socket_fd)
}
static int setserversockopts(int socket_fd)
@@
-389,9
+391,6
@@
int create_pf_socket(const char *name, struct sockaddr_un *unix_addr, int mode)
}
#ifndef HAVE_UCRED
}
#ifndef HAVE_UCRED
- struct ucred {
- uid_t uid, pid, gid;
-};
ssize_t send_cred_buffer(int sock, char *buf)
{
return send_buffer(sock, buf);
ssize_t send_cred_buffer(int sock, char *buf)
{
return send_buffer(sock, buf);
@@
-578,8
+577,11
@@
int recv_pattern(int fd, const char *pattern, size_t bufsize)
goto out;
ret = 1;
out:
goto out;
ret = 1;
out:
- if (ret < 0)
- PARA_NOTICE_LOG("did not receive pattern '%s'\n", pattern);
+ if (ret < 0) {
+ PARA_NOTICE_LOG("n = %d, did not receive pattern '%s'\n", n, pattern);
+ if (n > 0)
+ PARA_NOTICE_LOG("recvd: %s\n", buf);
+ }
free(buf);
return ret;
}
free(buf);
return ret;
}