Как правильно установить параметры сокета на std.net.curl?
Я пытаюсь реализовать onSocketOption
делегировать для объекта HTTP Curl ( http://erdani.com/d/phobos-prerelease/std_net_curl.html).
int onSocketOption(curl_socket_t socketfd,
CurlSockType type) {
import std.socket:Socket, SocketOptionLevel, SocketOption, Linger, AddressFamily;
Socket sock = new Socket(socketfd, AddressFamily.INET);
Linger lingerOpt;
lingerOpt.on = 0;
lingerOpt.time = 0;
sock.setOption(SocketOptionLevel.SOCKET,
SocketOption.LINGER,
lingerOpt);
return 0;
};
Иногда кажется, что работает, иногда я получаю std.socket.SocketOSException@/tmp/ldc.build/ldc/runtime/phobos/std/socket.d(3175): Unable to set socket option: Bad file descriptor
Есть ли другой способ использовать этот "curl_socket_t"? Это псевдоним socket_t
который в свою очередь должен быть обычным сокетом fd (работающим на linux)
Обратите внимание, что HTTP не имеет такого обратного вызова, поэтому у меня есть форк std.net.curl, который добавляет этот интерфейс к миксину "Protocol" в curl.d:
@property void onSocketOption(int delegate(curl_socket_t,
CurlSockType) callback)
{
p.curl.onSocketOption = callback;
}