diff options
| author | xengineering <me@xengineering.eu> | 2022-12-04 14:04:06 +0100 | 
|---|---|---|
| committer | xengineering <me@xengineering.eu> | 2023-01-08 18:43:01 +0100 | 
| commit | 271a8baaeb5cbd19047c50681d955c14115fc86f (patch) | |
| tree | 95ee8dbf8bf6288d1da09d15f9a4d39a129c6360 | |
| parent | 9e2a44364bfae9a226e02fe7ddad032b16a1318f (diff) | |
| download | limox-271a8baaeb5cbd19047c50681d955c14115fc86f.tar limox-271a8baaeb5cbd19047c50681d955c14115fc86f.tar.zst limox-271a8baaeb5cbd19047c50681d955c14115fc86f.zip | |
Connect on mouse click
With this commit the client starts the connection to the server as soon
as the user clicks into the application window. Disconnect or reading /
writing to the stream is not implemented.
| -rw-r--r-- | gui.c | 5 | ||||
| -rw-r--r-- | xmpp.c | 40 | ||||
| -rw-r--r-- | xmpp.h | 2 | 
3 files changed, 26 insertions, 21 deletions
| @@ -31,6 +31,7 @@ void gui_run(void) {  	SDL_Renderer* renderer;  	SDL_Texture* texture;  	uint32_t* pixels; +	int xmpp_fd = -1;  	// init SDL2 and create window  	SDL_Init(SDL_INIT_VIDEO); @@ -62,7 +63,9 @@ void gui_run(void) {  				quit = true;  				break;  			case SDL_MOUSEBUTTONDOWN: -				xmpp_connect(); +				if (xmpp_fd == -1) { +					xmpp_fd = xmpp_connect(); +				}  				break;  			}  			SDL_RenderClear(renderer); @@ -135,11 +135,11 @@ int xmpp_start_stream(int sock_fd, char *jid, char *domainpart)  }  /* - * Initialize the network connection to the XMPP server + * Initialize the network connection to the XMPP server and return socket fd   *   * TODO: Error handling is missing.   */ -void xmpp_connect(void) +int xmpp_connect(void)  {  	printf("net_init()\n"); @@ -155,36 +155,38 @@ void xmpp_connect(void)  	int sock = socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol);  	if (sock == -1) {  		printf("Failed to get socket from OS!."); -		return; +		return sock;  	} else {  		printf("Got socket number %d from OS.\n", sock);  	}  	if (connect(sock, addr->ai_addr, addr->ai_addrlen) == -1) {  		printf("Failed to connect!\n"); -		return; +		return sock;  	} else {  		printf("Successfully connected.\n");  	}  	if (xmpp_start_stream(sock, jid, domain) == -1) {  		printf("Failed to init stream!\n"); -		return; +		return sock;  	}  	printf("Stream init sent.\n"); -	printf("This is the server response:\n"); -	char buf; -	while(1) { -		int retval = recv(sock, (void *)&buf, 1, 0); -		if (retval == 0) { -			printf("Connection closed!\n"); -			break; -		} else if (retval == 1) { -			write(1, (const void *)&buf, 1); -		} else { -			printf(strerror(errno)); -			printf("Unhandled recv() return value %d!\n", retval); -		} -	} +	return sock; + +//	printf("This is the server response:\n"); +//	char buf; +//	while(1) { +//		int retval = recv(sock, (void *)&buf, 1, 0); +//		if (retval == 0) { +//			printf("Connection closed!\n"); +//			break; +//		} else if (retval == 1) { +//			write(1, (const void *)&buf, 1); +//		} else { +//			printf(strerror(errno)); +//			printf("Unhandled recv() return value %d!\n", retval); +//		} +//	}  } @@ -17,5 +17,5 @@   */ -void xmpp_connect(void); +int xmpp_connect(void);  char *get_domainpart(char *jid); | 
