Re: TLS server-client in Pike
Henrik Grubbström <[email protected]>
| Newsgroups | gmane.comp.lang.pike.user |
|---|---|
| Organization | Roxen Internet Software AB |
| Message-ID | <[email protected]> |
On Thu, 2 Jun 2016, Siddhant Gupta wrote:
> I changed my client to set it to blocking. I have updated the code on
> github. I will post it here also for youe quick reference.
> int main()
> {
> Stdio.FILE sock = Stdio.FILE();
> if(!sock->connect("127.0.0.1", 443)){
> write(strerror(sock->errno()));
> }
> SSL.context ctx = SSL.context();
> SSL.sslfile ssl = SSL.sslfile(sock,ctx,1,1);
> ssl->set_blocking();
> // ssl->connect();
> ssl->write("GET / HTTP/1.1\r\n\r\n");
> string str = ssl->read(1024,1);
> write("Response:\n%s\n",str);
> return -1;
> }
> I am getting a response from the server but also an error message after
> that.
> Cannot use nonblocking IO with buffered files.
> /usr/local/pike/7.8.866/lib/modules/Stdio.pmod/module.pmod:1955:
> Stdio.FILE("socket", "127.0.0.1:443", 777 /* fd=10
> */)->set_nonblocking()
The problem here is that you are using a Stdio.FILE and not a Stdio.File.
Stdio.FILE does not support nonblocking I/O (which SSL.File uses
internally).
/grubba
--
Henrik Grubbström [email protected]
Roxen Internet Software AB