receiver bug fixaffecting 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 11:02:10 +01:00
parent d7ce5fedfd
commit a1a95ebb20
11 changed files with 36 additions and 33 deletions

View File

@ -20,7 +20,7 @@ const std::string Listener::TypeName = "Listener";
Listener::Listener(int ind, detectorType dtype, Fifo*& f, runStatus* s,
uint32_t* portno, char* e, uint64_t* nf, uint32_t* dr,
uint32_t* us, uint32_t* as, uint32_t* fpf,
uint64_t* us, uint64_t* as, uint32_t* fpf,
frameDiscardPolicy* fdp, bool* act, bool* depaden, bool* sm) :
ThreadObject(ind),
runningFlag(0),
@ -242,7 +242,7 @@ void Listener::ShutDownUDPSocket() {
}
int Listener::CreateDummySocketForUDPSocketBufferSize(uint32_t s) {
int Listener::CreateDummySocketForUDPSocketBufferSize(uint64_t s) {
FILE_LOG(logINFO) << "Testing UDP Socket Buffer size with test port " << *udpPortNumber;
if (!(*activated)) {
@ -250,7 +250,7 @@ int Listener::CreateDummySocketForUDPSocketBufferSize(uint32_t s) {
return OK;
}
uint32_t temp = *udpSocketBufferSize;
uint64_t temp = *udpSocketBufferSize;
*udpSocketBufferSize = s;
//if eth is mistaken with ip address

View File

@ -356,12 +356,12 @@ char *UDPBaseImplementation::getAdditionalJsonHeader() const{
return output;
}
uint32_t UDPBaseImplementation::getUDPSocketBufferSize() const {
uint64_t UDPBaseImplementation::getUDPSocketBufferSize() const {
FILE_LOG(logDEBUG) << __AT__ << " starting";
return udpSocketBufferSize;
}
uint32_t UDPBaseImplementation::getActualUDPSocketBufferSize() const {
uint64_t UDPBaseImplementation::getActualUDPSocketBufferSize() const {
FILE_LOG(logDEBUG) << __AT__ << " starting";
return actualUDPSocketBufferSize;
}
@ -786,7 +786,7 @@ void UDPBaseImplementation::setAdditionalJsonHeader(const char c[]){
FILE_LOG(logINFO) << "Additional JSON Header: " << additionalJsonHeader;
}
int UDPBaseImplementation::setUDPSocketBufferSize(const uint32_t s) {
int UDPBaseImplementation::setUDPSocketBufferSize(const uint64_t s) {
FILE_LOG(logDEBUG) << __AT__ << " starting";
udpSocketBufferSize = s;

View File

@ -654,7 +654,7 @@ void UDPStandardImplementation::closeFiles() {
dataProcessor[0]->EndofAcquisition(anycaught, maxIndexCaught);
}
int UDPStandardImplementation::setUDPSocketBufferSize(const uint32_t s) {
int UDPStandardImplementation::setUDPSocketBufferSize(const uint64_t s) {
if (listener.size())
return listener[0]->CreateDummySocketForUDPSocketBufferSize(s);
return FAIL;

View File

@ -2626,8 +2626,8 @@ int slsReceiverTCPIPInterface::set_additional_json_header() {
int slsReceiverTCPIPInterface::set_udp_socket_buffer_size() {
ret = OK;
memset(mess, 0, sizeof(mess));
int index = -1;
int retval = -1;
uint64_t index = -1;
uint64_t retval = -1;
// receive arguments
if (mySock->ReceiveDataOnly(&index,sizeof(index)) < 0 )
@ -2639,7 +2639,7 @@ int slsReceiverTCPIPInterface::set_udp_socket_buffer_size() {
invalidReceiverObject();
else {
// set
if(index >= 0) {
if((int64_t)index >= 0) {
if (mySock->differentClients && lockStatus)
receiverlocked();
else if (receiverBase->getStatus() != IDLE)
@ -2654,9 +2654,10 @@ int slsReceiverTCPIPInterface::set_udp_socket_buffer_size() {
}
//get
retval=receiverBase->getUDPSocketBufferSize();
if(index >= 0 && ((retval != index) || ((int)receiverBase->getActualUDPSocketBufferSize() != (index*2)))) {
if((int64_t)index >= 0 && ((retval != index) || (receiverBase->getActualUDPSocketBufferSize() != (index*2)))) {
ret = FAIL;
strcpy(mess, "Could not set UDP Socket buffer size (No CAP_NET_ADMIN privileges?)\n");
sprintf(mess, "Could not set UDP Socket buffer size (No CAP_NET_ADMIN privileges?). "
"set %lld, got %lld\n", (long long unsigned int)index, (long long unsigned int)retval);
FILE_LOG(logERROR) << mess;
}
}