Skip to content

Missing setsockopt() options #3773

Closed
Closed
@raptor

Description

@raptor

Hi,

My code uses two setsockopt options that do not seem to be supported with emscripten (I am unsure if they can be):

SO_RCVBUF
SO_SNDBUF

Here is a test case for both (both throw Protocol not available):

#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>
#include <string.h>
#include <stdio.h>

int main() {
   unsigned int netNum[4] = {0};
   unsigned short port = 0;
   signed int recvBufferSize = 32768;
   signed int sendBufferSize = 32768;
   signed int error = 0;

   sockaddr address;

   // UDP
   signed int sock = socket(AF_INET, SOCK_DGRAM, 0);

   // Create socket address from port and IP
   memset(&address, 0, sizeof(sockaddr_in));
   ((sockaddr_in *) &address)->sin_family = AF_INET;
   ((sockaddr_in *) &address)->sin_port = htons(port);
   ((sockaddr_in *) &address)->sin_addr.s_addr = htonl(netNum[0]);
   socklen_t addressSize = sizeof(sockaddr_in);

   error = bind(sock, &address, addressSize);
   if(error) printf("bind() errno %s\n", strerror(errno));

   error = getsockname(sock, (sockaddr*) &address, &addressSize);
   if(error) printf("getsockname() errno %s\n", strerror(errno));

   error = setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char *) &recvBufferSize, sizeof(recvBufferSize));
   if(error) printf("1 setsockopt() errno %s\n", strerror(errno));

   error = setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (char *) &sendBufferSize, sizeof(sendBufferSize));
   if(error) printf("2 setsockopt() errno %s\n", strerror(errno));

   return 0;
}

The bottom 2 printf statements trigger.

I suspect I may hit a number of similar issues as this is older network code.

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions