aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--skype/skype.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/skype/skype.c b/skype/skype.c
index 88713e47..df8d7679 100644
--- a/skype/skype.c
+++ b/skype/skype.c
@@ -57,7 +57,18 @@ static void skype_init( account_t *acc )
int skype_write( struct im_connection *ic, char *buf, int len )
{
struct skype_data *sd = ic->proto_data;
+ struct pollfd pfd[1];
+
+ pfd[0].fd = sd->fd;
+ pfd[0].events = POLLOUT;
+ poll(pfd, 1, 1000);
+ if(pfd[0].revents & POLLHUP)
+ {
+ imcb_error( ic, "Could not connect to server" );
+ imc_logout( ic, TRUE );
+ return FALSE;
+ }
printf("write(): %s", buf);
write( sd->fd, buf, len );
@@ -184,6 +195,9 @@ gboolean skype_start_stream( struct im_connection *ic )
char *buf;
int st;
+ if(!sd)
+ return FALSE;
+
if( sd->r_inpa <= 0 )
sd->r_inpa = b_input_add( sd->fd, GAIM_INPUT_READ, skype_read_callback, ic );
@@ -200,19 +214,6 @@ gboolean skype_start_stream( struct im_connection *ic )
gboolean skype_connected( gpointer data, gint source, b_input_condition cond )
{
struct im_connection *ic = data;
- struct skype_data *sd = ic->proto_data;
- struct pollfd pfd[1];
-
- pfd[0].fd = sd->fd;
- pfd[0].events = POLLOUT;
-
- poll(pfd, 1, 1000);
- if(pfd[0].revents & POLLHUP)
- {
- imcb_error( ic, "Could not connect to server" );
- imc_logout( ic, TRUE );
- return FALSE;
- }
imcb_connected(ic);
return skype_start_stream(ic);
}