slsReceiver bug fix affecting Jungfrau receivers as root (optlen size as int), but setting buffer size is uint32_t size. setting it to uint64_t

This commit is contained in:
2019-03-04 09:41:20 +01:00
parent 8939e23622
commit 08bd2378f4
11 changed files with 45 additions and 44 deletions

View File

@ -112,7 +112,7 @@ public:
*/
genericSocket(unsigned short int const port_number, communicationProtocol p,
int ps = DEFAULT_PACKET_SIZE, const char *eth=NULL, int hsize=0,
uint32_t buf_size=SOCKET_BUFFER_SIZE):
uint64_t buf_size=SOCKET_BUFFER_SIZE):
portno(port_number),
protocol(p),
is_a_server(1),
@ -181,10 +181,10 @@ public:
//increase socket buffer size if its udp
if (p == UDP) {
uint32_t desired_size = buf_size;
uint32_t real_size = desired_size * 2; // kernel doubles this value for bookkeeping overhead
uint32_t ret_size = -1;
socklen_t optlen = sizeof(int);
uint64_t desired_size = buf_size;
uint64_t real_size = desired_size * 2; // kernel doubles this value for bookkeeping overhead
uint64_t ret_size = -1;
socklen_t optlen = sizeof(uint64_t);
// confirm if sufficient
if (getsockopt(sockfd.fd, SOL_SOCKET, SO_RCVBUF, &ret_size, &optlen) == -1) {
@ -266,7 +266,7 @@ public:
* Halving is because of kernel book keeping
* @returns actual udp socket buffer size/2
*/
int getActualUDPSocketBufferSize(){return actual_udp_socket_buffer_size;};
uint64_t getActualUDPSocketBufferSize(){return actual_udp_socket_buffer_size;};
/**
* Get protocol TCP or UDP
@ -817,5 +817,5 @@ private:
int nsent;
int total_sent;
int header_packet_size;
int actual_udp_socket_buffer_size;
uint64_t actual_udp_socket_buffer_size;
};