Author: ArcRiley Date: 2009-01-04 02:11:17 -0500 (Sun, 04 Jan 2009) New Revision: 1421
Modified: trunk/concordance/src/Core.c Log: New connections are now resolved Modified: trunk/concordance/src/Core.c =================================================================== --- trunk/concordance/src/Core.c 2009-01-04 06:24:02 UTC (rev 1420) +++ trunk/concordance/src/Core.c 2009-01-04 07:11:17 UTC (rev 1421) @@ -250,7 +250,7 @@ default : PyErr_SetString(PyExc_AttributeError, "invalid address/hostname"); } - return 0; + return FALSE; } /* Copy port into sockaddr struct @@ -310,16 +310,16 @@ g_source_set_callback(source, (GSourceFunc)conCore_listenNew, (gpointer) self, NULL); g_source_attach(source, self->context); - ret = 1; + ret = TRUE; } else { PyErr_SetString(PyExc_OSError, "unable to bind listening socket"); - ret = 0; + ret = FALSE; } } else { PyErr_SetString(PyExc_OSError, "unable to bind listening socket"); - ret = 0; + ret = FALSE; } /* before returning, free the previously created resinfo struct @@ -337,12 +337,40 @@ conCore_listenNew(GIOChannel* source, GIOCondition condition, gpointer s) { /*\ cdef : \*/ - conCoreObject* self = (conCoreObject*) s; - if (source == self->s2s.chan) - printf("new server\n"); + conCoreObject* self = (conCoreObject*) s; + gint ret; + gint fd; + const struct sockaddr addr; + guint addrlen; + gchar host[256]; + + /* we're only interested in G_IO_IN events */ + if (condition != G_IO_IN) + return TRUE; + + /* accept new connection, return if we fail to connect + + int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); + */ + if ((fd = accept(g_io_channel_unix_get_fd(source), + &addr, &addrlen))<0) + return TRUE; + + /* lookup hostname + + int getnameinfo(const struct sockaddr *sa, socklen_t salen, + char *host, size_t hostlen, + char *serv, size_t servlen, int flags); + */ + ret = getnameinfo(&addr, addrlen, host, 255, NULL, 0, 0); + close(fd); + + if (source == self->c2s.chan) + printf("new client: %s\n", host); else - printf("new client\n"); - return 1; + printf("new server: %s\n", host); + + return TRUE; } _______________________________________________ PySoy-SVN mailing list PySoy-SVN@pysoy.org http://www.pysoy.org/mailman/listinfo/pysoy-svn