Esempio n. 1
0
driver_listener_t *driver_listener_create(select_group_t *group, char *host, int port, char *name)
{
  driver_listener_t *driver = (driver_listener_t*) safe_malloc(sizeof(driver_listener_t));

  driver->group = group;
  driver->host  = host;
  driver->port  = port;

  /* Subscribe to the messages we care about. */
  message_subscribe(MESSAGE_SESSION_CLOSED,  handle_message, driver);
  message_subscribe(MESSAGE_DATA_IN,         handle_message, driver);
  message_subscribe(MESSAGE_SHUTDOWN,        handle_message, driver);

  driver->s = tcp_listen(driver->host, driver->port);
  if(!driver->s)
  {
    LOG_FATAL("Failed to listen on %s:%d", driver->host, driver->port);
    exit(1);
  }

  /* On Linux, the stdin_handle is easy. */
  select_group_add_socket(driver->group, driver->s, SOCKET_TYPE_LISTEN, driver);
  select_set_listen(driver->group, driver->s, listener_accept);
  select_set_closed(driver->group, driver->s, listener_closed);

  return driver;
}
Esempio n. 2
0
int main(int argc, char *argv[])
{
	int s = tcp_listen("0.0.0.0", 445);
	select_group_t *sg = select_group_create();

	if(s < 0)
		return 0;

	select_group_add_socket(sg, s, SOCKET_TYPE_LISTEN, NULL);
	select_set_listen(sg, s, listener);

	/* We start by receiving a header. */
	state = RECV_STATE_HEADER;

	while(1)
	{
		select_group_do_select(sg, 3, 0);
	}
#if 0
	/* Do 'session setup' */
	length = smb_get_length(smb);
	data = safe_malloc(length);
	smb_get(smb, data, length);
	tcp_send(s, data, length);


	while(1)
	{
		select_group_do_select(sg, -1, -1);
	}

	select_group_destroy(sg);
#endif
	return 0;
}