[Bug 133736] [udp] ip_id not protected ...

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Fri Feb 1 15:21:47 UTC 2019


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=133736

Tom Jones <thj at FreeBSD.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |Overcome By Events
             Status|Open                        |Closed
                 CC|                            |thj at FreeBSD.org

--- Comment #3 from Tom Jones <thj at FreeBSD.org> ---
Hi,

I wrote a python test case that I think should exercise this. I didn't manage
to hit this case, if you can reproduce this on a modern FreeBSD please reopen
the bug. If you can add an exact reproduction case that would be very helpful. 


server:

#!/usr/bin/env python3                                                          

import socket                                                                   
import sys                                                                      

UDP_IP = "0.0.0.0"                                                              
UDP_PORT = 5005                                                                 

sock = socket.socket(socket.AF_INET, # Internet                                 
                     socket.SOCK_DGRAM) # UDP                                   
sock.bind((UDP_IP, UDP_PORT))                                                   

peers = {}                                                                      

while True:                                                                     
    data, addr = sock.recvfrom(2500)                                            
    #sys.stdout.write(".")                                                      
    #sys.stdout.flush()                                                         

    if addr in peers:                                                           
        if data != peers[addr]:                                                 
            print("mismatch in recv'd data")                                    
            print("peer {} \n data: \t{} recvd: {}\t".format(addr, peers[addr],
data))
            exit()                                                              
        else:                                                                   
            peers[addr] = data                                                  

client:
#!/usr/bin/env python3

import socket
from multiprocessing import Process

def sendthread(ip, port, message):
    sock = socket.socket(socket.AF_INET, # Internet
                         socket.SOCK_DGRAM) # UDP

    while True:
        try:
            sock.sendto(message, (ip, port))
        except OSError as e:
           if e.errno == 55:
                pass

if __name__ == '__main__':
    ip = "137.50.17.240"
    port = 5005

    one = Process(target=sendthread, args=(ip, port, bytes("A" * 2000,
encoding='ascii')))
    two = Process(target=sendthread, args=(ip, port, bytes("B" * 2000,
encoding='ascii')))

    one.start()
    two.start()

    one.join()
    two.join()

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list