Comment 8 for bug 525050

Revision history for this message
Ugo (ugo-computer) wrote : Re: [Bug 525050] Re: tcp-connect fails under cygwin

Ciao Marco,

that prints nothing -- getaddrinfo does get called but reporting no errors.

Thanks!

Ugo

On Mon, Mar 1, 2010 at 7:54 AM, Marco Maggi <email address hidden> wrote:

> Ugo, try to change "do_connect()" in "src/ikarus-io.c" to the following
> (I only added the "fprintf()" call):
>
> static ikptr
> do_connect(ikptr host, ikptr srvc, int socket_type){
> struct addrinfo* info;
> int err = getaddrinfo((char*)(long)(host+off_bytevector_data),
> (char*)(long)(srvc+off_bytevector_data),
> 0,
> &info);
> if(err){
> fprintf(stderr, "getaddrinfo: err=%d, %s\n", err, gai_strerror(err));
> switch(err){
> case EAI_SYSTEM: return ik_errno_to_code();
> default: return false_object;
> }
> }
> ...
>
> recompile and see what it prints. It assumes that the function
> "gai_strerror()" is implemented by Cygwin; if it is not just use:
>
> fprintf(stderr, "getaddrinfo: err=%d\n", err);
>
> and try to find the preprocessor symbol associated to the reported integer
> error code; on my Linux system they are the EAI codes in "netdb.h".
> --
> Marco Maggi
>
> --
> tcp-connect fails under cygwin
> https://bugs.launchpad.net/bugs/525050
> You received this bug notification because you are a direct subscriber
> of the bug.
>
> Status in Ikarus Scheme: New
>
> Bug description:
> Hi,
>
> tcp-connect fails with the following under cygwin (XP):
>
> Unhandled exception:
> Condition components:
> 1. &assertion
> 2. &who: tcp-connect
> 3. &message: "failed to resolve host name or connect"
> 4. &irritants: ("127.0.0.1" "1000")
>
> I'm using the latest dev snapshot. I've used the 2 simple programs below
> for test. They work fine on my Linux box.
>
> Thank you.
>
> Cheers, Ugo
>
> == Client code ==
>
> #!/usr/bin/env scheme-script
> (import (rnrs)
> (rnrs base)
> (rnrs bytevectors)
> (rnrs unicode)
> (rnrs io ports)
> (ikarus ipc)
> (rnrs syntax-case))
>
> (define SERVER-HOST "127.0.0.1")
> (define SERVICE-PORT "1000")
>
>
> (define SOH-CHAR #x01)
> (define VERSION-NUMBER #b1)
>
>
> (define (client)
> (let-values ([(server->me me->server)
> (tcp-connect SERVER-HOST SERVICE-PORT)])
> (display "writing to server") (newline)
> (put-u8 me->server 1) ; 'SOH' Character
> (put-u8 me->server 1) ; Version Number
> (put-bytevector me->server #vu8(00 00))
> (put-bytevector me->server #vu8(00 05))
>
> (close-output-port me->server)
> (display "reading from server ...") (newline)
> (let ([res-header (get-bytevector-n server->me 13)])
> (close-input-port server->me))))
>
> (client)
>
> == Server code ==
>
> #!/usr/bin/env scheme-script
> (import (rnrs)
> (rnrs bytevectors)
> (rnrs io ports)
> (ikarus ipc))
>
> (define SERVICE-PORT 1000)
>
> (define (server)
> (let ([listener (tcp-server-socket SERVICE-PORT)])
> (let-values ([(client->me me->client)
> (accept-connection listener)])
> (display (get-bytevector-n client->me 4))
> (put-u8 me->client 111)
> (close-output-port me->client)
> (close-input-port client->me))))
>
> (server)
>
> To unsubscribe from this bug, go to:
> https://bugs.launchpad.net/ikarus/+bug/525050/+subscribe
>