Skip to content
Snippets Groups Projects
Select Git revision
  • 4c658fbfae00580593b9d82a25aee182f313773a
  • master default
  • wip-slh-dsa-sha2-128s
  • master-updates
  • release-3.10-fixes
  • getopt-prototype
  • fix-bcrypt-warning
  • refactor-hmac
  • wip-use-alignas
  • trim-sha3-context
  • fix-gitlab-ci
  • check-fat-emulate
  • delete-digest_func-size
  • slh-dsa-shake-128f-nettle
  • slh-dsa-shake-128s-nettle
  • slh-dsa-shake-128s
  • delete-openpgp
  • ppc64-sha512
  • delete-md5-compat
  • cleanup-hmac-tests
  • ppc64-sha256
  • nettle_3.10.2_release_20250626
  • nettle_3.10.1_release_20241230
  • nettle_3.10_release_20240616
  • nettle_3.10rc2
  • nettle_3.10rc1
  • nettle_3.9.1_release_20230601
  • nettle_3.9_release_20230514
  • nettle_3.8.1_release_20220727
  • nettle_3.8_release_20220602
  • nettle_3.7.3_release_20210606
  • nettle_3.7.2_release_20210321
  • nettle_3.7.1_release_20210217
  • nettle_3.7_release_20210104
  • nettle_3.7rc1
  • nettle_3.6_release_20200429
  • nettle_3.6rc3
  • nettle_3.6rc2
  • nettle_3.6rc1
  • nettle_3.5.1_release_20190627
  • nettle_3.5_release_20190626
41 results

bignum-random-prime.c

Blame
  • send-async.c 8.14 KiB
    /*
     * $Id: send-async.c,v 0.3 1991/09/15 10:29:22 linus Exp $
     * Copyright (C) 1991  Lysator Academic Computer Association.
     *
     * This file is part of the LysKOM server.
     * 
     * LysKOM is free software; you can redistribute it and/or modify it
     * under the terms of the GNU General Public License as published by 
     * the Free Software Foundation; either version 1, or (at your option) 
     * any later version.
     * 
     * LysKOM is distributed in the hope that it will be useful, but WITHOUT
     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     * for more details.
     * 
     * You should have received a copy of the GNU General Public License
     * along with LysKOM; see the file COPYING.  If not, write to
     * Lysator, c/o ISY, Linkoping University, S-581 83 Linkoping, SWEDEN,
     * or the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, 
     * MA 02139, USA.
     *
     * Please mail bug reports to bug-lyskom@lysator.liu.se. 
     */
    /*
     * send-async.c -- Send messages about events to all connected clients.
     *
     * Written by Per Cederqvist 1990-07-22--23
     */
    
    static char *rcsid = "$Id: send-async.c,v 0.3 1991/09/15 10:29:22 linus Exp $";
    
    
    #include <stdio.h>
    #include "lyskomd.h"
    #include <kom-types.h>
    #include <services.h>
    #include "async.h"
    #include "manipulate.h"
    #include "com.h"
    #include "connections.h"
    #include "send-async.h"
    #include "prot-a-send-async.h"
    #include "prot-a-output.h"
    #include "log.h"
    #include "internal-connections.h"
        
    
    extern Bool		  send_async_messages;
    
    
    /*
     * Check if person is a member in any of the recipients or cc_recipients
     * of text_s
     */
    static  Bool
    is_member_in_recpt(Person    * person,
    		   Text_stat * text_s)
    {
        int i;
    
        for ( i = 0; i < text_s->no_of_misc; i++ )
        {
    	switch(text_s->misc_items[ i ].type)
    	{
    	case recpt:
    	    if ( locate_membership(text_s->misc_items[ i ].datum.recipient,
    				   person) != NULL )
    	    {
    		return TRUE;
    	    }
    	    break;
    
    	case cc_recpt:
    	    if ( locate_membership(text_s->misc_items[ i ].datum.cc_recipient,
    				   person) != NULL )
    	    {
    		return TRUE;
    	    }
    	    break;
    
    	case comm_to:
    	case comm_in:
    	case footn_to:
    	case footn_in:
    	case loc_no:
    	case rec_time:
    	case sent_by:
    	case sent_at:
    	    break;
    
    #ifndef COMPILE_CHECKS
    	default:
    	    log(__FILE__ ": is_member_in_recpt(): bad misc_item.\n");
    	    break;
    #endif
    	}
        }
    
        return FALSE;
    }
    
    void
    async_new_text(Text_no    text_no, 
    	       Text_stat *text_s)
    {
        Connection *cptr;
        Session_no i = 0;
    
        if (!send_async_messages)
    	return;
    
        while ( (i = traverse_connections(i)) != 0 )
        {
    	cptr = get_conn_by_number(i);
    	       
    	if ( cptr->person != NULL
    	    && is_member_in_recpt( cptr->person, text_s ) )
    	{
    	    switch(cptr->protocol)
    	    {
    	    case 0:
    		break;
    	    case 'A':
    		prot_a_async_new_text(cptr, text_no, text_s);
    		break;
    	    default:
    		restart_kom("async_new_text(): bad protocol.\n");
    		break;
    	    }
    	    
    	}
        }
    }
    
        
        
    	    
    void
    async_i_am_on(Who_info info)
    {
        Connection *cptr;
        Session_no i = 0;
    
        if (!send_async_messages)
    	return;
    
        while ( (i = traverse_connections(i)) != 0 )
        {
    	cptr = get_conn_by_number(i);
    
    	switch(cptr->protocol)
    	{
    	case 0:			/* Not yet logged on. */
    	    break;
    	case 'A':
    	    prot_a_async_i_am_on(cptr, info);
    	    break;
    	default:
    	    restart_kom("async_i_am_on(): bad protocol.\n");
    	    break;
    	}
        }
    }
    
    
    void
    async_i_am_off(Pers_no pers_no)
    {
        Connection *cptr;
        Session_no i = 0;
    
        if (!send_async_messages)
    	return;
    
        while ( (i = traverse_connections(i)) != 0 )
        {
    	cptr = get_conn_by_number(i);
    
    	if ( cptr == NULL )
    	{
    	    log("async_i_am_off(): cptr == NULL\n");
    	    return;
    	}
    
    	switch(cptr->protocol)
    	{
    	case 0:
    	    break;
    	case 'A':
    	    prot_a_async_i_am_off(cptr, pers_no);
    	    break;
    	default:
    	    restart_kom("async_i_am_off(): bad protocol.\n");
    	    break;
    	}
        }
    }
    
    void
    async_logout(Pers_no pers_no, 
    	     Session_no session_no)
    {
        Connection *cptr;
        Session_no i = 0;
    
        if (!send_async_messages)
    	return;
    
        while ( (i = traverse_connections(i)) != 0)
        {
    	cptr = get_conn_by_number(i);
    
    	if ( cptr == NULL )
    	{
    	    log("async_logout(): cptr == NULL\n");
    	    return;
    	}
    
    	switch(cptr->protocol)
    	{
    	case 0:
    	    break;
    	case 'A':
    	    prot_a_async_logout(cptr, pers_no, session_no);
    	    break;
    	default:
    	    restart_kom("async_logout(): bad protocol.\n");
    	    break;
    	}
        }
    }
    
    
    
    void
    async_new_name(Conf_no 	     conf_no,
    	       const String  old_name,
    	       const String  new_name)
    {
        Connection *cptr;
        Session_no i = 0;
    
        if (!send_async_messages)
    	return;
    
        while ( (i = traverse_connections(i)) != 0)
        {
    	cptr = get_conn_by_number(i);
    
    	if ( cptr == NULL )
    	{
    	    log("async_new_name(): cptr == NULL\n");
    	    return;
    	}
    
    	switch(cptr->protocol)
    	{
    	case 0:
    	    break;
    	case 'A':
    	    prot_a_async_new_name(cptr, conf_no, old_name, new_name);
    	    break;
    		
    	default:
    	    restart_kom("async_new_name(): bad protocol.\n");
    	    break;
    	}
        }
    }
    
    
    
    
    #if 0    
    conf_deleted
    conf_created
    #endif
    
    void
    async_sync_db(void)
    {
        Connection *cptr;
        Session_no i = 0;
    
        if (!send_async_messages)
    	return;
    
        while ( (i = traverse_connections(i)) != 0 )
        {
    	cptr = get_conn_by_number(i);
    
    	if ( cptr == NULL )
    	{
    	    log("async_sync_db(): cptr == NULL\n");
    	    return;
    	}
    
    	switch(cptr->protocol)
    	{
    	case 0:
    	    break;
    	case 'A':
    	    prot_a_async_sync_db(cptr);
    	    break;
    	default:
    	    restart_kom("async_sync_db(): bad protocol.\n");
    	    break;
    	}
        }
    }
    
    
    extern void
    async_forced_leave_conf (struct connection *cptr,
    			 Conf_no 	   conf_no)
    {
        if (!send_async_messages)
    	return;
    
        switch(cptr->protocol)
        {
        case 0:
    	break;
        case 'A':
    	prot_a_async_forced_leave_conf(cptr, conf_no);
    	break;
        default:
    	restart_kom("async_forced_leave_conf(): bad protocol.\n");
    	break;
        }
    }
    
    void
    async_login(Pers_no	pers_no,
    	    int		client_no)
    {
        Connection *cptr;
        Session_no i = 0;
    
        if (!send_async_messages)
    	return;
    
        while ( (i = traverse_connections(i)) != 0)
        {
    	cptr = get_conn_by_number(i);
    
    	if ( cptr == NULL )
    	{
    	    log("async_login(): cptr == NULL\n");
    	    return;
    	}
    
    	switch(cptr->protocol)
    	{
    	case 0:
    	    break;
    	case 'A':
    	    prot_a_async_login(cptr, pers_no, client_no);
    	    break;
    		
    	default:
    	    restart_kom("async_login(): bad protocol.\n");
    	    break;
    	}
        }
    }
    
    void
    async_broadcast(Pers_no	pers_no,
    		String	message)
    {
        Connection *cptr;
        Session_no i = 0;
    
        if (!send_async_messages)
    	return;
    
        while ( (i = traverse_connections(i)) != 0)
        {
    	cptr = get_conn_by_number(i);
    
    	if ( cptr == NULL )
    	{
    	    log("async_broadcast(): cptr == NULL\n");
    	    return;
    	}
    
    	switch(cptr->protocol)
    	{
    	case 0:
    	    break;
    	case 'A':
    	    prot_a_async_broadcast(cptr, pers_no, message);
    	    break;
    		
    	default:
    	    restart_kom("async_broadcast(): bad protocol.\n");
    	    break;
    	}
        }
    }
    
    
    void
    async_rejected_connection(void)
    {
        Connection *cptr;
        Session_no i = 0;
    
        if (!send_async_messages)
    	return;
    
        while ( (i = traverse_connections(i)) != 0)
        {
    	cptr = get_conn_by_number(i);
    
    	if ( cptr == NULL )
    	{
    	    log("async_rejected_connections(): cptr == NULL\n");
    	    return;
    	}
    
    	switch(cptr->protocol)
    	{
    	case 0:
    	    break;
    	case 'A':
    	    prot_a_async_rejected_connection(cptr);
    	    break;
    		
    	default:
    	    restart_kom("async_rejected_connection(): bad protocol.\n");
    	    break;
    	}
        }
    }
    
    
    /*
     * Returns failure if no message was sent.
     */
    Success
    async_send_message(Pers_no recipient,
    		   Pers_no sender,
    		   String  message)
    {
        Connection *cptr;
        Session_no i = 0;
        Success retval = FAILURE;
    
        if (!send_async_messages)
    	return FAILURE;
    
        while ( (i = traverse_connections(i)) != 0)
        {
    	cptr = get_conn_by_number(i);
    
    	if ( cptr == NULL )
    	{
    	    log("async_send_message(): cptr == NULL\n");
    	    return FAILURE;
    	}
    
    	switch(cptr->protocol)
    	{
    	case 0:
    	    break;
    	case 'A':
    	    if ( recipient == 0 ||
    		(recipient == cptr->pers_no && recipient != 0 ))
    	    {
    		prot_a_async_send_message(cptr, recipient, sender, message);
    		retval = OK;
    	    }
    	    break;
    		
    	default:
    	    restart_kom("async_send_message(): bad protocol.\n");
    	    break;
    	}
        }
        
        return retval;
    }